Android 权限申请工具类

Android 权限申请工具类

本篇文章用于记录在项目中用到的权限申请工具类。我们在项目中都遇到过权限申请问题,每一次的权限申请都是繁琐的,并且在权限的各个状态都需要我们去判断,让每个开发人员都无不烦躁。在这里我要十分感谢郭霖大神的博客PermissionX现在支持Java了!还有Android 11权限变更讲解这篇文章为我们封装了很好的权限申请功能。
集成:

implementation 'com.permissionx.guolindev:permissionx:1.3.0'

使用:

PermissionX.init(fragmentActivity)
                .permissions(Manifest.permission.CAMERA)
                .onExplainRequestReason(new ExplainReasonCallbackWithBeforeParam() {
   
                    @Override
                    public void onExplainReason(ExplainScope scope, List<String> deniedList, boolean beforeRequest) {
   
                    //这里是选择禁止后的提示
                        scope.showRequestReasonDialog(deniedList, "相机权限是必须依赖的权限", "去开启","关闭");
                    }
                })
                .onForwardToSettings(new ForwardToSettingsCallback() {
   
                    @Override
                    public void onForwardToSettings(ForwardScope scope, List<String> deniedList) {
   
                    //这里是选择禁止且不再提示后的提示
                        scope.showForwardToSettingsDialog(deniedList, "程序需要您去应用程序设置当中手动开启相机权限", "去开启","关闭");
                    }
                })
                .request(new RequestCallback() {
   
                    @Override
                    public void onResult(boolean allGranted, List<String> grantedList, List<String> deniedList) {
   
                        if (allGranted){
   
                           //这里是申请权限同意后的操作
                        }else {
   
                           //不同意时的操作
                        }

                    }
                });

上面是郭霖大神封装后的使用方法,很简便。在实际项目使用中,我发现光是这样还不够,我根据自己项目的业务逻辑在上面的基础上封装成了工具类,直接调用即可。

使用情景1、申请的权限不是必须权限,不管是否同意都能继续往下走

工具类实现:

/**
     * 此方法申请的权限不是必须的,就是不管是否同意权限都能继续往下走
     * @param fragmentActivity
     * @param permissions
     */
    public void setPermission(FragmentActivity fragmentActivity,AfterPermission afterPermission,String... permissions){
   
        PermissionX.init(fragmentActivity)
                .permissions(new ArrayList<>(Arrays.asList(permissions)))
                .request(new RequestCallback() {
   
                    @Override
                    public void onResult(boolean allGranted, List<String> grantedList, List<String> deniedList) {
   
                    	//不管同不同意权限,都继续往下执行
                        if (afterPermission!=null){
   
                            afterPermission.doNext();
                        }
                    }
                });
    }

外部调用:

PermissionUtils permissionUtils = new PermissionUtils();
        permissionUtils.setPermission(this, new PermissionUtils.AfterPermission() {
   
            @Override
            public void doNext() {
   
                //此处调用继续往下执行的代码
            }
        },Manifest.permission.WRITE_EXTERNAL_STORAGE);
使用情景2、此方法申请的权限不是必须的,但在不同意权限的时候会走另外一条路

工具类中方法实现:

 /**
     * 此方法申请的权限不是必须的,但在不同意权限的时候会走另外一条路
     * @param fragmentActivity
     * @param permissions
     */
    public void setPermission(FragmentActivity fragmentActivity,boolean other,AfterPermissionTwo afterPermissionTwo,String... permissions){
   
        PermissionX.init(fragmentActivity)
                .permissions(
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值