Android6.0运行时权限解决方案--EasyPermissions

一.使用

添加依赖:compile 'pub.devrel:easypermissions:0.2.0'

二.准备

在使用 EasyPermissions 之前,需要在 Activity或者 Fragment 中实现 EasyPermissions.PermissionCallbacks接口,并且覆盖以下方法:

/** * 使用 AfterPermissioonGranted 注解。这是可选的,但是提供出来是为了方便。
      如果所有的请求的权限都被授予了,被注解的方法将会被执行,  
      这样做是为了简化通常的请求权限成功之后再调用方法的流程。 
      同时也可以在 onPermissionsGranted 的回    调中添加逻辑操作: 
      @AfterPermissionGranted(RC_WRITE)
      public void requestPermission() {    
        String[] perms = {Manifest.permission.WRITE_EXTERNAL_STORAGE};   
       //去判断 app 是否已经有权限了。该方法的最后个参数是可变数组形式的,所以可以一次性查询多个权限。
        if (EasyPermissions.hasPermissions(this, perms)) {       
              startService(new Intent(mContext, UpdateService.class));   
         } else {       
                         //使用 EasyPermissions#requestPermissions 去请求权限。该方法在请求权限的同时有必要的话会显示使用权限理由。// requestCode 对于该方法来说必须是唯一的,同时最后个参数也是可变数组形式的,所以可以一次性请求多个权限       
                     EasyPermissions.requestPermissions(this, "下载应用需要文件写入权限哦~",                RC_WRITE, perms);   
           }
    }
    //处理权限是否成功申请
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {                    
              super.onRequestPermissionsResult(requestCode, permissions, grantResults);    
            // 将结果转发给EasyPermissions   
             EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
    }
    @Override
    public void onPermissionsGranted(int requestCode, List perms) {    
    //权限被赋予,requestCode必须是唯一的   
           if (RC_WRITE == requestCode) {      
                startService(new Intent(mContext, UpdateService.class));    
        }
    }
    @Override
    public void onPermissionsDenied(int requestCode, List perms) {   
         //权限被拒绝   
         ToastUtil.shortShow("取消更新 T T");
  }

你可能感兴趣的:(Android6.0运行时权限解决方案--EasyPermissions)