android 6.0 动态获取权限框架 PermissionDispatcher 的使用
2017-07-04 20:05
706 查看
对android 6.0 动态获取权限框架 PermissionDispatcher 的使用
android studio 引入 需要使用PermissionsDispatcher,需要在project的 build.gradle中添加
buildscript { dependencies { classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' } }
然后在app module中的build.gradle中添加:(必须在app module中添加)
apply plugin: 'android-apt' dependencies { compile 'com.github.hotchemi:permissionsdispatcher:2.1.3' apt 'com.github.hotchemi:permissionsdispatcher-processor:2.1.3' }
主要有下面5个注解
@RuntimePermissions 标记需要运行时判断的类
@NeedsPermission 标记需要检查权限的方法
@OnShowRationale 授权提示回调
@OnPermissionDenied 授权被拒绝回调
@OnNeverAskAgain 授权不再拒绝不再显示回调
使用1.@RuntimePermissions 在Activity或者Fragment中需要添加,来处理权限的问题
2.需要权限的时候,先要检查是否拥有该权限 (MyDeatilsActivity 替换成当前的类(Activity或者Fragment))
3.将需要权限的操作定义在一个方法里,并用 @NeedsPermission(Manifest.permission.CAMERA)表明需要的权限(可以是多个)
4.编译一下,就会生成【当前类名+PermissionsDispatcher】的类,在原本调用的地方调用@NeedsPermission标记的方法,
这时候你会发现会对应生成【方法名+WithCheck】的方法
如:MyDeatilsActivityPermissionsDispatcher.showContactsWithCheck(MyDeatilsActivity.this);
/** * 如果用户拒绝该权限执行的方法 */ @OnPermissionDenied(Manifest.permission.CAMERA) void onDeniedTakeCamera() { Toast.makeText(getApplicationContext(), "Camera Denied", Toast.LENGTH_SHORT).show(); }
/** * 如果用户选择了让设备“不再询问”,而调用的方法 */ @OnNeverAskAgain(Manifest.permission.CAMERA) void onNeverAskTakeCamera() { Toast.makeText(getApplicationContext(), "Camera NeverAsk", Toast.LENGTH_SHORT).show(); }
/** * 如果用户拥有该权限执行的方法 */ @NeedsPermission({Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS}) void showContacts() { Toast.makeText(getApplicationContext(), "Contacts", Toast.LENGTH_SHORT).show(); }
/** * 权限请求回调,提示用户之后,用户点击“允许”或者“拒绝”之后调用此方法 * * @param requestCode 定义的权限编码 * @param permissions 权限名称 * @param grantResults 允许/拒绝 */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); MyDeatilsActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults); }
相关文章推荐
- 对android 6.0 动态获取权限框架 PermissionDispatcher 的使用
- RxPermissions源码分析:使用RxJava处理Android 6.0运行时动态权限获取
- RxPermissions源码分析:使用RxJava处理Android 6.0运行时动态权限获取
- Android 6.0动态权限框架EasyPermissions的使用
- 【android 6.0 动态申请权限的基本方法和框架使用】
- Android 6.0以上系统动态获取权限
- Android 6.0动态权限的获取
- Android 6.0(23)以后动态权限的使用
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
- Android_在Android 6.0设备上动态获取权限
- Android 6.0获取动态权限
- android 6.0权限动态获取
- Android 6.0 权限申请详解,以及权限申请框架MPermissions的简单使用
- Android 6.0权限动态获取
- Android使用easypermission动态获取权限
- Android新特性 - 6.0动态获取权限
- Android 6.0获取IMEI号是出错,动态获取权限
- 在Android 6.0 设备上动态获取权限
- Android开发动态获取权限(6.0以上API>23)
- Android 6.0 动态权限实战(二 - 终结章 - 高手必看!)------ 关于动态权限的正确使用与理解