从Android 6.0 开始,涉及到用户的敏感信息的权限,不仅仅在Manifest中声明之后,就可以得到相应的权限,而是需要在运行中动态的申请权限。
按照谷歌官方文档在运行时请求权限,如果一个App在不同的页面都需要申请权限的话,那么,这将会是一个重复性很高而且很费时间的Coding。
程序猿都是懒的,我也不例外,于是乎,我自己封装了一个动态请求权限的工具类,帮助开发者在1分钟搞定权限申请。
使用方法:
1、在需要申请权限的Activity或者Fragment中 implements PermissionsUtil.IPermissionsCallback
2、在需要申请权限的地方调用:
1、一次申请单个权限
permissionsUtil = PermissionsUtil
.with(this)
.requestCode(0)
.isDebug(true)
.permissions(PermissionsUtil.Permission.Camera.CAMERA)
.request();
2、一次申请多个权限
permissionsUtil= PermissionsUtil
.with(this)
.requestCode(1)
.isDebug(true)//开启log
.permissions(PermissionsUtil.Permission.Storage.READ_EXTERNAL_STORAGE,
PermissionsUtil.Permission.Location.ACCESS_FINE_LOCATION)
.request();
3、在onRequestPermissionsResult中调用
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//需要调用onRequestPermissionsResult
permissionsUtil.onRequestPermissionsResult(requestCode, permissions, grantResults);
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
4、在onActivityResult中调用
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//监听跳转到权限设置界面后再回到应用
permissionsUtil.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}
5、获得申请的权限
@Override
public void onPermissionsGranted(int requestCode, String... permission) {
//权限获取回调
}
6、用户拒绝了申请的权限
@Override
public void onPermissionsDenied(int requestCode, String... permission) {
//权限被拒绝回调
}
1分钟搞定权限申请的工具类,可以从github上clone并查看使用方法。