RxPermisson使用解析

导入Lambda表达式

使用RxPermisson使用Lambda表达式能够表述的更加清晰
具体导入方式:
先确定使用的JAVA版本是不是1.8的。
通过File-Other Settings-> Default Project Structure查看

在外层build.gradle里添加

 dependencies {
        classpath 'me.tatarka:gradle-retrolambda:3.2.0'
        }

在内层的build.gradle里添加

apply plugin: 'me.tatarka.retrolambda'

在android{}里添加

 compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

这样就能使用Lambda表达式了

RxPermisson导入

这里跟RxJava2配合使用

  compile 'io.reactivex.rxjava2:rxjava:2.1.1'
  compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
  compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'

如果使用的版本是RxJava1,可以参考
https://github.com/tbruyelle/RxPermissions

具体用法

先获取RxPermission 实例

RxPermission  rxPermissions =  new RxPermissions(this);

接着我们申请一个权限

rxPermissions.request( Manifest.permission.READ_PHONE_STATE)
             .subscribe(granted->{
                 if(granted){
                  Toast.makeText(SecondActivity.this,"授权成功",Toast.LENGTH_SHORT).show();
                 }else{
                  Toast.makeText(SecondActivity.this,"授权失败",Toast.LENGTH_SHORT).show();
                        }
                     });

这样就能够动态获取一个权限。

接下来我们申请两个权限,当然对每个权限都是单独申请

  rxPermissions
                .requestEach(Manifest.permission.WRITE_EXTERNAL_STORAGE,
                        Manifest.permission.READ_PHONE_STATE)
                .subscribe(permission -> {
                    if (permission.granted) {
                        // `permission.name` is granted !
                        Toast.makeText(SecondActivity.this,"授权成功",Toast.LENGTH_SHORT).show();
                    } else if (permission.shouldShowRequestPermissionRationale){
                        Toast.makeText(SecondActivity.this,"授权失败1",Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(SecondActivity.this,"授权失败2",Toast.LENGTH_SHORT).show();
        }
                });

这里不使用大多数博客使用的 Manifest.permission.CAMERA,因为有的小伙伴可能这里会出现授权的失败的情况,解决办法:
在AndroidManifest.xml里添加

 <uses-permission android:name="android.permission.CAMERA"/>
 rxPermissions.request(Manifest.permission.CAMERA)
              .subscribe(granted->{
              if(granted){
                  Toast.makeText(SecondActivity.this,"授权成功",Toast.LENGTH_SHORT).show();
               }else{
                  Toast.makeText(SecondActivity.this,"授权失败",Toast.LENGTH_SHORT).show();
                     }
        });

之后再去获取权限就成功了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值