android自定义权限检查对话框,Android PermissionUtils:运行时权限工具类及申请权限的正确姿势...

本文介绍了如何使用自定义的PermissionUtils工具类进行Android运行时权限管理,包括简洁和复杂的权限申请方式,以及如何处理用户拒绝权限的场景。通过这个工具类,可以更方便地进行权限检查和申请。
摘要由CSDN通过智能技术生成

PermissionUtil

经常写Android运行时权限申请代码,每次都是复制过来之后,改一下权限字符串就用,把代码搞得乱糟糟的,于是便有了封装工具类的想法,话不多说,先看怎么用:

工具类及Demo:github

简洁版申请权限

申请一个权限:

PermissionUtils.checkAndRequestPermission(mContext, PERMISSION_CAMERA, REQUEST_CODE_CAMERA,

new PermissionUtils.PermissionRequestSuccessCallBack() {

@Override

public void onHasPermission() {

// 权限已被授予

toCamera();

}

});

然后在onRequestPermissionsResult中:

if(PermissionUtils.isPermissionRequestSuccess(grantResults))

{

// 权限申请成功

toCamera();

}

什么?要同时申请多个权限?

PermissionUtils.checkAndRequestMorePermissions(mContext, PERMISSIONS, REQUEST_CODE_PERMISSIONS,

new PermissionUtils.PermissionRequestSuccessCallBack() {

@Override

public void onHasPermission() {

// 权限已被授予

toCamera();

}

});

当然上面这些都不是申请权限的正确姿势,理想的姿势应该是:

第一次申请权限:按照正常流程走;

如果用户第一次拒绝了权限申请,第二次申请时应向用户解释权限用途;

如果用户勾选了“不再询问”选项,应引导用户去设置页手动开启权限。

如图:

d6085c94cb08

第一次申请权限

d6085c94cb08

第二次申请权限并禁止询问

于是,引申出了复杂版的权限申请方法:

自定义权限申请:

PermissionUtils.checkPermission(mContext, PERMISSION_CAMERA,

new PermissionUtils.PermissionCheckCallBack() {

@Override

public void onHasPermission() {

// 已授予权限

toCamera();

}

@Override

public void onUserHasAlreadyTurnedDown(String... permission) {

// 上一次申请权限被拒绝,可用于向用户说明权限原因,然后调用权限申请方法。

}

@Override

public void onUserHasAlreadyTurnedDownAndDontAsk(String... permission) {

// 第一次申请权限或被禁止申请权限,建议直接调用申请权限方法。

}

});

然后在onRequestPermissionsResult中:

PermissionUtils.onRequestPermissionResult(mContext, PERMISSION_CAMERA, grantResults, new PermissionUtils.PermissionCheckCallBack() {

@Override

public void onHasPermission() {

toCamera();

}

@Override

public v

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值