Android的老铁都知道申请权限时,除了要在AndroidManifest添加权限,还需要在activity中通过requestpermission对应的权限,感觉还是有点麻烦的。
要是有个插件,只需要在AndroidManifest中申请的权限,也不需要在activity中一个个requestpermission权限的话,起步爽哉!
AutoPermit帮你解决这个痛点!
我们来看看如何使用它。
1 AndroidManifest申请权限
在AndroidManifest中申请了如下权限:
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
2 Activity中动态申请权限
2.1 系统动态申请权限
if (ContextCompat.checkSelfPermission(getApplication(), Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 10);
}
}
if (ContextCompat.checkSelfPermission(getApplication(), Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 10);
}
}
if (ContextCompat.checkSelfPermission(getApplication(), Manifest.permission.READ_CALENDAR) == PackageManager.PERMISSION_DENIED) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.READ_CALENDAR}, 10);
}
}
是不是觉得很麻烦,而且若是你申请10个动态权限,岂不是要写10个,我们看看用AutoPermit是什么情况?
2.2 AutoPermit申请权限
2.2.1 依赖
下载AutoPermitAAR包,并依赖,目前还没有上传到maven仓库。
2.2.2 使用
AutoPermit有两种方式,一种,完全自动请求权限;另一种,手动请求权限。通过setAuto为true为自动,False为手动。
- 自动请求权限
只需要在AndroidManifest中申请权限就可以了,AutoPermit会自动获取哪些权限需要动态申请。
AutoPermit.With(this)
.setAuto(true)
.setRequestCode(10)
.request();
- 手动请求权限
除了需要在AndroidManifest中申请权限,还需要在setPermissions中添加对应的权限。
AutoPermit.With(this)
.setAuto(false)
.setPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_CALENDAR,
Manifest.permission.READ_EXTERNAL_STORAGE})
.setRequestCode(10)
.request();
3.权限成功回调
在权限回调成功后可以做相应的处理。
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 10) {
for (String p : permissions) {
Log.e(MainActivity.class.getSimpleName(), "permission:" + p);
}
}
}
源码地址
AutoPermit github仓库 AutoPermit gitee仓库 欢迎点赞
|