天天看点

Android权限管理PermissionsDispatcher2.3.2使用+原生6.0权限使用PermissionsDispatcher2.3.2使用使用步骤:原生6.0权限使用补充

Android6.0权限官网 <a href="https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html?hl=zh-cn" target="_blank">https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html?hl=zh-cn</a> 系统权限: <a href="https://developer.android.com/training/permissions/index.html?hl=zh-cn" target="_blank">https://developer.android.com/training/permissions/index.html?hl=zh-cn</a> 权限的最佳做法: <a href="https://developer.android.com/training/permissions/best-practices.html?hl=zh-cn#testing" target="_blank">https://developer.android.com/training/permissions/best-practices.html?hl=zh-cn#testing</a> 该库的github地址 <a href="https://github.com/hotchemi/PermissionsDispatcher" target="_blank">https://github.com/hotchemi/PermissionsDispatcher</a>
Android权限管理PermissionsDispatcher2.3.2使用+原生6.0权限使用PermissionsDispatcher2.3.2使用使用步骤:原生6.0权限使用补充

权限

使用PermissionsDispatcher,需要在project的 build.gradle中添加

在app module中的build.gradle中添加:

目前${latest.version}

最新的是2.3.2。

在工程目录下build.gradle 文件中添加:

然后在app module中的build.gradle中添加:(必须在app module中添加)

PermissionsDispatcher只介绍几个注解,保持其通用API简洁:

注:带注释的方法一定不能private。

注解

需要

描述

@RuntimePermissions

在Activity或者Fragment中需要添加,来处理权限的问题

@NeedsPermission

注释其执行需要一个或多个许可的作用的方法(当用户授予了权限之后,会调用使用此注解的方法)

@OnShowRationale

注释这解释了为什么需要许可/秒/方法。它通过在一个PermissionRequest可用于继续或中止在用户输入的当前的许可请求对象

@OnPermissionDenied

注释这是调用的方法,如果用户不授予的权限

@OnNeverAskAgain

注释如果用户选择让设备“不再询问”有关许可被调用的方法

具体使用如下:

Activity继承了AppCompatActivity,是的,如果使用PermissionsDispatcher进行权限管理,那么Activity就要继承AppCompatActivity。这就要使用到了兼容包里的类了。同样此时相应Activity中使用的主题,也需要进行修改,修改成相应兼容包里的主题。

在编译时,PermissionsDispatcher产生的一类MainActivityPermissionsDispatcher([活动名称] + PermissionsDispatcher),您可以使用安全地访问这些许可保护的方法。

MainActivityPermissionsDispatcher需要自己编译才会有:

1、AndroidManifest

2、在注解的时候添加sdk版本控制

使用到的权限需要在Mnifest里面注册

PermissionsDispatcher依赖于support-v4由默认库,以便能够使用一些权限compat的类。

需要添加support-v13库一起PermissionsDispatcher在您的项目,它将使原生片段支持

另请参阅

<a href="https://developer.android.com/about/versions/marshmallow/android-6.0.html?hl=zh-cn" target="_blank">Android 6.0 API 概览</a>

Android 6.0(API 级别 23)除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。

如果您之前发布过 Android 应用,请注意您的应用可能受到这些平台变更的影响。

此版本引入了一种新的权限模式,如今,用户可直接在运行时管理应用权限。这种模式让用户能够更好地了解和控制权限,同时为应用开发者精简了安装和自动更新过程。用户可为所安装的各个应用分别授予或撤销权限。

方法。即使您的应用并不以 Android 6.0(API 级别 23)为目标平台,您也应该在新权限模式下测试您的应用。

1、在AndroidManifest文件中添加需要的权限。

这个步骤和我们之前的开发并没有什么变化,试图去申请一个没有声明的权限可能会导致程序崩溃。

2、检查权限

这里涉及到一个API,ContextCompat.checkSelfPermission,主要用于检测某个权限是否已经被授予,方法返回值为PackageManager.PERMISSION_DENIED或者PackageManager.PERMISSION_GRANTED。当返回DENIED就需要进行申请授权了。

3、申请授权

该方法是异步的,第一个参数是Context;第二个参数是需要申请的权限的字符串数组;第三个参数为requestCode,主要用于回调的时候检测。可以从方法名requestPermissions以及第二个参数看出,是支持一次性申请多个权限的,系统会通过对话框逐一询问用户是否授权。

4、处理权限申请回调

首先验证requestCode定位到你的申请,然后验证grantResults对应于申请的结果,这里的数组对应于申请时的第二个权限字符串数组。如果你同时申请两个权限,那么grantResults的length就为2,分别记录你两个权限的申请结果。如果申请成功,就可以做你的事情了~

作者:流水潺湲

链接:http://www.jianshu.com/p/d299f22dfbdb

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

现在网上不少关于权限的库,可以直接用的,在GitHub上搜索即可

<a href="https://github.com/search?o=desc&amp;q=android+permission&amp;s=stars&amp;type=Repositories&amp;utf8=%E2%9C%93" target="_blank">https://github.com/search?o=desc&amp;q=android+permission&amp;s=stars&amp;type=Repositories&amp;utf8=%E2%9C%93</a>

继续阅读