zoukankan      html  css  js  c++  java
  • Android6.0------权限申请RxPermissions

    前面写了Android6.0权限介绍和权限单个,多个申请,用的是纯Java代码,本文主要说的是借助第三方库来实现权限申请。

    借助第三方库 RxPermissions来申请6.0权限。

    RxPermissions库地址:https://github.com/tbruyelle/RxPermissions

    bulid.gradle引入:

      compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'
      compile "io.reactivex.rxjava2:rxjava:2.0.0"

    权限相关知识,权限表请看博客: Android6.0------权限管理          Android6.0------权限申请管理(单个权限和多个权限申请)

    前提:APP运行在Android 6.0 (API level 23)或者更高级别的设备中,而且targetSdkVersion>=23时,系统将会自动采用动态权限管理策略,

    先来看看效果图:(注:如果未授权就点击打电话或拍照就会直接闪退,由此6.0必须手动授权,开发时如果未授权,可以判断并提示用户从新授权

            

    上图:

    1:单个授权,电话授权。

    2:有电话,SD卡,拍照授权三个一起授权

    单个授权

     

     //检查版本是否大于M
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                       //单个权限
    
                        rxPermissions.request(Manifest.permission.CAMERA)
                                .subscribe(new Observer<Boolean>() {
                                    @Override
                                    public void onSubscribe(Disposable d) {
    
                                    }
                                    @Override
                                    public void onNext(Boolean value) {
                                        if(value){
                                            showToast("同意权限");
                                        }else {
                                            showToast("拒绝权限");
                                        }
                                    }
    
                                    @Override
                                    public void onError(Throwable e) {
    
                                    }
    
                                    @Override
                                    public void onComplete() {
    
                                    }
                                });
                    }

    多个授权

            rxPermissions.requestEach(Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CALL_PHONE)
                             .subscribe(new Observer<Permission>() {
                                @Override
                                public void onSubscribe(Disposable d) {
    
                                }
                                @Override
                                public void onNext(Permission permission) {
    
                                    if (permission.name.equals(Manifest.permission.CAMERA)){
                                        showToast("申请成功");
                                    }
                                }
                                @Override
                                public void onError(Throwable e) {
    
                                }
    
                                @Override
                                public void onComplete() {
    
                                }
                            });

    前提一定要注意:AndroidManifest中:

      <uses-permission android:name="android.permission.CALL_PHONE"/>  //电话
      <uses-permission android:name="android.permission.CAMERA"/>    //拍照
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>     //sd卡

    此案例是借助第三方RxPermissions来写的了,可以去看看这个库的代码。

    案例源码下载

  • 相关阅读:
    面向对象高级
    面向对象进阶
    python文件的两种用途
    python常用模块
    模块的搜索路径
    循环导入问题
    模块的导入
    面向过程编程
    函数及嵌套函数调用
    python文件操作详解
  • 原文地址:https://www.cnblogs.com/zhangqie/p/7574174.html
Copyright © 2011-2022 走看看