Android6.0------权限申请RxPermissions

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

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

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

bulid.gradle引入:

  compile ‘com.tbruyelle.rxpermissions2:rxpermissions:[email protected]‘
  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来写的了,可以去看看这个库的代码。

案例源码下载

时间: 2024-08-02 14:38:51

Android6.0------权限申请RxPermissions的相关文章

Android6.0权限申请工具类

Android6.0以上,有部分权限是需要申请的.共9组,只要一个权限申请成功默认这一组的权限也申请成功,看下图: 权限申请工具类如下: 1 package com.example.android_lianshou_as.utils; 2 3 import android.Manifest; 4 import android.app.Activity; 5 import android.content.DialogInterface; 6 import android.content.Inten

Android6.0权限系统

Android6.0权限系统 Android权限系统是一个非常重要的安全问题,因为它只有在安装时会询问一次.一旦软件本安装之后,应用程序可以在用户毫不知情的情况下使用这些权限来获取所有的内容. 很多坏蛋会通过这个安全缺陷来收集用户的个人信息并使用它们来做坏事的情况就不足为奇了. Android团队也意识到了这个问题.在经过了7年后,权限系统终于被重新设置了.从Anroid 6.0(API Level 23)开始,应用程序在安装时不会被授予任何权限,取而代之的是在运行时应用回去请求用户授予对应的权

Android 6.0权限申请

 一.6.0发布权限变化 1.Android需要手动加入权限申请原因: 1)权限分为了两类:一类是Normal Permissions,这类权限一般不涉及用户隐私,是不需要用户进行授权的,比如手机震动.访问网络等:另一类是Dangerous Permission,一般是涉及到用户隐私的,需要用户进行授权,比如读取sdcard.访问通讯录等. Normal Permissions如下 ACCESS_LOCATION_EXTRA_COMMANDS ACCESS_NETWORK_STATE ACCES

1.Android6.0运行时权限简介_2.Android6.0权限适配之WRITE_EXTERNAL_STORAGE(SD卡写入)3_.Android 6.0 运行时权限理解

Android6.0运行时权限简介:http://unclechen.github.io/2016/03/05/Android6.0%E8%BF%90%E8%A1%8C%E6%97%B6%E6%9D%83%E9%99%90%E7%AE%80%E4%BB%8B/ Android6.0权限适配之WRITE_EXTERNAL_STORAGE(SD卡写入):https://blog.csdn.net/xiechengfa/article/details/52699233 Android 6.0 运行时权

Android拍照,相册选择图片以及Android6.0权限管理

概述 在android开发过程中,拍照或者从相册中选择图片是很常见的功能.下面要说得这个案例比较简单,用户点击按钮选择拍照或者打开相册选择图片,然后将选中的图片显示在手机上.android6.0后,推出了动态权限管理.以往我们将涉及到的权限全部写在清单文件中,只要用户安装了该程序,程序在运行过程中都会获得相应权限.android6.0后,对于一些特别敏感的权限,开发者必须在程序中进行声明.拍照和从相册选择图片都是涉及到用户隐私的敏感权限,必须在程序中进行声明. 大概的流程 创建布局文件,这里不多

android6.0权限管理工具EasyPermissionUtil

前言 android6.0開始,权限的申请发生了改变,申请变的动态化,也就是执行时权限,和iOS相仿,动态化的意思是指,在每次使用须要危急权限的方法的时候.须要检查程序是否获得了该权限的许可.动态化的权限申请能够让用户更加清晰的知道程序须要什么权限.以及程序中哪些地方的操作须要涉及用户安全. 不再是只在程序安装的时候,一次性把所须要的普通的.危急级别的权限一次性列出来.然后展示给用户. 当project项目的target Sdk为23时,因为考虑到用户假设没有进行权限的动态检查,那么在执行到须要

Android6.0权限管理以及使用权限该注意的地方

Android 6.0 Marshmallow首次增加了执行时权限管理,这对用户来说,能够更好的了解.控 制 app 涉及到的权限.然而对开发人员来说却是一件比較蛋疼的事情.须要兼容适配,并保证程序功能的正常执行. 什么叫执行时权限管理呢?在Android 6.0以下的系统中,当我们在安装应用的时候,该应用就会提示我们这个应用所须要的权限,假设你要安装.那就必须允许赋予全部权限,可是假设不允许,那就仅仅能取消安装了,有点流氓.并且安装完后,你不能够收回这个权限. 而6.0就做到了执行时权限管理.

Android6.0权限管理

Android 6.0 Marshmallow首次加入了运行时权限管理,这对用户来说,可以更好的了解.控 制 app 涉及到的权限.然而对开发者来说却是一件比较蛋疼的事情,需要兼容适配,并保证程序功能的正常运行. 什么叫运行时权限管理呢?在Android 6.0以下的系统中,当我们在安装应用的时候,该应用就会提示我们这个应用所需要的权限,如果你要安装,那就必须同意赋予所有权限,但是如果不同意,那就只能取消安装了,有点流氓.而且安装完后,你不可以收回这个权限. 而6.0就做到了运行时权限管理,即使

Android6.0权限组申请

void checkPermission() { final List<String> permissionsList = new ArrayList<>(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if ((checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)) per