美文网首页程序员
PermissionsDispatcher动态获取权限用法

PermissionsDispatcher动态获取权限用法

作者: 林灬 | 来源:发表于2018-08-06 10:58 被阅读0次

    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动态获取权限用法

        本文链接:https://www.haomeiwen.com/subject/yykbmxtx.html