使用RxPermission框架对android6.0权限进行检测

Posted 和平world

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用RxPermission框架对android6.0权限进行检测相关的知识,希望对你有一定的参考价值。

可前往Github上进行查看相关DEMO

https://github.com/tbruyelle/RxPermissions

如果想用RxPermissionminSdkVersion 必须大于等于9.

在gradle中添加如下代码

repositories 
    jcenter() // If not already there


dependencies 
    compile 'com.tbruyelle.rxpermissions:rxpermissions:0.7.0@aar'
举个例子

// Must be done during an initialization phase like onCreate
RxPermissions.getInstance(this)
    .request(Manifest.permission.CAMERA)
    .subscribe(granted -> 
        if (granted)  // Always true pre-M
           // I can control the camera now
         else 
           // Oups permission denied
        
    );
如果你想要在一个特殊事件中触发权限申请,你需要在你的初始化段落里,将这个事件订阅。

你可以使用 JakeWharton/RxBinding 把你的view订阅为一个观察者。

举例

// Must be done during an initialization phase like onCreate
RxView.clicks(findViewById(R.id.enableCamera))
    .compose(RxPermissions.getInstance(this).ensure(Manifest.permission.CAMERA))
    .subscribe(granted -> 
        // R.id.enableCamera has been clicked
    );
如果同时有多个权限请求,结果如下

RxPermissions.getInstance(this)
    .request(Manifest.permission.CAMERA,
             Manifest.permission.READ_PHONE_STATE)
    .subscribe(granted -> 
        if (granted) 
           // All requested permissions are granted
         else 
           // At least one permission is denied
        
    );
你也可以用 requestEach和  ensureEach  订阅具体的结果。

RxPermissions.getInstance(this)
    .requestEach(Manifest.permission.CAMERA,
             Manifest.permission.READ_PHONE_STATE)
    .subscribe(permission ->  // will emit 2 Permission objects
        if (permission.granted) 
           // `permission.name` is granted !
        
    );


以上是关于使用RxPermission框架对android6.0权限进行检测的主要内容,如果未能解决你的问题,请参考以下文章

Android6.0运行时权限(基于RxPermission开源库)

RxJava 学习笔记

Android6.0执行时权限解析,RxPermissions的使用,自己封装一套权限框架

干掉RxJava系列--1. 手写权限请求替代RxPermission

权限系列:使用RxPermission申请权限

android6.0源码分析之Camera API1.0框架简介