Android 权限分类说明

Android 全量权限的分类整理 ,我会按照Android 官方权限等级 + 实际开发使用场景 双重维度划分,覆盖所有系统原生权限 ,区分普通权限、危险权限、特殊权限、系统保护权限 四大核心等级,标注API 版本要求、是否需动态申请、核心作用、使用场景 ,同时补充高版本权限变更、权限组特性、开发避坑要点,兼顾新手入门和实际开发的实用性,所有权限均可直接在 Manifest 中声明使用。

核心前置知识(必看,避免权限混淆)

  1. 权限等级决定使用规则:这是 Android 权限的核心逻辑,不同等级的权限申请 / 生效方式完全不同,是开发的基础;
  2. 危险权限按组授权 :Android 6.0+(API23)中,同一权限组的任意一个权限被授权,整组权限都会被授予 (如申请READ_CONTACTS,则WRITE_CONTACTS也会被授权);
  3. 高版本权限拆分 / 废弃 :Android 10+(API29)、12+(API31)、13+(API33)对多个权限做了拆分、废弃、替代(如存储 / 蓝牙 / 定位权限),以下会重点标注;
  4. 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+ 使用相机硬件 拍照、扫码、视频拍摄 无,需配合相机权限申请
MICROPHONERECORD_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_ADMINBLUETOOTH_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_SERVICEFOREGROUND_SERVICE_LOCATION/BLUETOOTH/USB等细分权限;
  • 存储:强化限定存储,禁止应用访问其他应用的私有目录;
  • 权限:新增READ_MEDIA_VISUAL_USER_SELECTED,仅允许读取用户手动选择的媒体文件。

四、开发必知的权限使用核心规则(避坑关键)

1. 权限申请核心原则

  • 最小权限原则:仅声明 / 申请功能所需的权限,避免无用权限(如仅连蓝牙无需申请定位);
  • 按需申请原则 :在首次使用功能时申请权限(如点击 "扫码" 再申请相机权限),而非应用启动时,提升用户授权意愿;
  • 明确说明原则 :申请权限前,向用户清晰说明权限使用目的(如 "需要相机权限用于扫码登录"),避免用户拒绝。

2. 动态申请核心步骤(危险权限)

  1. 在 Manifest 中声明权限;
  2. 代码中判断权限是否已授权ContextCompat.checkSelfPermission);
  3. 未授权则动态申请ActivityCompat.requestPermissions);
  4. onRequestPermissionsResult处理授权结果(成功则执行功能,失败则提示用户);
  5. 若用户拒绝并勾选 "不再询问" ,引导用户跳转到应用设置页手动开启权限

3. 特殊权限申请核心步骤

  1. 在 Manifest 中声明权限;
  2. 代码中判断权限是否已开启 (如Settings.canDrawOverlays判断悬浮窗);
  3. 未开启则构建系统设置页 Intent,引导用户手动开启;
  4. 用户开启后,通过onActivityResult判断返回结果,执行功能。

4. 权限兼容核心建议

  • targetSdkVersion:尽量升级到最新 API(如 34),适配系统新特性,减少兼容问题;
  • 版本判断 :对高版本新增 / 变更的权限,通过Build.VERSION.SDK_INT做版本判断,按需申请;
  • 替代方案:对审核严格 / 高版本受限的权限,使用替代方案(如 IP 定位替代定位权限、短信回执 API 替代读取短信权限)。

五、Google Play 上架权限审核核心要求

  1. 权限必要性 :所有声明的权限必须有明确的业务用途,无意义的权限会被判定为 "权限滥用",拒绝上架;
  2. 隐私政策 :涉及用户隐私的权限(定位、相机、联系人、存储等),必须在隐私政策中明确说明:信息收集目的、使用方式、存储周期;
  3. 后台权限 :申请ACCESS_BACKGROUND_LOCATION/MANAGE_EXTERNAL_STORAGE等特殊权限,必须在上架资料中详细说明后台使用的必要性,无合理理由会被拒绝;
  4. 权限说明 :在应用内添加权限说明页,向用户清晰说明每个权限的使用场景,提升用户信任。

总结

  1. Android 权限按系统规则 分为普通、危险、特殊、系统保护 四大等级,等级决定使用规则(是否需动态申请 / 引导设置);
  2. 使用场景 可分为 8 大模块,开发中重点掌握网络、定位、存储、设备、应用操作5 大核心模块的高频权限;
  3. 危险权限按组授权 ,特殊权限需引导到系统设置页开启 ,系统保护权限普通应用完全无法获取
  4. 高版本 Android(API29/31/33)对存储、蓝牙、定位、通知 权限做了大幅拆分 / 废弃 / 替代,是适配的核心;
  5. 开发遵循最小权限、按需申请、明确说明 原则,Google Play 上架需保证权限必要性 并完善隐私政策

这份权限大全覆盖手机应用开发的所有场景,车载 / 电视 / 穿戴等特殊设备的扩展权限可参考 Android 官方文档,核心基础权限通用,开发时可按模块快速查找。

相关推荐
大模型玩家七七2 小时前
安全对齐不是消灭风险,而是重新分配风险
android·java·数据库·人工智能·深度学习·安全
李少兄2 小时前
MySQL 中为时间字段设置默认当前时间
android·数据库·mysql
俩个逗号。。2 小时前
修改Android resource dimens大小之后不生效
android
2501_915918412 小时前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
落羽的落羽3 小时前
【Linux系统】从零实现一个简易的shell!
android·java·linux·服务器·c++·人工智能·机器学习
常利兵3 小时前
Android Gradle 构建脚本现代化:Kotlin DSL (.kts) 与 Groovy DSL 深度对比与实战指南
android·开发语言·kotlin
TheNextByte13 小时前
如何在PC和Android平板之间传输文件
android·gitee·电脑
Greenland_123 小时前
Android 混淆与混淆后bug日志问题定位
android·bug
baidu_247438613 小时前
Android kotlin 定时n秒完成时回调,含暂停和继续
android·kotlin