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

Android 12中如何禁用targetSdkVersion 30应用的权限请求

targetSdkVersion=30的无界面Android 12应用静默权限配置方案

你的应用无交互界面、不上架Google Play,完全可以在不修改targetSdkVersion配置的前提下,禁用权限弹窗并提前授予所有所需权限,具体方案如下:

禁用系统权限弹窗的核心方法

系统运行时权限弹窗只会在应用主动调用requestPermissions()相关API时触发,不存在系统无理由自动弹出权限窗的情况:

  • 直接移除应用代码中所有主动申请运行时权限的逻辑,不要在Application、Service等组件的生命周期中调用权限申请接口,从触发根源上杜绝弹窗出现。
  • 针对targetSdkVersion=30的应用,Android 12系统不会在应用安装、首次启动阶段主动弹出权限申请窗,所有弹窗触发节点完全由应用自身逻辑控制,移除主动申请代码后不会出现任何权限相关的系统弹窗。

全量权限静默授予的可行方案

根据应用的部署场景,选择对应方案即可提前授予所有需要的相机、存储等权限,全程不需要用户交互:

方案1:系统预装场景(稳定性最高)

如果你的应用是定制ROM的内置应用,会被放到/system/priv-app/系统分区目录,只需要两步配置即可默认拿到所有权限:

  • 在AndroidManifest.xml中完整声明你需要的所有权限,示例:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 按需补充其他业务需要的权限声明 -->
  • 在ROM的权限默认授予配置文件中,将你的应用包名加入对应权限的白名单,设备首次启动时系统会自动为应用授予所有声明的权限,不需要任何交互操作。

方案2:adb/企业MDM部署场景(非预装)

如果应用是通过adb调试、企业设备管理渠道批量安装,不需要放入系统分区,可以通过以下方式授权:

  • 单设备调试时,应用安装完成后直接通过adb执行静默授权命令,示例:
# 将<你的应用包名>替换为实际的应用包名
adb shell pm grant <你的应用包名> android.permission.CAMERA
adb shell pm grant <你的应用包名> android.permission.READ_EXTERNAL_STORAGE
adb shell pm grant <你的应用包名> android.permission.WRITE_EXTERNAL_STORAGE
# 其余需要的权限按照相同格式执行grant命令即可
  • 批量企业部署时,可以先将配套的MDM应用设置为设备所有者(Device Owner),通过MDM调用系统权限管理接口,批量为你的应用静默授予所有声明的权限,全程不会弹出任何提示。

方案3:特殊权限适配场景

如果需要使用普通授权方式无法授予的系统级管控权限,可以将应用使用对应设备的系统平台签名文件重签名,在Manifest中声明对应权限后,应用安装时系统会自动授予所有匹配签名级的权限,不会触发任何弹窗。

注意:由于你的应用targetSdkVersion固定为30,不需要额外适配Android 12新增的权限分组、隐私弹窗逻辑,只要提前通过上述方式完成授权,同时移除应用内所有主动申请权限的代码,应用即可正常访问相机、存储等各类媒体资源,运行全程不会出现权限请求弹窗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:01:08