【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 简介 | 权限申请处理细节 | 添加依赖 | 界面权限申请结果处理 | 权限申请结果回调接口 )
文章目录
- 一、EasyPermissions 简介
- 二、EasyPermissions 权限申请处理细节
- 三、添加 EasyPermissions 依赖
- 四、权限申请结果处理 方法 onRequestPermissionsResult
- 五、权限申请结果回调接口 PermissionCallbacks
一、EasyPermissions 简介
EasyPermissions 是一个权限申请库 , 可以简化在 Android M 6.0 ( API Level 23 ) 及以上系统中的基本权限的动态申请操作 ;
GitHub 页面 : Github/EasyPermissions
发布版本页面 : EasyPermissions 发布版本下载
EasyPermissions 是 谷歌官方推荐 的动态权限申请库 ;
二、EasyPermissions 权限申请处理细节
权限申请处理细节 :
① 用户同意权限申请 : 一般情况下 结合 @AfterPermissionGranted 注解使用 , 该注解的作用是 , 如果指定的权限用户全部授权 , 那么再次回调该方法 , 执行实际的需要该权限的操作 ;
② 用户拒绝权限申请 : 用户之前拒绝了权限申请 , 再次申请时会弹出 权限申请原理对话框 , 让用户了解申请该权限的原因 ;
③ 用户永久拒绝权限申请 : 用户之前已经禁止询问权限申请 , 即永久拒绝了权限申请 , 此时需要弹出 引导用户设置权限对话框 , 该对话框的作用是 , 跳转到设置界面的权限设置页面 , 让用户自行设置权限 , 此时无法以 应用内对话框的形式设置权限 ;
三、添加 EasyPermissions 依赖
在 Module 级别的 build.gradle 中进行如下配置 :
dependencies {// 使用 Android X 的应用添加该依赖implementation 'pub.devrel:easypermissions:3.0.0'// 使用 Android Support Library 支持库 , 添加该依赖implementation 'pub.devrel:easypermissions:2.0.1'
}
注意 使用不同的支持库 , 需要配置不同的 EasyPermissions 依赖库 ;
- 使用 Android X : 需要添加 3.0.0 版本的依赖 ;
- 使用 Android Support Library 支持库 : 需要添加 2.0.1 版本的依赖 ;
四、权限申请结果处理 方法 onRequestPermissionsResult
在 Activity 中需要实现 onRequestPermissionsResult 方法 , 用于处理权限申请结果 , 如 : 用户点击同意后的后续操作 , 用户点击拒绝后的后续操作 , 都需要通过该接口通知 EasyPermissions , EasyPermissions 收到结果后 , 会回调相关的回调函数 ;
/*** 1. 重写 Activity 的 onRequestPermissionsResult 方法* 主要是在该方法中使用 EasyPermissions 进一步处理权限申请后续结果*/override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray){super.onRequestPermissionsResult(requestCode, permissions, grantResults)// 进一步使用 EasyPermissions 处理后续结果EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);}
五、权限申请结果回调接口 PermissionCallbacks
权限申请结果回调接口 PermissionCallbacks :
① 接口方法 :
/*** EasyPermissions.requestPermissions() 方法执行结果的回调接口*/public interface PermissionCallbacks extends ActivityCompat.OnRequestPermissionsResultCallback {void onPermissionsGranted(int requestCode, @NonNull List<String> perms);void onPermissionsDenied(int requestCode, @NonNull List<String> perms);}
② 申请单个权限成功 : 回调 onPermissionsGranted 方法 , perms 参数是请求成功的权限字符串集合 ;
③ 申请单个权限失败 : 回调 onPermissionsDenied方法 , perms 参数是请求失败的权限字符串集合 ;
④ 申请多个权限 : 如果申请 5 个权限 , 3 个同意 , 2 个拒绝 , 那么就会 回调 onPermissionsGranted 和 onPermissionsDenied 方法各一次 , 每个回调方法中都会显示同意或拒绝的若干个权限 ;
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 简介 | 权限申请处理细节 | 添加依赖 | 界面权限申请结果处理 | 权限申请结果回调接口 )相关推荐
- 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 最简单用法 | 一行代码搞定权限申请 | 推荐用法 )
文章目录 一.添加依赖 二.在 AndroidManifest.xml 中配置权限 三.权限申请最简单用法 四.推荐使用的用法 五.GitHub 地址 上一篇博客 [Android 应用开发]Goog ...
- Android的非Google官方衍生品
Android的非Google官方衍生品 什么是Android的Google官方衍生品 Android Wear Android Auto Android TV Android的非Google官方衍生 ...
- Android鬼点子-通过Google官方示例学NDK(4)
如果你看遍了网上那些只是在C++里面输出一个 ' helloWorld ' 的NDK教程的话,可以看看本系列的文章,本系列是通过NDK的运用的例子来学习NDK. 如果对这方面感兴趣,可以看看前三篇. ...
- 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )
文章目录 一.申请权限 二.申请权限原理对话框 三.引导用户手动设置权限对话框 四.在 AndroidManifest.xml 中配置权限 五.完整代码示例 六.GitHub 地址 一.申请权限 申请 ...
- 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 权限申请原理对话框操作回调接口 | 永久拒绝权限后引导设用户置权限 )
文章目录 一.权限申请原理对话框操作回调接口 RationaleCallbacks 二.永久拒绝权限后引导设用户置权限 一.权限申请原理对话框操作回调接口 RationaleCallbacks 权限申 ...
- 【Android NDK 开发】NDK 交叉编译 ( NDK 函数库目录 | Linux 交叉编译环境搭建 | 指定头文件目录 | 指定函数库目录 | 编译 Android 命令行可执行文件 )
文章目录 I . NDK platforms 目录下的 函数库 II . Ubuntu 配置 NDK 交叉编译环境 III . 同时指定编译的头文件和库文件 IV . 指定编译的头文件 V . 指定编 ...
- Tv开发 Google 官方demo leanback遇到的问题
今天在跑Google针对tv开发出点框架 Leanback的时候,遇到一个问题,就是桌面上没有该appicon.刚开始以为安装不成功.后来发现是.桌面上没有该app的icon.这个问题以前也没有遇到过 ...
- 下载Android源码(Google官方文档翻译)
懒人一个,最讨厌英文文档,可惜中文教程又都残缺不全,只好自己动手翻译一个,第一次翻译,各种错误,翻译不当之处希望大家指出. 原文地址:http://source.android.com/source/ ...
- Android NDK开发一 NDK环境搭建及cmake简介
1 前言 关于NDK的介绍可以查看官方的介绍: https://developer.android.com/ndk/guides/index.html 一句话总结NDK:NDK(Native Deve ...
最新文章
- (转)PHP5使用cookie时报错 cannot modify header information - headers already sent by (......)
- Mysql字段类型选择
- view函数_数据科学系列:数据处理(6)字符串函数基于R(二)
- ML之catboost:基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两种方式)
- python数据分析第七章实训3_《利用python进行数据分析》读书笔记--第七章 数据规整化:清理、转换、合并、重塑(三)...
- 7-6 列出连通集 (25 分)(详解)
- 【Linux使用】Centos 7安装图形界面/切换文本界面与图形界面
- DIV制作浮在页面的窗口
- 2019 送给每位读者的几点拙见
- Html辅助方法(分页、下拉框)
- ImportError: cannot import name 'PILLOW_VERSION'
- linux 系统语言设置字体,Linux语言和字体的自定义设置
- 1030:计算球的体积
- 基于nRF24L01的一对多节点通信(一收多发)
- 分水岭算法和距离变换函数
- 薅羊毛的神器,悄悄介绍给你,低调使用!
- 现在玩cf的计算机配置要求,穿越火线电脑配置要求-玩CF所需的电脑配置
- php下载 微信头像图片_php微信公众号开发,获取用户头像,并下载
- 洛谷 P2057 善意的投票
- 一、slowfast 代码复现
热门文章
- 添加firefox4的deb源,直接安装
- gstreamer开发日志
- HDU 4023 (博弈 贪心 模拟) Game
- jQuery 图片剪裁插件初探之 Jcrop
- jQuery源码分析系列
- ORACLE DBA的职责
- .net常用技巧及调优
- 经常用到取整的函数,今天小小的总结一下!其实很简单,就是几个函数而已~~主要是:ceil,floor,round,intval...
- 思路:当一个表嵌套另一个表时候 只需在dao中引入该mapper即可 进行正常的数据插入 查询 修改等...
- Java程序员必备的Intellij插件