在 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 中的权限执行](https://i.stack.imgur.com/DZcAI.png)
ACCESS_FINE_LOCATION、READ_CONTACTS 等其他权限在系统应用程序(packages/.../AndroidManifest.xml)和框架(frameworks/base/core/res/AndroidManifest.xml)的 AndroidManifest.xml 中定义。
添加您的权限和相关代码后,根据构建说明编译和构建项目