【Android--开源库】权限适配RxPermissions的基本使用
- 游戏开发
- 2025-08-20 09:36:01

运行时权限
从 Android 6.0(API 级别 23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予。
系统权限分为两类:
正常权限:只需在你应用的 Androidmanifest.xml 中列出,安装时授权。危险权限:需要在你应用的 Androidmanifest.xml 中列出,并在运行时授权。如需了解更多关于正常权限与危险权限可以参阅这里。
关于 Android 6.0 运行时权限的详细讲解可以看这篇文章和官方文档。
RxPermissionsRxPermissions 能配合 RxJava 与新的 Android M 权限模型一起使用,用于处理 Android 运行时权限。
GitHub 地址: github /tbruyelle/RxPermissions
一、集成说明在 app 模块下的 build.gradle 添加下面配置:
compile 'com.tbruyelle.rxpermissions:rxpermissions:0.7.0@aar' compile 'io.reactivex:rxjava:1.1.3' 二、使用说明1. 在清单文件中,添加 Dangerous Permissions
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECEIVE_MMS" /> <uses-permission android:name="android.permission.READ_CALL_LOG" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.READ_CALENDAR" />2. 申请单个权限
//请求单个权限 btn_request.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //这个请求事件我写在点击事件里面, //点击button之后RxPermissions会为我们申请运行时权限 RxPermissions.getInstance(MainActivity.this) .request(Manifest.permission.READ_CALENDAR)//这里填写所需要的权限 .subscribe(new Action1<Boolean>() { @Override public void call(Boolean aBoolean) { if (aBoolean) {//true表示获取权限成功(注意这里在android6.0以下默认为true) Log.i("permissions", Manifest.permission.READ_CALENDAR + ":" + 获取成功); } else { Log.i("permissions", Manifest.permission.READ_CALENDAR + ":" + 获取失败); } } }); } });效果图
3. 申请多个权限
//同时请求多个权限 RxPermissions.getInstance(MainActivity.this) .request(Manifest.permission.RECEIVE_MMS, Manifest.permission.READ_CALL_LOG)//多个权限用","隔开 .subscribe(new Action1<Boolean>() { @Override public void call(Boolean aBoolean) { if (aBoolean) { //当所有权限都允许之后,返回true Log.i("permissions", "btn_more_sametime:" + aBoolean); } else { //只要有一个权限禁止,返回false, //下一次申请只申请没通过申请的权限 Log.i("permissions", "btn_more_sametime:" + aBoolean); } } });效果图 4. 同时请求多个权限
//分别申请多个权限 RxPermissions.getInstance(MainActivity.this) //分别申请多个权限时,使用requestEach .requestEach(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA) .subscribe(new Action1<Permission>() { @Override public void call(Permission permission) { if (permission.name.equals(Manifest.permission.ACCESS_FINE_LOCATION)) { //当ACCESS_FINE_LOCATION权限获取成功时,permission.granted=true Log.i("permissions", Manifest.permission.ACCESS_FINE_LOCATION + ":" + permission.granted); } if (permission.name.equals(Manifest.permission.RECORD_AUDIO)) { //当RECORD_AUDIO 权限获取成功时,permission.granted=true Log.i("permissions", Manifest.permission.RECORD_AUDIO + ":" + permission.granted); } if (permission.name.equals(Manifest.permission.CAMERA)) { //当CAMERA权限获取成功时,permission.granted=true Log.i("permissions", Manifest.permission.CAMERA + ":" + permission.granted); } } });效果图
【Android--开源库】权限适配RxPermissions的基本使用由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【Android--开源库】权限适配RxPermissions的基本使用”