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

}



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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容