Android 全量权限的分类整理 ,我会按照Android 官方权限等级 + 实际开发使用场景 双重维度划分,覆盖所有系统原生权限 ,区分普通权限、危险权限、特殊权限、系统保护权限 四大核心等级,标注API 版本要求、是否需动态申请、核心作用、使用场景 ,同时补充高版本权限变更、权限组特性、开发避坑要点,兼顾新手入门和实际开发的实用性,所有权限均可直接在 Manifest 中声明使用。
核心前置知识(必看,避免权限混淆)
- 权限等级决定使用规则:这是 Android 权限的核心逻辑,不同等级的权限申请 / 生效方式完全不同,是开发的基础;
- 危险权限按组授权 :Android 6.0+(API23)中,同一权限组的任意一个权限被授权,整组权限都会被授予 (如申请
READ_CONTACTS,则WRITE_CONTACTS也会被授权); - 高版本权限拆分 / 废弃 :Android 10+(API29)、12+(API31)、13+(API33)对多个权限做了拆分、废弃、替代(如存储 / 蓝牙 / 定位权限),以下会重点标注;
- Manifest 声明是基础:所有权限都需先在 Manifest 中声明,再按等级做后续处理(动态申请 / 直接使用)。
一、Android 权限四大核心等级(按系统规则划分)
🔹 1. 普通权限(Normal Permissions)
- 核心规则 :仅在 Manifest 中声明即可生效,无需动态申请,系统安装时自动授予;
- 权限特点:低风险,仅涉及应用自身 / 系统基础功能,不会获取用户敏感信息;
- 开发场景:所有应用的基础权限,如网络、蓝牙基础、振动、WiFi 状态等。
🔹 2. 危险权限(Dangerous Permissions)
- 核心规则 :Manifest 声明 +Android 6.0 + 动态申请 + 用户手动授权,仅声明无效;
- 权限特点:高风险,可获取用户敏感信息(位置、联系人、存储、相机等),或执行敏感操作(拨打电话、发送短信等);
- 关键特性 :按权限组授权,同一组权限只需申请一个,整组生效;
- 开发场景:涉及用户隐私 / 设备敏感操作的所有功能。
🔹 3. 特殊权限(Special Permissions)
- 核心规则 :Manifest 声明后,无法通过常规动态申请 API 获取 ,需引导用户跳转到系统设置页手动开启;
- 权限特点:比危险权限更敏感,涉及系统核心功能(如悬浮窗、后台定位、安装应用等);
- 开发场景:应用内更新、后台持续定位、悬浮窗显示等特殊功能。
🔹 4. 系统保护权限(Protected Permissions)
- 核心规则 :普通商用应用完全无法获取,仅系统预装应用(和系统签名一致)或 ROOT 设备可通过 ADB 手动授予;
- 权限特点:系统级高风险权限,可执行底层操作(静默安装、修改系统设置、挂载文件系统等);
- 开发场景:仅系统应用(应用商店、手机管家、系统文件管理器)可用,普通应用声明无任何意义。
二、全量权限分类整理(按使用场景 + 等级划分,开发高频标⭐)
模块 1:网络 / 连接类权限(基础必配,多为普通权限)
| 权限名称 | 权限等级 | 动态申请 | API 要求 | 核心作用 | 使用场景 | 高版本变更 |
|---|---|---|---|---|---|---|
INTERNET |
普通 | ❌ | 所有 | 允许网络请求(HTTP/HTTPS/Socket) | 所有网络应用 | 无,必须显式声明 |
ACCESS_NETWORK_STATE |
普通 | ❌ | 所有 | 获取网络状态(WiFi / 移动数据 / 无网) | 网络状态判断、按需请求 | 无 |
ACCESS_WIFI_STATE |
普通 | ❌ | 所有 | 获取 WiFi 状态(是否开启、SSID、信号) | WiFi 连接判断、WiFi 信息获取 | 无 |
CHANGE_WIFI_STATE |
普通 | ❌ | 所有 | 控制 WiFi 开关、触发 WiFi 扫描 | 打开 / 关闭 WiFi、扫描周边 WiFi | Android10 + 无法直接控制 WiFi 开关 |
BLUETOOTH/BLUETOOTH_ADMIN |
普通 | ❌ | 所有 | 基础蓝牙操作(API31-) | 蓝牙扫描 / 连接(API31-) | API31 + 被拆分为细粒度蓝牙权限 |
BLUETOOTH_SCAN |
危险 | ✅ | 31+ | 蓝牙扫描(API31+) | 发现周边蓝牙设备 | API33 + 无需定位权限 |
BLUETOOTH_CONNECT |
危险 | ✅ | 31+ | 蓝牙连接(API31+) | 与蓝牙设备建立连接 / 通信 | 无 |
BLUETOOTH_ADVERTISE |
危险 | ✅ | 31+ | 蓝牙广播(API31+) | BLE 蓝牙外设广播 | 普通应用极少用 |
NEARBY_WIFI_DEVICES |
普通 | ❌ | 33+ | WiFi 扫描 / 发现 | 扫描周边 WiFi(替代定位) | 替代 API33 + 的定位权限 WiFi 扫描 |
ACCESS_CELLULAR_NETWORK_STATE |
普通 | ❌ | 28+ | 获取蜂窝网络状态 | 移动数据类型判断(4G/5G) | 无 |
模块 2:定位类权限(危险 / 特殊,高版本拆分,高频⭐)
| 权限名称 | 权限等级 | 动态申请 | API 要求 | 核心作用 | 使用场景 | 高版本变更 |
|---|---|---|---|---|---|---|
ACCESS_COARSE_LOCATION |
危险 | ✅ | 23+ | 粗略定位(1-3 公里,基站 / WiFi) | 城市级定位、区域推荐 | API33 + 替换为ACCESS_NETWORK_STATE_LOCATION |
ACCESS_FINE_LOCATION |
危险 | ✅ | 23+ | 精确定位(几米 - 几十米,GPS / 北斗) | 导航、外卖配送、周边打卡 | 名称保留,逻辑不变 |
ACCESS_BACKGROUND_LOCATION |
特殊 | ❌ | 29+ | 后台持续定位 | 打车、外卖、运动计步(后台) | 需先获取前台定位,再引导到设置开启 |
ACCESS_LOCATION_EXTRA_COMMANDS |
普通 | ❌ | 所有 | 发送定位相关指令 | 定位硬件控制(极少用) | 无 |
模块 3:存储类权限(危险,高版本大幅拆分,高频⭐)
| 权限名称 | 权限等级 | 动态申请 | API 要求 | 核心作用 | 使用场景 | 高版本变更 |
|---|---|---|---|---|---|---|
READ_EXTERNAL_STORAGE |
危险 | ✅ | 23+ | 读取外部存储所有文件 | 读取图片 / 视频 / 文档(API32-) | API33 + 被拆分为媒体细分权限 |
WRITE_EXTERNAL_STORAGE |
危险 | ✅ | 23+ | 写入外部存储所有文件 | 保存图片 / 视频 / 文档(API32-) | API33 + 废弃,改用媒体 / 文件 API |
MANAGE_EXTERNAL_STORAGE |
特殊 | ❌ | 30+ | 管理所有外部存储文件 | 文件管理器、大文件编辑 | 需引导到系统设置开启,Google Play 审核严格 |
READ_MEDIA_IMAGES |
危险 | ✅ | 33+ | 读取图片 / 照片 | 相册访问、图片选择 | 替代 API33 + 的READ_EXTERNAL_STORAGE(图片) |
READ_MEDIA_VIDEO |
危险 | ✅ | 33+ | 读取视频 | 视频选择、视频播放 | 替代 API33 + 的READ_EXTERNAL_STORAGE(视频) |
READ_MEDIA_AUDIO |
危险 | ✅ | 33+ | 读取音频 / 音乐 | 音乐播放、音频选择 | 替代 API33 + 的READ_EXTERNAL_STORAGE(音频) |
ACCESS_MEDIA_LOCATION |
危险 | ✅ | 29+ | 读取媒体文件的位置信息 | 查看照片 / 视频的拍摄地点 | 无 |
模块 4:设备 / 硬件类权限(危险 / 普通,含敏感信息获取,高频⭐)
| 权限名称 | 权限等级 | 动态申请 | API 要求 | 核心作用 | 使用场景 | 高版本变更 |
|---|---|---|---|---|---|---|
READ_PHONE_STATE |
危险 | ✅ | 23+ | 读取设备状态(IMEI / 通话状态等) | 设备标识、通话状态判断 | API33 + 彻底阉割,无法获取 IMEI |
CALL_PHONE |
危险 | ✅ | 23+ | 直接拨打电话(无需用户确认) | 一键拨号、客服电话 | 无 |
READ_CALL_LOG |
危险 | ✅ | 23+ | 读取通话记录 | 通话记录管理、通话分析 | API31 + 需单独授权,审核严格 |
WRITE_CALL_LOG |
危险 | ✅ | 23+ | 写入 / 修改通话记录 | 通话记录备份、添加 | 审核严格,普通应用极少用 |
CAMERA |
危险 | ✅ | 23+ | 使用相机硬件 | 拍照、扫码、视频拍摄 | 无,需配合相机权限申请 |
MICROPHONE(RECORD_AUDIO) |
危险 | ✅ | 23+ | 使用麦克风录音 | 语音聊天、录音、语音识别 | 无 |
VIBRATE |
普通 | ❌ | 所有 | 控制设备振动 | 消息提醒、游戏反馈、扫码提示 | 无,声明即生效 |
NFC |
普通 | ❌ | 10+ | 使用 NFC 硬件 | 公交卡、门禁卡、NFC 支付 | 无,需设备支持 NFC |
USE_BIOMETRIC |
危险 | ✅ | 28+ | 使用生物识别(指纹 / 人脸) | 指纹解锁、人脸支付 | API30 + 替换为USE_BIOMETRICS(复数) |
USE_FINGERPRINT |
危险 | ✅ | 23+ | 使用指纹识别 | 指纹解锁 | API28 + 被USE_BIOMETRIC替代 |
模块 5:通讯 / 消息类权限(危险,涉及用户隐私)
| 权限名称 | 权限等级 | 动态申请 | API 要求 | 核心作用 | 使用场景 | 高版本变更 |
|---|---|---|---|---|---|---|
READ_CONTACTS |
危险 | ✅ | 23+ | 读取手机联系人 | 联系人列表、联系人选择 | 无,审核需说明用途 |
WRITE_CONTACTS |
危险 | ✅ | 23+ | 写入 / 修改联系人 | 联系人添加、备份 | 与READ_CONTACTS同组,授权一个即全组生效 |
GET_ACCOUNTS |
危险 | ✅ | 23+ | 获取设备账户信息(Google / 手机厂商) | 账户登录、账户同步 | API26 + 需配合AUTHENTICATE_ACCOUNTS |
SEND_SMS |
危险 | ✅ | 23+ | 直接发送短信(无需用户确认) | 短信验证码、一键发短信 | 无,需说明用途 |
RECEIVE_SMS |
危险 | ✅ | 23+ | 接收短信 | 短信验证码自动填充 | 无 |
READ_SMS |
危险 | ✅ | 23+ | 读取短信内容 | 短信管理、验证码提取 | 审核严格,建议用短信回执 API 替代 |
RECEIVE_MMS |
危险 | ✅ | 23+ | 接收彩信 | 彩信查看、保存 | 普通应用极少用 |
RECEIVE_WAP_PUSH |
危险 | ✅ | 23+ | 接收 WAP 推送短信 | 运营商推送信息 | 普通应用极少用 |
模块 6:应用 / 系统操作类权限(特殊 / 系统保护,高频⭐)
| 权限名称 | 权限等级 | 动态申请 | API 要求 | 核心作用 | 使用场景 | 高版本变更 |
|---|---|---|---|---|---|---|
REQUEST_INSTALL_PACKAGES |
特殊 | ❌ | 26+ | 引导用户安装 APK | 应用内更新、手动下载 APK 安装 | 声明即生效,需跳转到系统安装界面 |
INSTALL_PACKAGES |
系统保护 | ❌ | 所有 | 静默安装 APK(无需用户确认) | 系统应用商店 | 普通应用完全无法获取 |
DELETE_PACKAGES |
系统保护 | ❌ | 所有 | 静默卸载应用 | 系统应用商店、手机管家 | 普通应用完全无法获取 |
SYSTEM_ALERT_WINDOW |
特殊 | ❌ | 23+ | 显示悬浮窗(覆盖其他应用) | 悬浮球、直播悬浮窗、桌面挂件 | 需引导到系统设置开启 |
WRITE_SETTINGS |
特殊 | ❌ | 23+ | 修改系统设置(亮度、音量、壁纸等) | 调节屏幕亮度、修改系统音量 | 需引导到系统设置开启 |
MOUNT_UNMOUNT_FILESYSTEMS |
系统保护 | ❌ | 所有 | 挂载 / 卸载文件系统 | 系统文件管理器 | Android10 + 彻底废弃 |
ACCESS_NOTIFICATION_POLICY |
特殊 | ❌ | 23+ | 修改通知策略(勿扰模式等) | 通知管理、勿扰模式控制 | 需引导到系统设置开启 |
REQUEST_DELETE_PACKAGES |
特殊 | ❌ | 26+ | 引导用户卸载应用 | 应用内卸载、批量卸载 | 需跳转到系统卸载界面 |
模块 7:后台 / 服务类权限(普通 / 特殊,控制应用后台行为)
| 权限名称 | 权限等级 | 动态申请 | API 要求 | 核心作用 | 使用场景 | 高版本变更 |
|---|---|---|---|---|---|---|
FOREGROUND_SERVICE |
普通 | ❌ | 28+ | 启动前台服务(保活) | 音乐播放、后台定位、闹钟 | API34 + 按场景拆分(FOREGROUND_SERVICE_LOCATION等) |
WAKE_LOCK |
普通 | ❌ | 所有 | 保持屏幕 / CPU 唤醒(防止休眠) | 视频播放、下载、后台任务 | 需在代码中申请 / 释放锁 |
RECEIVE_BOOT_COMPLETED |
普通 | ❌ | 所有 | 设备开机后启动应用 / 服务 | 开机自启、后台保活 | 高版本系统限制严格,需用户手动授权 |
ACCESS_NOTIFICATIONS |
危险 | ✅ | 26+ | 读取设备通知 | 通知管理、消息聚合 | 审核严格,普通应用极少用 |
POST_NOTIFICATIONS |
危险 | ✅ | 33+ | 发送应用通知 | 所有应用通知(如消息、提醒) | API33 + 新增,必须动态申请,否则无法发通知 |
模块 8:小众 / 系统类权限(普通 / 危险,特定场景使用)
| 权限名称 | 权限等级 | 动态申请 | API 要求 | 核心作用 | 使用场景 |
|---|---|---|---|---|---|
READ_CALENDAR/WRITE_CALENDAR |
危险 | ✅ | 23+ | 读取 / 写入日历 | 日历同步、日程管理 |
READ_SENSOR |
危险 | ✅ | 23+ | 读取设备传感器(加速度、陀螺仪等) | 运动计步、体感游戏 |
BODY_SENSORS |
危险 | ✅ | 23+ | 读取身体传感器(心率、血氧等) | 智能手环、健康监测应用 |
ADD_VOICEMAIL |
危险 | ✅ | 23+ | 添加语音邮件 | 运营商语音邮件功能 |
USE_SIP |
危险 | ✅ | 23+ | 使用 SIP 协议进行语音 / 视频通话 | SIP 网络电话 |
PROCESS_OUTGOING_CALLS |
危险 | ✅ | 23+ | 监听 / 处理呼出电话 | 来电显示、通话拦截 |
三、Android 高版本权限核心变更(API29/31/33,开发必适配)
1. Android 10(API29)核心变更
- 存储:开启强制限定存储(Scoped Storage) ,新增
MANAGE_EXTERNAL_STORAGE特殊权限; - 定位:新增
ACCESS_BACKGROUND_LOCATION后台定位特殊权限,前台定位和后台定位分离; - WiFi / 蓝牙:扫描 WiFi / 蓝牙需配合
ACCESS_FINE_LOCATION精确定位权限; - 设备标识:限制
READ_PHONE_STATE获取 IMEI,推荐用Android ID替代。
2. Android 12(API31)核心变更
- 蓝牙:拆分旧版
BLUETOOTH/BLUETOOTH_ADMIN为BLUETOOTH_SCAN/CONNECT/ADVERTISE细粒度危险权限; - 组件:强制要求四大组件显式设置
android:exported,否则应用崩溃; - 通话 / 短信:
READ_CALL_LOG/WRITE_CALL_LOG需单独授权,审核更严格。
3. Android 13(API33)核心变更
- 存储:彻底废弃
READ/WRITE_EXTERNAL_STORAGE,拆分为READ_MEDIA_IMAGES/VIDEO/AUDIO媒体危险权限; - 蓝牙 / 定位:蓝牙扫描彻底移除定位权限限制 ,无需
ACCESS_FINE_LOCATION; - 通知:新增
POST_NOTIFICATIONS危险权限,必须动态申请否则无法发送通知; - 设备状态:彻底阉割
READ_PHONE_STATE,无法获取 IMEI / 手机号等敏感信息; - 定位:
ACCESS_COARSE_LOCATION替换为ACCESS_NETWORK_STATE_LOCATION,逻辑不变。
4. Android 14(API34)核心变更
- 前台服务:按场景拆分
FOREGROUND_SERVICE为FOREGROUND_SERVICE_LOCATION/BLUETOOTH/USB等细分权限; - 存储:强化限定存储,禁止应用访问其他应用的私有目录;
- 权限:新增
READ_MEDIA_VISUAL_USER_SELECTED,仅允许读取用户手动选择的媒体文件。
四、开发必知的权限使用核心规则(避坑关键)
1. 权限申请核心原则
- 最小权限原则:仅声明 / 申请功能所需的权限,避免无用权限(如仅连蓝牙无需申请定位);
- 按需申请原则 :在首次使用功能时申请权限(如点击 "扫码" 再申请相机权限),而非应用启动时,提升用户授权意愿;
- 明确说明原则 :申请权限前,向用户清晰说明权限使用目的(如 "需要相机权限用于扫码登录"),避免用户拒绝。
2. 动态申请核心步骤(危险权限)
- 在 Manifest 中声明权限;
- 代码中判断权限是否已授权 (
ContextCompat.checkSelfPermission); - 未授权则动态申请 (
ActivityCompat.requestPermissions); - 在
onRequestPermissionsResult中处理授权结果(成功则执行功能,失败则提示用户); - 若用户拒绝并勾选 "不再询问" ,引导用户跳转到应用设置页手动开启权限。
3. 特殊权限申请核心步骤
- 在 Manifest 中声明权限;
- 代码中判断权限是否已开启 (如
Settings.canDrawOverlays判断悬浮窗); - 未开启则构建系统设置页 Intent,引导用户手动开启;
- 用户开启后,通过
onActivityResult判断返回结果,执行功能。
4. 权限兼容核心建议
- targetSdkVersion:尽量升级到最新 API(如 34),适配系统新特性,减少兼容问题;
- 版本判断 :对高版本新增 / 变更的权限,通过
Build.VERSION.SDK_INT做版本判断,按需申请; - 替代方案:对审核严格 / 高版本受限的权限,使用替代方案(如 IP 定位替代定位权限、短信回执 API 替代读取短信权限)。
五、Google Play 上架权限审核核心要求
- 权限必要性 :所有声明的权限必须有明确的业务用途,无意义的权限会被判定为 "权限滥用",拒绝上架;
- 隐私政策 :涉及用户隐私的权限(定位、相机、联系人、存储等),必须在隐私政策中明确说明:信息收集目的、使用方式、存储周期;
- 后台权限 :申请
ACCESS_BACKGROUND_LOCATION/MANAGE_EXTERNAL_STORAGE等特殊权限,必须在上架资料中详细说明后台使用的必要性,无合理理由会被拒绝; - 权限说明 :在应用内添加权限说明页,向用户清晰说明每个权限的使用场景,提升用户信任。
总结
- Android 权限按系统规则 分为普通、危险、特殊、系统保护 四大等级,等级决定使用规则(是否需动态申请 / 引导设置);
- 按使用场景 可分为 8 大模块,开发中重点掌握网络、定位、存储、设备、应用操作5 大核心模块的高频权限;
- 危险权限按组授权 ,特殊权限需引导到系统设置页开启 ,系统保护权限普通应用完全无法获取;
- 高版本 Android(API29/31/33)对存储、蓝牙、定位、通知 权限做了大幅拆分 / 废弃 / 替代,是适配的核心;
- 开发遵循最小权限、按需申请、明确说明 原则,Google Play 上架需保证权限必要性 并完善隐私政策。
这份权限大全覆盖手机应用开发的所有场景,车载 / 电视 / 穿戴等特殊设备的扩展权限可参考 Android 官方文档,核心基础权限通用,开发时可按模块快速查找。