You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AOSP项目中如何为内置系统应用默认授予所需权限

AOSP预置系统应用默认授权解决方案

方案1:修改系统默认权限白名单(全Android版本适配,推荐)

该方案通过修改框架层默认权限逻辑实现,无需依赖应用特权等级:

  • 找到AOSP源码路径下的frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java文件
  • 在grantDefaultPermissions方法中添加自研应用的权限授予逻辑,示例代码如下:
// 替换为自研应用的实际包名
String CUSTOM_APP_PKG = "com.your.company.appid";
PackageInfo pkgInfo = getPackageInfo(CUSTOM_APP_PKG);
if (pkgInfo != null) {
    // 按需添加需要默认授予的运行时权限
    grantRuntimePermissions(pkgInfo,
        new String[]{
            Manifest.permission.CAMERA,
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.ACCESS_FINE_LOCATION
        },
        true, // 对所有用户生效
        UserHandle.USER_ALL
    );
}
  • Android 11及以上版本若需授予所有文件访问权限,需额外添加Manifest.permission.MANAGE_EXTERNAL_STORAGE到权限列表
  • 修改完成后重新编译framework模块,刷入设备即可生效

方案2:特权应用权限配置(仅Android 8.0及以上适用)

若自研应用预置在/system/priv-app目录下,可通过xml配置直接授予权限,无需修改framework源码:

  • 在应用预置目录下新建etc/permissions子目录,添加和应用包名同名的xml配置文件,示例内容:
<?xml version="1.0" encoding="utf-8"?>
<permissions>
    <privapp-permissions package="com.your.company.appid">
        <permission name="android.permission.CAMERA"/>
        <permission name="android.permission.READ_EXTERNAL_STORAGE"/>
        <permission name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    </privapp-permissions>
    <!-- 配置默认授予权限,无需用户确认 -->
    <grant-permission name="android.permission.CAMERA" package="com.your.company.appid" />
    <grant-permission name="android.permission.READ_EXTERNAL_STORAGE" package="com.your.company.appid" />
    <grant-permission name="android.permission.WRITE_EXTERNAL_STORAGE" package="com.your.company.appid" />
</permissions>
  • 在应用的Android.bp或Android.mk中添加编译规则,将上述xml文件打包到系统/system/etc/permissions目录,Android.bp示例:
prebuilt_etc {
    name: "com.your.company.appid.xml",
    src: "com.your.company.appid.xml",
    sub_dir: "permissions",
    required: ["com.your.company.appid"],
}
  • 重新编译系统镜像即可生效

注意事项

  • 所有需默认授予的权限必须提前在应用的AndroidManifest.xml中声明,否则授予逻辑会失效
  • Android 13及以上版本的细分权限(如照片访问权限、视频访问权限、通知权限)如果需要,也要对应添加到授予列表中
  • 若应用预置在/system/app而非priv-app目录,仅可使用方案1实现默认授权

内容的提问来源于stack exchange,提问作者Jerin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 20:36:03