PermissionsDispatcher 是一个基于注解、帮助开发者简单处理Android 6.0系统中的运行时权限的开源库。
开源地址:https://github.com/hotchemi/PermissionsDispatcher
1、添加依赖
implementation('com.github.hotchemi:permissionsdispatcher:2.4.0')
{
excludemodule:"support-v13"
}
annotationProcessor'com.github.hotchemi:permissionsdispatcher-processor:2.4.0'
2、在Activity或Fragment中使用
1:在对应的Activity类上面添加注解,比如MainAcitvity
@RuntimePermissions
public class MainActivity extends BaseActivity
{
......
初始化...
void initView()
{
if (Build.VERSION.SDK_INT >23) {
调用辅助类里面的方法完成应用的权限请求
MainActivityPermissionsDispatcher.initPermissionWithCheck(this);
}
}
}
MainActivityPermissionsDispatcher的来由:
只有@RuntimePermissions和@NeedsPermission是必须的,其余注解均为可选。当使用了@RuntimePermissions和@NeedsPermission之后,需要点击菜单栏中Build菜单下的Make Project,或者按快捷键Ctrl + F9编译整个项目,编译器会在app\build\intermediates\classes\debug目录下与被注解的Activity同一个包下生成一个辅助类,名称为被注解的Activity名称+PermissionsDispatcher.class
@NeedsPermission注解在需要调用运行时权限的方法上,当用户给予权限时会执行该方法
//这里是动态获取对文件操作的权限
@NeedsPermission({Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.MOUNT_FORMAT_FILESYSTEMS, Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS})
void initPermission() {
}
@OnShowRationale 注解在用于向用户解释为什么需要调用该权限的方法上,只有当第一次请求权限被用户拒绝,下次请求权限之前会调用
@OnShowRationale({Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.MOUNT_FORMAT_FILESYSTEMS, Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS})
void onShowRationale(final PermissionRequest request) {
new AlertDialog.Builder(this)
.setMessage("需要获取一些权限")
.setPositiveButton("赶紧点允许嘛~~", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
request.proceed();
}
})
.setNegativeButton("又尼玛决绝吗?", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
request.cancel();
}
})
.show();
}
小小记录一下,以防下次用的时候忘了,,,如有错误的地方,请大佬们指出.....