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 官方文档,核心基础权限通用,开发时可按模块快速查找。