最近整理了一个Android 6.0以上的权限获取工具,要用到就直接复制粘贴好了
用法
采用Glide的Fragment依附思想,无需继承Activity,傻瓜式调用,传入权限的String参数为可变长度型,支持2种模式
- 普通的Callback回调
- 通过RxJava2生成事件流
Callback用法:
//PermissionManager在action包下
PermissionManager.with(this)
.request(new PermissionManager.Callback() {
@Override
public void call(PermissionResult result) {
process(result);
}
}, Manifest.permission.WRITE_EXTERNAL_STORAGE);
RxJava2用法
//PermissionManager在rx包下
PermissionManager.with(this)
.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(new Consumer<PermissionResult>() {
@Override
public void accept(@NonNull PermissionResult permissionResult) throws Exception {
process(permissionResult);
}
});
返回的权限结果处理实例:
private void process(PermissionResult permissionResult) {
if (permissionResult.isSuccessful()) {
Toast.makeText(getApplicationContext(), "成功GET√", Toast.LENGTH_SHORT).show();
return;
}
if (permissionResult.isDisable()) {
//用户傲娇的勾选了不再提示,并且拒绝了权限
Toast.makeText(getApplicationContext(), "权限被禁用啦,请手动开启权限", Toast.LENGTH_SHORT).show();
PermissionManager.toSetting(MainActivity.this);
} else {
//用户拒绝了权限
Toast.makeText(getApplicationContext(), "宝宝摔倒了,要开启权限才能爬起来~~~", Toast.LENGTH_SHORT).show();
}
}
Ps:request
方法用@TargetApi
修饰,API23以下不执行
最后附上一些6.0以上的危险权限(默认不开启)
危险权限9个大类分别是
- 读写日历
- 相机
- 通讯录的读写
- 位置
- 麦克风
- 通话相关
- 传感器
- 短信相关
- 手机存储
其中在6.0以上,在对应分组下只要有一条权限被授权,当前分组下的所有权限都被授权
网友评论