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

news/2024/7/7 12:24:05

可前往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 !
        }
    });



http://www.niftyadmin.cn/n/4581749.html

相关文章

GitLab 简单几步完成下载上传

文章针对 初次使用GitLab管理代码的developer角色的同学首先:从服务器下载代码到本地1:下载Git 2:下载TortioseGit 在官网可以下载对应的中文语言包安装3:点击GitLab对应项目内复制URL链接4:在开发项目的地方 右键点击…

【sgUploadTray】上传托盘自定义组件,可实时查看上传列表进度

【sgUploadTray】上传托盘自定义组件&#xff0c;可实时查看上传列表进度 特性&#xff1a; 可以全屏可以还原尺寸可以最小化可以回到右下角默认位置支持删除队列数据 sgUploadTray源码 <template><div :class"$options.name" :show"show" :size…

RTX3090和RTX A6000 的区别 哪个好

RTX 3090新显卡&#xff0c;采用7纳米制程工艺&#xff0c;拥有着24GB的大显存&#xff0c;显存规格是GDDR6X&#xff0c;显存速率达到了19.5Gbps&#xff0c;5248 CUDA内核&#xff0c;显存频率可达1725MHz&#xff0c;TDP为350W。 选RTX3090还是RTX A6000 这些点很重要!看完你…

ContentProvider 和ContentResolver内容提供者和内容解析者

内容提供程序管理对中央数据存储库的访问。提供程序是 Android 应用的一部分&#xff0c;通常提供自己的 UI 来使用数据。 但是&#xff0c;内容提供程序主要旨在供其他应用使用&#xff0c;这些应用使用提供程序客户端对象来访问提供程序。 提供程序与提供程序客户端共同提供一…

这可能是最详细的Python文件操作

删除 # 删除 # 只能删除文件&#xff0c;若为目录则报错 # 若文件正在使用&#xff0c;Windows下会直接报错&#xff0c;Linux下会在目录表中删除记录&#xff0c;但文件还在 # 与os.unlink()一样的作用 os.remove(r"C:\Users\Microsoft\Desktop\111.exe")# 删除目录…

i7-10870H和R5 4600H 的区别 哪个好

i7-10870H来自于i7-10875H&#xff0c;核心频率从2.3-5.1GHz降低到2.2-5.0GHz&#xff0c;也就是都调低100MHz&#xff0c;而其他规格不变&#xff0c;仍然维持8核心16线程、16MB三级缓存、UHD核芯显卡、45W热设计功耗。 选i7-10870H还是锐龙r5 4600H哪个好 这些点很重要!看完你…

开发速度快10倍!Airbnb用GraphQL+Apollo做到了

在上个月举行的GraphQL峰会上&#xff0c;我做了一场演讲&#xff0c;其中涉及很多实时编码演示&#xff0c;可以看一下视频回顾&#xff1a; https://youtu.be/JsvElHDuqoA 从参会者的反馈来看&#xff0c;人们非常惊讶我们的开发速度为什么会如此之快&#xff0c;但因为我没有…

使用GreenDao对数据库进行操作

在gradle中进行如下配置 buildscript {repositories {mavenCentral()}dependencies {classpath org.greenrobot:greendao-gradle-plugin:3.0.0} }apply plugin: org.greenrobot.greendaodependencies {compile org.greenrobot:greendao:3.0.1 } greenDAO特性 对象/关系映射(ORM…