Android6.0下权限的动态申请与清单文件配置

运行时权限:需要动态申请(当用户获得某个组内的某个权限后,自动获得组内其他权限)

权限 说明
group:android.permission-group.CONTACTS 联系人分组
permission:android.permission.WRITE_CONTACTS 写入联系人
permission:android.permission.GET_ACCOUNTS 在Accounts Service中访问一个帐户列表
permission:android.permission.READ_CONTACTS 读取联系人
group:android.permission-group.PHONE 手机相关分组
permission:android.permission.READ_CALL_LOG 读取电话日志
permission:android.permission.READ_PHONE_STATE 读取手机状态
permission:android.permission.CALL_PHONE 拨打电话
permission:android.permission.WRITE_CALL_LOG 写入电话日志
permission:android.permission.USE_SIP 使用
sippermission:android.permission.PROCESS_OUTGOING_CALLS 监听呼出电话
permission:com.android.voicemail.permission.ADD_VOICEMAIL 添加语音信箱
group:android.permission-group.CALENDAR 日历分组
permission:android.permission.READ_CALENDAR 读取日历
permission:android.permission.WRITE_CALENDAR 写入日历
group:android.permission-group.CAMERA 相机分组
permission:android.permission.CAMERA 相机
group:android.permission-group.SENSORS 传感器分组
permission:android.permission.BODY_SENSORS 身体传感器
group:android.permission-group.LOCATION 位置信息分组
permission:android.permission.ACCESS_FINE_LOCATION 访问精确位置
permission:android.permission.ACCESS_COARSE_LOCATION 访问粗略位置
group:android.permission-group.STORAGE 存储分组
permission:android.permission.READ_EXTERNAL_STORAGE 读取存储器
permission:android.permission.WRITE_EXTERNAL_STORAGE 写入存储区
permission:android.permission.MOUNT_UNMOUNT_FILESYSTEMS 在SD卡中创建和删除文件
group:android.permission-group.MICROPHONE 多媒体分组
permission:android.permission.RECORD_AUDIO 录制音频
group:android.permission-group.SMS 短信分组
permission:android.permission.READ_SMS 读取短信
permission:android.permission.RECEIVE_WAP_PUSH 接收wap推送
permission:android.permission.RECEIVE_MMS 接收彩信
permission:android.permission.RECEIVE_SMS 接收短信
permission:android.permission.SEND_SMS 发送短信
permission:android.permission.READ_CELL_BROADCAST 读取电话广播

安装时权限 ----- 清单文件配置

权限 说明
INTERNET 网络权限
ACCESS_LOCATION_EXTRA_COMMANDS 定位权限
ACCESS_NETWORK_STATE 网络状态
ACCESS_WIFI_STATE WiFi状态
CHANGE_NETWORK_STATE 改变网络状态(开关)
CHANGE_WIFI_MULTICAST_STATE 改变WiFi多播状态
CHANGE_WIFI_STATE 改变WiFi状态(开关)
ACCESS_NOTIFICATION_POLICY 通知显示在状态栏
BLUETOOTH 使用蓝牙
BLUETOOTH_ADMIN 控制蓝牙开关
BROADCAST_STICKY 粘性广播
DISABLE_KEYGUARD 改变键盘为不可用
EXPAND_STATUS_BAR 允许程序扩展收缩在状态栏
GET_PACKAGE_SIZE 获取应用安装包大小
KILL_BACKGROUND_PROCESSES 杀死后台进程
MODIFY_AUDIO_SETTINGS 改变音频输出设置
NFC 近场数据交互
READ_SYNC_STATS 读取手机同步状态
READ_SYNC_SETTINGS 读取手机同步设置
WRITE_SYNC_SETTINGS 修改手机同步设置
RECEIVE_BOOT_COMPLETED 监听启动广播
REORDER_TASKS 创建新栈
SET_TIME_ZONE 允许应用程序设置系统时间区域
SET_WALLPAPER 设置壁纸
SET_WALLPAPER_HINTS 设置壁纸上的提示信息,个性化语言
TRANSMIT_IR 红外发射
USE_FINGERPRINT 指纹识别
VIBRATE 震动
WAKE_LOCK 锁屏
SET_ALARM 设置警告提示
INSTALL_SHORTCUT 创建快捷方式
UNINSTALL_SHORTCUT 删除快捷方式
REQUEST_INSTALL_PACKAGES 安装应用程序(允许未知来源,应用内更新),适配8.0需配置

PermissionsDispatcher使用详解:

安装PermissionsDispatcher插件后add依赖:
Android6.0下权限的动态申请与清单文件配置_第1张图片
在所需的Activity或者Fragment的代码里面右键,选择Generate,然后就可以选择Generate Runtime Permissions…(生成动态权限的生成)或者下面的Add PermissionsDispatcher dependencies(添加PermissionsDispatcher依赖)
Android6.0下权限的动态申请与清单文件配置_第2张图片
选择所需要的权限,填写@NeedsPermission所注释的方法名。点击Generate,build项目,会生成一个辅助类再在app\build\intermediates\classes\debug目录下,类名为“被注解的Activity的名称+PermissionsDispatcher”Android6.0下权限的动态申请与清单文件配置_第3张图片
最后,申请权限的时候,调用辅助类的方法(名字从下面可以看出是被@OnPermissionDenied注解的方法加上WithCheck,参数是这个Activity或者Fragment)就行了:Android6.0下权限的动态申请与清单文件配置_第4张图片

注解 必须 说明
@RuntimePermissions 注解在其内部需要使用运行时权限的Activity或Fragment上
@NeedsPermission 注解在需要调用运行时权限的方法上,当用户给予权限时会执行该方法
@OnShowRationale 注解在用于向用户解释为什么需要调用该权限的方法上,只有当第一次请求权限被用户拒绝,下次请求权限之前会调用
@OnPermissionDenied 注解在当用户拒绝了权限请求时需要调用的方法上
@OnNeverAskAgain 注解在当用户选中了授权窗口中的不再询问复选框后并拒绝了权限请求时需要调用的方法,一般可以向用户解释为何申请此权限,并根据实际需求决定是否再次弹出权限请求对话框

权限请求框架GitHub地址

你可能感兴趣的:(#,Other)