一.使用
添加依赖: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<String> perms) {
//权限被赋予,requestCode必须是唯一的
if (RC_WRITE == requestCode) {
startService(new Intent(mContext, UpdateService.class));
}
}
@Override
public void onPermissionsDenied(int requestCode, List<String> perms) {
//权限被拒绝
ToastUtil.shortShow("取消更新 T T");
}
网友评论