一行代码获取Android运行时权限

RxPermissions获取动态权限

本文博客基于Rxpermissions,具体使用,请自己查看。

Rxjava获取动态权限是通过Rxpermissions获取动态权限的,在学习之前我封装了一个工具类为你提供使用。先看看效果

一行代码获取Android运行时权限

图片有些大别着急,慢慢看

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

以此类推所有权限都是这样获取,或者一组获取

github上--- RxjavaDemo

如果你的测试手机荣耀10,安卓系统8.1的,有问题,请联系我。