安卓6.0的动态权限申请困扰了很多开发者,谷歌提供的官方申请方式过于繁复,代码量很大,也不够优雅。于是,我写了一个动态请求权限库,用来方便的获取权限以及进行一些处理。
依赖库
使用这个库需要minSdkVersion>11,build.gradle为3.0以上
allprojects {
repositories {
google()
jcenter()
}
}
implementation 'com.example.weeboos:permissionLib:1.1.4'
如何使用该库
首先创建一个PermissionRequest对象
PermissionRequest request = new PermissionRequest(this); // 这个this需要一个activity对象或者fragment对象
举例请求CAMERA权限
request.requestPermission(new PermissionRequest.PermissionListener() {
@Override
public void permissionGranted() {
//do Something when permission granted
Toast.makeText(MainActivity.this,"获取成功",Toast.LENGTH_SHORT).show();
}
@Override
public void permissionDenied(ArrayList<String> permissions) {
//do Something when permission denied
Toast.makeText(MainActivity.this,"获取拒绝",Toast.LENGTH_SHORT).show();
}
@Override
public void permissionNeverAsk(ArrayList<String> permissions) {
//do Something when permission never ask
Toast.makeText(MainActivity.this,"不再询问",Toast.LENGTH_SHORT).show();
PermissionUtils.showAlertDialog(MainActivity.this,PermissionUtils.translateArrayString(permissions));
}
},Manifest.permission.CAMERA);
如果需要请求多个权限的话
request.requestPermission(new PermissionRequest.PermissionListener() {
@Override
public void permissionGranted() {
//do Something when permission granted
Toast.makeText(MainActivity.this,"获取成功",Toast.LENGTH_SHORT).show();
}
@Override
public void permissionDenied(ArrayList<String> permissions) {
//do Something when permission denied
Toast.makeText(MainActivity.this,"获取拒绝",Toast.LENGTH_SHORT).show();
}
@Override
public void permissionNeverAsk(ArrayList<String> permissions) {
//do Something when permission never ask
Toast.makeText(MainActivity.this,"不再询问",Toast.LENGTH_SHORT).show();
PermissionUtils.showAlertDialog(MainActivity.this,PermissionUtils.translateArrayString(permissions));
}
},new String[]{Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE});