21

我想知道如何编辑 Android OS 源代码以施加新的权限。例如我们有蓝牙权限,如果设备提供了一个新的传感器,那么如何创建适当的权限以便应用程序使用新的传感器,在应用程序级别使用 android rom 中可用的新权限的清单条目。

有人知道如何在 AOSP 源代码的操作系统级别上创建新权限吗?

而且我认为如果我们修改了android源以添加新的权限,我们必须编译我们的自定义SDK以便在应用程序开发中使用权限,否则现有的SDK会给出编译时错误,因为它不会识别我们的自定义权限......

任何想法,想法高度赞赏。

4

1 回答 1

25

在 framework/base/data/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 内核强制执行的权限。

Android 中的权限执行

ACCESS_FINE_LOCATION、READ_CONTACTS 等其他权限在系统应用程序(packages/.../AndroidManifest.xml)和框架(frameworks/base/core/res/AndroidManifest.xml)的 AndroidManifest.xml 中定义。

添加您的权限和相关代码后,根据构建说明编译和构建项目

于 2013-02-15T03:49:22.043 回答