在 Android 系统中,权限机制是应用安全体系的核心。它的设计目标是:
- 限制应用对系统和其他应用的越界访问;
- 让用户明确地知晓并控制应用行为。
从 Android 6.0(API 23)开始,Google 引入了动态权限模型,并在后续版本中不断强化权限粒度,尤其是在隐私和后台行为限制方面。本文将从权限划分原则、核心权限类型差异、设备管理模式(DeviceAdmin/DeviceOwner),到国内设备适配,全面拆解 Android 权限体系。
一、Android 权限划分原则
Android 权限并非随机分配,而是基于两大核心维度划分,确保"安全"与"灵活"的平衡:
1. 按权限应用场景划分
根据权限的使用时机和范围,聚焦"用户是否感知",典型场景包括:
- 使用时场景:应用前台运行(界面可见/前台服务活跃)时使用,如拍照、实时导航;
- 后台场景:应用退至后台(界面不可见)时仍需使用,如后台定位记录运动轨迹;
- 系统级场景:涉及系统核心功能修改,如悬浮窗显示、系统设置调整。
2. 按权限风险等级划分
根据权限对用户隐私和系统安全的影响程度,分为四类:
- 普通权限(Normal) :无隐私风险,安装时自动授予,无需用户交互。例如
INTERNET
(网络访问)、ACCESS_WIFI_STATE
(WiFi 状态获取); - 危险权限(Dangerous) :涉及用户敏感数据或设备功能,需运行时动态申请。例如
CAMERA
(相机)、ACCESS_FINE_LOCATION
(精确定位); - 签名权限(Signature):仅限与系统/授权应用同签名的应用使用,普通第三方应用无法获取。例如部分系统服务调用权限;
- 特殊权限(Special):涉及系统级操作,需用户手动在系统设置页面开启,不走常规申请流程。例如悬浮窗、修改系统设置。
二、前台权限:用户感知场景下的权限
1. 定义与核心特征
前台权限是指应用在"用户可直接感知的场景"中使用的权限,满足以下任一条件即可触发:
- 应用 Activity 处于可见状态(用户正在操作界面);
- 应用运行前台服务(需通过
startForeground()
显示通知,如音乐播放、导航); - 应用执行短时间前台任务(如后台服务临时启动前台界面过渡)。
核心特征:
- 是危险权限的"默认授权范围":用户授予危险权限后,默认仅允许前台使用;
- 无需额外申请:通过动态权限弹窗获取授权后,前台场景可直接使用。
2. 典型前台权限与场景
权限名称 | 说明 | 典型使用场景 |
---|---|---|
ACCESS_FINE_LOCATION |
前台精确定位 | 地图导航、打车软件定位乘客 |
BLUETOOTH_SCAN |
蓝牙设备扫描 | 蓝牙耳机配对、IoT 设备配网 |
BLUETOOTH_CONNECT |
蓝牙设备连接 | 连接智能手环同步数据 |
CAMERA |
相机访问 | 拍照、扫码登录 |
RECORD_AUDIO |
麦克风访问 | 视频通话、语音输入 |
三、后台权限:用户不可见场景下的权限
1. 定义与核心特征
后台权限是指应用在"用户无感知场景"(后台状态)下使用的权限,后台状态包括:
- 应用 Activity 完全不可见(用户切至其他应用、按 Home 键退至桌面);
- 应用仅运行后台服务(未启动前台服务,无通知提示);
- 应用处于后台同步/下载等非交互状态。
核心特征:
- 是危险权限的"扩展授权":需先获取该权限的前台授权,才能申请后台权限;
- 授权门槛更高:系统会明确提示用户"允许应用在后台使用该权限吗",避免隐式滥用;
- 仅部分危险权限支持后台:集中在高隐私敏感权限,非所有危险权限都有后台场景。
2. 典型后台权限与场景
权限名称 | 说明 | 典型使用场景 | 授权方式 |
---|---|---|---|
ACCESS_BACKGROUND_LOCATION |
后台持续定位 | 运动 App 记录跑步轨迹 | 先获取前台定位,再单独申请 |
ACTIVITY_RECOGNITION |
后台活动识别 | 健康 App 统计步数、睡眠状态 | 动态申请后支持后台使用 |
POST_NOTIFICATIONS |
后台发送通知 | 社交 App 后台推送消息 | Android 13+ 需动态申请 |
READ_MEDIA_IMAGES |
后台读取图片 | 相册 App 后台同步云端 | Android 13+ 需额外授权 |
四、特殊权限:系统级操作的权限
1. 定义与核心特征
特殊权限是 Android 中管控最严格的权限类型,涉及系统核心功能修改或极高隐私风险,不支持通过 requestPermissions()
常规接口申请,必须由用户手动在系统设置页面开启。
核心特征:
- 授权路径独立:需通过特定
Intent
跳转至系统专属设置页面(如悬浮窗设置、无障碍设置); - 无"自动授权"可能:即使是系统应用,多数特殊权限也需用户手动确认;
- 权限不可撤销后弹窗:用户拒绝后,应用无法通过代码再次触发授权弹窗,只能引导重新跳转设置。
2. 常见特殊权限与授权方式
权限功能 | 权限名称 | 授权方式(跳转系统页面) | 典型使用场景 |
---|---|---|---|
悬浮窗显示 | SYSTEM_ALERT_WINDOW |
Settings.ACTION_MANAGE_OVERLAY_PERMISSION |
桌面歌词、悬浮球、录屏工具 |
修改系统设置 | WRITE_SETTINGS |
Settings.ACTION_MANAGE_WRITE_SETTINGS |
系统优化 App 调节亮度/音量 |
无障碍服务 | BIND_ACCESSIBILITY_SERVICE |
系统"辅助功能"界面手动开启 | 读屏软件、自动点击工具 |
安装未知来源应用 | REQUEST_INSTALL_PACKAGES |
系统"应用安装设置"界面开启 | 应用内更新、第三方应用商店 |
电池优化例外 | REQUEST_IGNORE_BATTERY_OPTIMIZATIONS |
调用 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS |
后台下载、实时定位避免被杀死 |
五、DeviceAdmin 与 DeviceOwner:设备管理模式的权限差异
Android 提供两种企业级设备管理模式,用于实现设备安全管控,两者权限能力差异显著:
管理模式 | 权限级别 | 核心能力定位 | 适用场景 |
---|---|---|---|
DeviceAdmin | 中等 | 基础设备安全策略管控 | 企业员工设备密码/锁屏管理 |
DeviceOwner | 最高 | 全设备系统级管控 | 定制终端、Kiosk 模式(信息亭)、企业 MDM |
1. DeviceAdmin 可获取的权限能力
DeviceAdmin(设备管理员)通过 DevicePolicyManager
接口实现管控,核心能力集中在"安全策略",不涉及系统全局控制:
- 设置密码规则:如密码长度、复杂度(
setPasswordQuality
); - 锁屏与数据擦除:远程锁定屏幕(
lockNow
)、擦除设备数据(wipeData
); - 基础硬件控制:禁止相机使用(
setCameraDisabled
)、限制 USB 调试; - 安全监控:监控密码输入错误次数,达到阈值擦除数据(
setMaximumFailedPasswordsForWipe
)。
限制:
- 无法管理系统网络(如 Wi-Fi/VPN 配置)、应用安装卸载;
- 无法静默授权危险权限;
- Android 10 后逐步被 DeviceOwner 取代,部分能力被削弱。
2. DeviceOwner 可获取的权限能力
DeviceOwner(设备拥有者)是 Android 最高级别的设备管理模式,需通过系统预装或 ADB 命令激活(如 adb shell dpm set-device-owner com.xxx/.DeviceAdminReceiver
),具备"系统级管控能力":
- 权限管控:静默授予危险/后台权限,无需用户交互;
- 应用管理:安装/卸载/隐藏应用(包括系统应用)、禁止应用启动;
- 系统配置:配置 Wi-Fi/VPN/热点、锁定输入法、控制通知显示;
- 硬件与行为控制:禁止蓝牙/USB 使用、限制摄像头/麦克风、后台定位无限制;
- 策略固化:设置 Kiosk 模式(仅允许指定应用运行)、禁止恢复出厂设置。
核心优势:DeviceAdmin 管"安全",DeviceOwner 管"全局",是企业级设备管控的核心方案。
六、国内设备权限管理机制适配
国内主流厂商(华为、OPPO、小米、vivo 等)在 Android 原生权限模型基础上,针对企业级场景做了深度定制,核心差异集中在 DeviceAdmin/DeviceOwner 激活流程 和 权限授予机制,需重点关注:
1. DeviceAdmin 激活的两种方式
国内厂商提供"用户手动激活"和"厂商接口强制激活"两种路径,适配时需根据场景选择:
激活方式 | 实现逻辑 | 可关闭性 | 适用场景 |
---|---|---|---|
用户手动激活 | 通过 DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN 启动系统授权界面,用户点击"激活" |
用户可在设置中手动关闭 | 普通企业应用,无厂商特殊授权 |
厂商 MDM 接口强制激活 | 集成厂商专属 SDK(如华为 MDM SDK、vivo 企业接口),通过厂商后台接口直接注册激活 | 激活后用户无法手动关闭 | 政企定制设备、批量管理终端 |
关键差异:强制激活模式下,系统会将 DeviceAdmin 状态设为"灰置不可撤销",避免用户误操作关闭管控。
2. DeviceOwner 激活的前置条件
原生 Android 中,DeviceOwner 可直接通过 ADB 或系统预装激活,但国内厂商普遍增加了"前置校验":
- 必须先激活 DeviceAdmin:多数厂商要求,只有先通过厂商接口激活 DeviceAdmin,才能进一步激活 DeviceOwner;
- 设备身份绑定:需通过厂商平台(如华为 HEM、小米企业平台)绑定设备 SN/IMEI,验证设备合法性;
- 系统版本限制:部分厂商仅在"企业定制版 ROM"中开放 DeviceOwner 激活权限,普通消费者版本不支持。
3. 国内设备权限赋予的特殊机制
针对企业/政企场景,国内厂商提供超出原生 Android 的权限赋予方式,确保管控合规:
权限赋予方式 | 实现逻辑 | 优势 | 适用场景 |
---|---|---|---|
证书认证授权 | MDM 服务器下发授权证书,应用通过证书校验获取权限 | 安全性高,支持远程管控 | 政企批量设备权限管理 |
厂商 HEM 平台下发 | 通过华为 HEM、OPPO 企业管理平台推送权限配置 | 无需集成多厂商 SDK,统一管控 | 跨厂商批量设备部署 |
ROM 定制绑定 | 在出厂固件中预置应用与权限策略,写入系统分区 | 权限永久生效,无被篡改风险 | 行业专用终端(如POS机、自助终端) |
核心特点:所有机制均会绑定设备硬件信息(SN/IMEI/MAC),避免权限跨设备滥用。
延伸阅读
- Android 官方权限文档
- Device Administration API 官方指南
- Device Owner 官方文档
- 华为终端企业管理平台(HEM):华为开发者官网
- OPPO 企业设备开放平台:OPPO 开放平台
- vivo 企业开发者平台:vivo 开放平台