Android RxPermissions 使用教程
16lz
2021-01-23
github:
https://github.com/tbruyelle/RxPermissions
demo:
https://github.com/anymyna/android_laboratory
步骤:
1、 初始化
dependencies { implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' implementation 'io.reactivex.rxjava2:rxjava:2.1.0' implementation 'com.github.tbruyelle:rxpermissions:0.10.2'}
2、 用法
检测是否有某权限
RxPermissions permissions = new RxPermissions(this); permissions.setLogging(true); Log.d(TAG, "checkPermissionsIsGranted WRITE_EXTERNAL_STORAGE " + permissions.isGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE));
申请单个权限
RxPermissions permissions = new RxPermissions(RxPermissionsActivity.this); permissions.setLogging(true); permissions.request(Manifest.permission.CAMERA) .subscribe(new Consumer<Boolean>() { @Override public void accept(Boolean aBoolean) throws Exception { Log.d(TAG, "text_camera aBoolean " + aBoolean); } });
申请多个权限
RxPermissions rxPermissions = new RxPermissions(RxPermissionsActivity.this); rxPermissions.requestEach(Manifest.permission.READ_SMS) .subscribe(new Consumer<Permission>() { @Override public void accept(Permission permission) throws Exception { if (permission.granted) { // 用户已经同意该权限 Log.d(TAG, "text_sms granted" ); //result.agree(permission); } else if (permission.shouldShowRequestPermissionRationale) { // 用户拒绝了该权限,没有选中『不再询问』(Never ask again),那么下次再次启动时,还会提示请求权限的对话框 //result.refuse(permission); Log.d(TAG, "text_sms shouldShowRequestPermissionRationale" ); } else { // 用户拒绝了该权限,并且选中『不再询问』,提醒用户手动打开权限 //result.noMoreQuestions(permission); Log.d(TAG, "text_sms " ); } } });
更多相关文章
- Android 判断是否得到 root权限
- android 权限库,拿来就能用
- 【Android】Android permission 访问权限
- android 文件目录权限
- android 6.0权限问题处理的核心代码--shouldShowRequestPermissi
- Android 图形用户界面 之 绘图(一)
- android 6.0及以上危险权限的获取
- android需要的访问权限(不断更新,希望大家多交流)
- android 权限明细