运行时权限:需要动态申请(当用户获得某个组内的某个权限后,自动获得组内其他权限)
权限 | 说明 |
---|---|
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依赖:
在所需的Activity或者Fragment的代码里面右键,选择Generate,然后就可以选择Generate Runtime Permissions…(生成动态权限的生成)或者下面的Add PermissionsDispatcher dependencies(添加PermissionsDispatcher依赖)
选择所需要的权限,填写@NeedsPermission所注释的方法名。点击Generate,build项目,会生成一个辅助类再在app\build\intermediates\classes\debug目录下,类名为“被注解的Activity的名称+PermissionsDispatcher”
最后,申请权限的时候,调用辅助类的方法(名字从下面可以看出是被@OnPermissionDenied注解的方法加上WithCheck,参数是这个Activity或者Fragment)就行了:
注解 | 必须 | 说明 |
---|---|---|
@RuntimePermissions | ✓ | 注解在其内部需要使用运行时权限的Activity或Fragment上 |
@NeedsPermission | ✓ | 注解在需要调用运行时权限的方法上,当用户给予权限时会执行该方法 |
@OnShowRationale | 注解在用于向用户解释为什么需要调用该权限的方法上,只有当第一次请求权限被用户拒绝,下次请求权限之前会调用 | |
@OnPermissionDenied | 注解在当用户拒绝了权限请求时需要调用的方法上 | |
@OnNeverAskAgain | 注解在当用户选中了授权窗口中的不再询问复选框后并拒绝了权限请求时需要调用的方法,一般可以向用户解释为何申请此权限,并根据实际需求决定是否再次弹出权限请求对话框 |