每次获取危险权限都要写一堆代码,麻烦,工作量还比较多,因此封装了一个简单的
首先,在项目build里面加入
jcenter()
然后在module的build里面加入compile 'com.github.hl:Permission:1.0.0'
导入完成,使用就简单了
Permission.with(this)
.addRequestCode(200)
.addPermissions(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.addInterface(new PermissionResult() {
@Override
public void result(int code) {
//具体操作
}
@Override
public void faild(int code) {
Utils.showToast(AdministrationProcurementDetailActivity.this, "需要读写权限");
}
}).submit();
例如这个,就是获取读写权限,addRequestCode 用来标识的,对应的就是PermissionResult里面的code,这是用于一个界面多处请求权限判断用的,addPermissions就是添加的权限,可以有多个,用逗号分开,不管成功失败,都会返回回来,在PermissionResult相应处理就好
最后,写一个BaseActivity,所有的activity继承它,在里面写上
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
ArrayList<String> deniedPermissions = new ArrayList<>();
for (int i = 0; i < grantResults.length; i++) {
if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
deniedPermissions.add(permissions[i]);
}
}
if (deniedPermissions.size() > 0) {
Permission.onFaildRPermissionsResult(requestCode);
} else {
Permission.onRequestPermissionsResult(requestCode);
}
}
搞定,不管activity 还是fragment,都能直接使用