2013-02-15 63 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