2013-02-15 88 views
19

我想知道如何編輯Android操作系統源代碼來施加新的權限。例如,如果我們擁有BLUETOOTH權限,如果設備提供了一個新的傳感器,那麼在應用程序級別使用清單條目來獲取android rom中新的許可權限,可以創建適當的權限以便應用程序使用新的傳感器。Android:通過AOSP源代碼創建新的系統權限。

有誰知道在OS級別的AOSP源代碼中如何創建新的權限?

我想如果我們修改了Android源代碼以添加新的權限,我們必須編譯我們的自定義SDK以便在應用程序開發中使用權限,否則現有的SDK會給編譯時錯誤,因爲它無法識別我們的自定義權限...

任何想法,高度讚賞的想法。

回答

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> 

其他權限定義不在上述文件中,因爲實際上Android中有兩種權限,如下圖所示。只有在Linux文件中定義的權限才被定義。

像ACCESS_FINE_LOCATION,READ_CONTACTS等

Permission Enforcement in Android

其他權限是在AndroidManifest.xml在系統應用程序定義(包/.../ AndroidManifest.xml中)和框架(框架/鹼/核心/ RES/AndroidManifest .XML)。

您將您的許可和相關代碼後,根據Building Instruction

+1

+1對於IPC說明編譯並生成項目,你畫一個你自己還是你發現它的地方? – 2013-02-15 11:35:46

+3

我自己畫了。 @ BjarkeFreund-Hansen – StarPinkER 2013-02-15 11:44:07

+0

@StarPinkER你可以提供更多的信息,IPC是如何在Android應用程序中發生的。當應用程序實際詢問位置時,如果應用程序沒有拋出異常,則具有相應權限的操作系統如何驗證。 – 2013-11-03 02:46:26