【Rxpermissions 申请权限】

开源库地址:

https://github.com/tbruyelle/RxPermissions

该库允许将 RxJava 与新的 Android M 权限模型一起使用

一、导包及配置

 implementation 'com.github.tbruyelle:rxpermissions:0.12'

//rxJava 注意:这里必须是rxJava3
 api 'io.reactivex.rxjava3:rxjava:3.0.4'
 api 'io.reactivex.rxjava3:rxandroid:3.0.0'

二、使用

/**
 * 申请权限工具类
 */
public class ApplyPermissionUtil {

    private RxPermissions rxPermission;

    private String TAG = getClass().getName();
   

    public static ApplyPermissionUtil newUtil(){
        return new ApplyPermissionUtil();
    }

    public void requestPermissions(Activity activity, String... permissions){

        if (rxPermission == null){
            rxPermission = new RxPermissions((FragmentActivity) activity);
        }

        rxPermission.requestEachCombined(permissions)
                .subscribe(permission -> { // will emit 2 Permission objects
                    if (permission.granted) {
                        // 用户已经同意该权限
                        Log.d(TAG, permission.name + " is granted.");
                        
                    } else if (permission.shouldShowRequestPermissionRationale) {
                        // 用户拒绝了该权限,没有选中『不再询问』(Never ask again),那么下次再次启动时,还会提示请求权限的对话框
                        Log.d(TAG, permission.name + " is denied. More info should be provided.");
                       
                    } else {
                        // 用户拒绝了该权限,并且选中『不再询问』
                        Log.d(TAG, permission.name + " is denied.");
                        ToastUtil.showToast("请在设置中开启该权限");
                       
                    }
                });
       
    }

    public void requestPermissions(Fragment fragment, String... permissions){

        if (rxPermission == null){
            rxPermission = new RxPermissions(fragment);
        }

        rxPermission.requestEachCombined(permissions)
                .subscribe(permission -> { // will emit 2 Permission objects
                    if (permission.granted) {
                        // 用户已经同意该权限
                        Log.d(TAG, permission.name + " is granted.");
                      
                    } else if (permission.shouldShowRequestPermissionRationale) {
                        // 用户拒绝了该权限,没有选中『不再询问』(Never ask again),那么下次再次启动时,还会提示请求权限的对话框
                        Log.d(TAG, permission.name + " is denied. More info should be provided.");
                      
                    } else {
                        // 用户拒绝了该权限,并且选中『不再询问』
                        Log.d(TAG, permission.name + " is denied.");
                        ToastUtil.showToast("请在设置中开启该权限");
                      
                    }
                });
       
    }


}

三、注意事项

1、项目中必须导入rxJava3 ,否则无法调用subscribe方法

2、上述方法获取到的是组合的详细结果,如果需要使用其他方法,请查阅开源库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值