PermissionsDispatcher动态获取权限用法

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();

}



小小记录一下,以防下次用的时候忘了,,,如有错误的地方,请大佬们指出.....

你可能感兴趣的:(PermissionsDispatcher动态获取权限用法)