一行代码获取Android运行时权限
RxPermissions获取动态权限
本文博客基于Rxpermissions,具体使用,请自己查看。
Rxjava获取动态权限是通过Rxpermissions获取动态权限的,在学习之前我封装了一个工具类为你提供使用。先看看效果
图片有些大别着急,慢慢看
toast自己写的,权限是获取成功的,只是安卓封装的不同。
虽然实现很简单,但是要获取很多权限的时候要写的代码比较多,而且特别难看,所以我封装了一下,实现一行代码实现。
获取一个权限(不重复写轮子)
//获取 permissionsUtils 对象
RxPermissions permissionsUtils = RxUtils.getInstance(this);
//获取xx权限
boolean camera1 = permissionsUtils.getPermissions1("xx");
就这简单使用。不是一行吗?(作弊一下)
boolean permissions1 = RxUtils.getInstance(this).getPermissions1("xx");
工具类在Demo里
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
正题开始
很简单接下看怎么写出来的,我拿打电话的代码举例,如果你需要测试能不能用,直接复制就可以了。(都写好了帮你快速测试)
依赖
导入Rxjava2的依赖,注意Rxjava和Rxjava2的不同,下面依赖是必要的
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation 'io.reactivex.rxjava2:rxjava:2.1.16'
implementation 'com.tbruyelle.rxpermissions2:rxpermissions:[email protected]'
清单列表
所需要的权限:比如打电话(需要什么权限,就写什么权限)
<uses-permission android:name="android.permission.CALL_PHONE" />
布局文件
功能简单就只有一个按钮
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".RxAndrod">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="电话"
/>
</LinearLayout>
代码
初始化RxPermissions对象
rxPermissions = new RxPermissions(this);
这个最好写个方法
rxPermissions.request(Manifest.permission.CALL_PHONE)
.subscribe(new Consumer<Boolean>() {
@SuppressLint("MissingPermission")
@Override
public void accept(Boolean aBoolean) throws Exception {
if (aBoolean) {
Intent intent = new Intent(Intent.ACTION_CALL);
Uri data = Uri.parse("tel:" + "10086");
intent.setData(data);
startActivity(intent);
} else {
Toast.makeText(RxAndrod.this, "电话获取权限", Toast.LENGTH_SHORT).show();
}
}
});
ok
以此类推所有权限都是这样获取,或者一组获取
如果你的测试手机荣耀10,安卓系统8.1的,有问题,请联系我。