easypermissions使用
[url]https://github.com/googlesamples/easypermissions
代码分析()
[url]http://www.tuicool.com/articles/uyemIfi
appgradle中加入依赖
compile 'pub.devrel:easypermissions:0.1.7'
当前activity实现EasyPermissions.PermissionCallbacks接口
界面显示时请求权限(自定义方法)
@Override
protected void onStart() {
super.onStart();
//申请对应权限(自定义方法)
requestMyPermission();
}
自定义方法上使用注解使用
AfterPermissioonGranted 注解。这是可选的,但是提供出来是为了方便。如果所有的请求的权限都被授予了,被注解的方法将会被执行,这样做是为了简化通常的请求权限成功之后再调用方法的流程。同时也可以在onPermissionsGranted 的回调中添加逻辑操作,也就是说如果有该注解的话,那么当request值对应的权限申请通过的话会自动调用该方法。
/**
* 请求权限定义一个final的请求码
*/
private static final int REQUEST_CODE_QRCODE_PERMISSIONS = 1;
@AfterPermissionGranted(REQUEST_CODE_QRCODE_PERMISSIONS)
private void requestMyPermission() {
//需要申请的权限(访问相机的权限,和内存卡的权限等等权限)
String[] perms = {Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
// 检查是否有该权限,没有的话就去申请
if (!EasyPermissions.hasPermissions(this, perms)) {
//第二个参数是被拒绝后再次申请权限的解释
//第三个参数是请求码
//第四个参数要申请的权限
EasyPermissions.requestPermissions(this, "扫描二维码需要打开相机和散光灯的权限", REQUEST_CODE_QRCODE_PERMISSIONS, perms);
}
}
复写此方法
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//把申请权限的回调交由EasyPermissions处理
EasyPermissions.onRequestPermissionsResult(requestCode,permissions,grantResults,this);
}
实现对应接口时复写两个方法
@Override
public void onPermissionsGranted(int requestCode, List<String> perms) {
//此处表示权限申请已经成功,可以使用该权限完成app的相应的操作了
Toast.makeText(this,"权限申请成功",Toast.LENGTH_SHORT).show();
}
@Override
public void onPermissionsDenied(int requestCode, List<String> perms) {
//此处表示权限申请被用户拒绝了,此处可以通过弹框等方式展示申请该权限的原因,以使用户允许使用该权限
Toast.makeText(this,"权限申请成功",Toast.LENGTH_SHORT).show();
}