2013-02-15 10 views
19

मैं सोच रहा था कि कोई नई अनुमति लगाने के लिए एंड्रॉइड ओएस स्रोत कोड कैसे संपादित कर सकता है। उदाहरण के लिए जैसे कि हमारे पास ब्लूथूथ अनुमति है, यदि डिवाइस एक नया सेंसर प्रदान करता है, तो एप्लिकेशन को एंड्रॉइड रोम में उपलब्ध नई अनुमति के लिए मैनिफेस्ट एंट्री का उपयोग करके एप्लिकेशन सेंसर पर नए सेंसर का उपयोग करने के लिए उचित अनुमति कैसे बनाई जा सकती है।एंड्रॉइड: एओएसपी स्रोत कोड के माध्यम से नई सिस्टम अनुमतियां बनाएं।

क्या कोई जानता है कि ओओएस स्रोत कोड में ओएस स्तर पर नई अनुमतियां कैसे बनाई जाती हैं ??

और मुझे लगता है कि अगर हमने नई अनुमति जोड़ने के लिए एंड्रॉइड स्रोत को संशोधित किया है तो हमें आवेदन विकास में अनुमति का उपयोग करने के लिए हमारे कस्टम एसडीके को संकलित करना होगा, अन्यथा मौजूदा एसडीके संकलन समय त्रुटि देगा, क्योंकि यह हमारी कस्टम अनुमति को पहचान नहीं पाएगा ...

किसी भी विचार, विचारों की अत्यधिक सराहना की।

उत्तर

22

ढांचे/आधार/डेटा में/etc/platform.xml

आपको एक प्रासंगिक gid साथ अपनी नई बनी अनुमति परिभाषित कर सकते हैं।

<permissions> 

    <!-- ================================================================== --> 
    <!-- ================================================================== --> 
    <!-- ================================================================== --> 

    <!-- The following tags are associating low-level group IDs with 
     permission names. By specifying such a mapping, you are saying 
     that any application process granted the given permission will 
     also be running with the given group ID attached to its process, 
     so it can perform any filesystem (read, write, execute) operations 
     allowed for that group. --> 

    <permission name="android.permission.BLUETOOTH_ADMIN" > 
     <group gid="net_bt_admin" /> 
    </permission> 

    <permission name="android.permission.BLUETOOTH" > 
     <group gid="net_bt" /> 
    </permission> 

    <permission name="android.permission.BLUETOOTH_STACK" > 
     <group gid="net_bt_stack" /> 
    </permission> 

    <permission name="android.permission.NET_TUNNELING" > 
     <group gid="vpn" /> 
    </permission> 

    <permission name="android.permission.INTERNET" > 
     <group gid="inet" /> 
    </permission> 

    <permission name="android.permission.CAMERA" > 
     <group gid="camera" /> 
    </permission> 

    <permission name="android.permission.READ_LOGS" > 
     <group gid="log" /> 
    </permission> 

    ... 
</permission> 

अन्य अनुमति परिभाषा उपरोक्त फ़ाइल में नहीं है, क्योंकि वास्तव में एंड्रॉइड में दो प्रकार की अनुमति है जैसा कि निम्न चित्र में दिखाया गया है। लिनक्स कर्नेल द्वारा लागू की गई अनुमति केवल उस फ़ाइल में परिभाषित की गई हैं।

ACCESS_FINE_LOCATION, READ_CONTACTS, आदि जैसे

Permission Enforcement in Android

अन्य अनुमतियां प्रणाली अनुप्रयोगों में AndroidManifest.xml में परिभाषित करता है (संकुल /.../ AndroidManifest.xml) और फ्रेमवर्क (हैं चौखटे/आधार/कोर/res/AndroidManifest .xml)।

के बाद आप आपकी अनुमति और संबंधित कोड जोड़ने, संकलन और परियोजना का निर्माण Building Instruction

+1

+1 आईपीसी उदाहरण के लिए के अनुसार, आप आकर्षित किया है कि एक अपने आप को या आप इसे कहीं पता चला? –

+3

मैंने इसे स्वयं खींचा। @ BjarkeFreund-Hansen – StarPinkER

+0

@StarPinkER क्या आप एंड्रॉइड ऐप्स में आईपीसी कैसे करते हैं, इस बारे में अधिक जानकारी दे सकते हैं। जब कोई ऐप वास्तव में स्थान मांगता है, तो ओएस मान्य करता है अगर अपवाद को फेंकने पर ऐप की अनुमति नहीं है। –

संबंधित मुद्दे