本文主要记录安卓权限和安卓动态权限及动态权限的使用方法
| 常用权限 | ||
| 访问网络 | android.permission.INTERNET | |
| 写入外部存储 | android.permission.WRITE_EXTERNAL_STORAGE | |
| 获取网络状态 | android.permission.ACCESS_NETWORK_STATE | |
| 拨打电话 | android.permission.CALL_PHONE | |
| 拍照权限 | android.permission.CAMERA | |
| 读取电话状态 | android.permission.READ_PHONE_STATE | |
| 读取短信内容 | android.permission.READ_SMS | |
| 写入联系人 | android.permission.WRITE_CONTACTS | |
| 设置屏幕方向 | android.permission.SET_ORIENTATION | |
| 其他权限 | ||
| 访问登记属性 | android.permission.ACCESS_CHECKIN_PROPERTIES
| |
| 获取精确位置 | android.permission.ACCESS_FINE_LOCATION | |
| 访问定位额外命令 | android.permission.ACCESS_LOCATION_EXTRA_COMMANDS | |
| 获取模拟定位信息 | android.permission.ACCESS_MOCK_LOCATION | |
| 访问 | android.permission.ACCESS_SURFACE_FLINGER | |
| 获取WiFi状态 | android.permission.ACCESS_WIFI_STATE | |
| 账户管理 | android.permission.ACCOUNT_MANAGER | |
| 验证账户 | android.permission.AUTHENTICATE_ACCOUNTS | |
| 电量统计 | android.permission.BATTERY_STATS | |
| 绑定小插件 | android.permission.BIND_APPWIDGET | |
| 绑定设备管理 | android.permission.BIND_DEVICE_ADMIN | |
| 绑定输入法 | android.permission.BIND_INPUT_METHOD | |
| 绑定RemoteView | android.permission.BIND_REMOTEVIEWS | |
| 绑定壁纸 | android.permission.BIND_WALLPAPER | |
| 使用蓝牙 | android.permission.BLUETOOTH | |
| 蓝牙管理 | android.permission.BLUETOOTH_ADMIN | |
| 变成砖头 | android.permission.BRICK | |
| 应用删除时广播 | android.permission.BROADCAST_PACKAGE_REMOVED | |
| 收到短信时广播 | android.permission.BROADCAST_SMS | |
| 连续广播 | android.permission.BROADCAST_STICKY | |
| WAP PUSH广播 | android.permission.BROADCAST_WAP_PUSH | |
| 通话权限 | android.permission.CALL_PRIVILEGED | |
| 改变组件状态 | android.permission.CHANGE_COMPONENT_ENABLED_STATE | |
| 改变配置 | android.permission.CHANGE_CONFIGURATION | |
| 改变网络状态 | android.permission.CHANGE_NETWORK_STATE | |
| 改变WiFi多播状态 | android.permission.CHANGE_WIFI_MULTICAST_STATE | |
| 改变WiFi状态 | android.permission.CHANGE_WIFI_STATE | |
| 清除应用缓存 | android.permission.CLEAR_APP_CACHE | |
| 清除用户数据 | android.permission.CLEAR_APP_USER_DATA | |
| 底层访问权限 | android.permission.CWJ_GROUP | |
| 手机优化大师扩展权限 | android.permission.CELL_PHONE_MASTER_EX | |
| 控制定位更新 | android.permission.CONTROL_LOCATION_UPDATES | |
| 删除缓存文件 | android.permission.DELETE_CACHE_FILES | |
| 删除应用 | android.permission.DELETE_PACKAGES | |
| 电源管理 | android.permission.DEVICE_POWER | |
| 应用诊断 | android.permission.DIAGNOSTIC | |
| 禁用键盘锁 | android.permission.DISABLE_KEYGUARD | |
| 转存系统信息 | android.permission.DUMP | |
| 状态栏控制 | android.permission.EXPAND_STATUS_BAR | |
| 工厂测试模式 | android.permission.FACTORY_TEST | |
| 使用闪光灯 | android.permission.FLASHLIGHT | |
| 强制后退 | android.permission.FORCE_BACK | |
| 访问账户Gmail列表 | android.permission.GET_ACCOUNTS | |
| 获取应用大小 | android.permission.GET_PACKAGE_SIZE | |
| 获取任务信息 | android.permission.GET_TASKS | |
| 允许全局搜索 | android.permission.GLOBAL_SEARCH | |
| 硬件测试 | android.permission.HARDWARE_TEST | |
| 注射事件 | android.permission.INJECT_EVENTS | |
| 安装定位提供 | android.permission.INSTALL_LOCATION_PROVIDER | |
| 安装应用程序 | android.permission.INSTALL_PACKAGES | |
| 内部系统窗口 | android.permission.INTERNAL_SYSTEM_WINDOW | |
| 结束后台进程 | android.permission.KILL_BACKGROUND_PROCESSES | |
| 管理账户 | android.permission.MANAGE_ACCOUNTS | |
| 管理程序引用 | android.permission.MANAGE_APP_TOKENS | |
| 高级权限 | android.permission.MTWEAK_USER | |
| 社区权限 | android.permission.MTWEAK_FORUM | |
| 软格式化 | android.permission.MASTER_CLEAR | |
| 修改声音设置 | android.permission.MODIFY_AUDIO_SETTINGS | |
| 修改电话状态 | android.permission.MODIFY_PHONE_STATE | |
| 格式化文件系统 | android.permission.MOUNT_FORMAT_FILESYSTEMS | |
| 挂载文件系统 | android.permission.MOUNT_UNMOUNT_FILESYSTEMS | |
| 允许NFC通讯 | android.permission.NFC | |
| 永久Activity | android.permission.PERSISTENT_ACTIVITY | |
| 处理拨出电话 | android.permission.PROCESS_OUTGOING_CALLS | |
| 读取日程提醒 | android.permission.READ_CALENDAR | |
| 读取联系人 | android.permission.READ_CONTACTS | |
| 屏幕截图 | android.permission.READ_FRAME_BUFFER | |
| 读取收藏夹和历史记录 | com.android.browser.permission.READ_HISTORY_BOOKMARKS | |
| 读取输入状态 | android.permission.READ_INPUT_STATE | |
| 读取系统日志 | android.permission.READ_LOGS | |
| 读取同步设置 | android.permission.READ_SYNC_SETTINGS | |
| 读取同步状态 | android.permission.READ_SYNC_STATS | |
| 重启设备 | android.permission.REBOOT | |
| 开机自动允许 | android.permission.RECEIVE_BOOT_COMPLETED | |
| 接收彩信 | android.permission.RECEIVE_MMS | |
| 接收短信 | android.permission.RECEIVE_SMS | |
| 接收Wap Push | android.permission.RECEIVE_WAP_PUSH | |
| 录音 | android.permission.RECORD_AUDIO | |
| 排序系统任务 | android.permission.REORDER_TASKS | |
| 结束系统任务 | android.permission.RESTART_PACKAGES | |
| 发送短信 | android.permission.SEND_SMS | |
| 设置Activity观察其 | android.permission.SET_ACTIVITY_WATCHER | |
| 设置闹铃提醒 | com.android.alarm.permission.SET_ALARM | |
| 设置总是退出 | android.permission.SET_ALWAYS_FINISH | |
| 设置动画缩放 | android.permission.SET_ANIMATION_SCALE | |
| 设置调试程序 | android.permission.SET_DEBUG_APP | |
| 设置应用参数 | android.permission.SET_PREFERRED_APPLICATIONS | |
| 设置进程限制 | android.permission.SET_PROCESS_LIMIT | |
| 设置系统时间 | android.permission.SET_TIME | |
| 设置系统时区 | android.permission.SET_TIME_ZONE | |
| 设置桌面壁纸 | android.permission.SET_WALLPAPER | |
| 设置壁纸建议 | android.permission.SET_WALLPAPER_HINTS | |
| 发送永久进程信号 | android.permission.SIGNAL_PERSISTENT_PROCESSES | |
| 状态栏控制 | android.permission.STATUS_BAR | |
| 访问订阅内容 | android.permission.SUBSCRIBED_FEEDS_READ | |
| 写入订阅内容 | android.permission.SUBSCRIBED_FEEDS_WRITE | |
| 显示系统窗口 | android.permission.SYSTEM_ALERT_WINDOW | |
| 更新设备状态 | android.permission.UPDATE_DEVICE_STATS | |
| 使用证书 | android.permission.USE_CREDENTIALS | |
| 使用SIP视频 | android.permission.USE_SIP | |
| 使用振动 | android.permission.VIBRATE | |
| 唤醒锁定 | android.permission.WAKE_LOCK | |
| 写入GPRS接入点设置 | android.permission.WRITE_APN_SETTINGS | |
| 写入日程提醒 | android.permission.WRITE_CALENDAR | |
| 写入Google地图数据 | android.permission.WRITE_GSERVICES | |
| 写入收藏夹和历史记录 | com.android.browser.permission.WRITE_HISTORY_BOOKMARKS | |
| 读写系统敏感设置 | android.permission.WRITE_SECURE_SETTINGS | |
| 读写系统设置 | android.permission.WRITE_SETTINGS | |
| 编写短信 | android.permission.WRITE_SMS | |
| 写入在线同步设置 | android.permission.WRITE_SYNC_SETTINGS | |
说明:
- Android 6.0之前,权限在应用安装过程中只询问一次,以列表的形式展现给用户,然而大多数用户并不会注意到这些,直接就下一步了,应用安装成功后就会被赋予清单文件中的所有权限,应用就可以在用户不知情的情况下进行非法操作(比如偷偷的上传用户数据)。
- 安卓系统的权限管理机制从API 23 (也就是Android 6.0 又叫做 Android M,)之后发生了比较大的改变,在一些比较危险的权限上要求必须申请动态权限,即使你在AndroidMainfest.xml文件中申请也没有任何用,或者你可以将编译的目标版本设定这API 22,这样就可以了。
需要动态申请的权限如下:
- READ_CALENDAR , WRITE_CALENDAR 读写日历权限
- CAMERA 调用相机权限
- READ_CONTACTS , WRITE_CONTACTS , GET_ACCOUNTS 通讯录权限
- ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION 定位权限
- RECORD_AUDIO 录音权限
- READ_PHONE_STATE ,CALL_PHONE READ_CALL_LOG, WRITE_CALL_LOG ADD_VOICEMAIL//手机状态相关
- BODY_SENSORS 传感器权限
- SMS SEND_SMS ,RECEIVE_SMS ,READ_SMS, RECEIVE_WAP_PUSH, RECEIVE_MMS SMS消息权限
10.READ_EXTERNAL_STORAGE ,WRITE_EXTERNAL_STORAGE 外部存储权限
动态申请权限步骤:
一、在AndroidMainfest.xml文件中申明权限
具体操作和安卓6.0以下的操作相同
二、判断安卓系统版本
安卓6.0以下,低于API23以下是不需要进行动态权限申请的,所以动态申请权限先进行版本判断
if (Build.VERSION.SDK_INT>=23) { //此处做动态权限申请 } else { //低于23 不需要特殊处理 }
三、检查权限
通过步骤二如果判断版本高于API23,则进行权限检查,检查当前应用中是否存在所需要的权限
//检测是否有写的权限
参数:上下文的context和权限的名称
返回两种情况:PERMISSION_GRANTED 存在权限以及PERMISSION_DENIED 不存在权限
int permission = ActivityCompat.checkSelfPermission(getApplicationContext(), "android.permission.WRITE_EXTERNAL_STORAGE"); //
四、进行权限申请
if (permission != PackageManager.PERMISSION_GRANTED) { // 没有写的权限,去申请写的权限,会弹出对话框,第一个参数是上下文,第二个参数是数组对象,第三个参数是唯一对应的请求码,请求码大小要介于0-65535之间 ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CAMERA},1); }
完整代码
// 进行版本判断 if (Build.VERSION.SDK_INT >= 23) { // 进行动态申请 //检测是否有写的权限 int permission = ActivityCompat.checkSelfPermission(getApplicationContext(), "android.permission.WRITE_EXTERNAL_STORAGE"); // 没有写的权限,去申请写的权限,会弹出对话框 if (permission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, 1); } } else { // 不进行操作 } }
安卓权限详解
本文详细介绍了安卓权限分类,包括常用权限和特殊权限,并提供了安卓6.0及以上版本动态权限申请的具体步骤。
1334

被折叠的 条评论
为什么被折叠?



