文章目录

  • 一、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 权限申请库 ( 简介 | 权限申请处理细节 | 添加依赖 | 界面权限申请结果处理 | 权限申请结果回调接口 )相关推荐

  1. 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 最简单用法 | 一行代码搞定权限申请 | 推荐用法 )

    文章目录 一.添加依赖 二.在 AndroidManifest.xml 中配置权限 三.权限申请最简单用法 四.推荐使用的用法 五.GitHub 地址 上一篇博客 [Android 应用开发]Goog ...

  2. Android的非Google官方衍生品

    Android的非Google官方衍生品 什么是Android的Google官方衍生品 Android Wear Android Auto Android TV Android的非Google官方衍生 ...

  3. Android鬼点子-通过Google官方示例学NDK(4)

    如果你看遍了网上那些只是在C++里面输出一个 ' helloWorld ' 的NDK教程的话,可以看看本系列的文章,本系列是通过NDK的运用的例子来学习NDK. 如果对这方面感兴趣,可以看看前三篇. ...

  4. 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )

    文章目录 一.申请权限 二.申请权限原理对话框 三.引导用户手动设置权限对话框 四.在 AndroidManifest.xml 中配置权限 五.完整代码示例 六.GitHub 地址 一.申请权限 申请 ...

  5. 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 权限申请原理对话框操作回调接口 | 永久拒绝权限后引导设用户置权限 )

    文章目录 一.权限申请原理对话框操作回调接口 RationaleCallbacks 二.永久拒绝权限后引导设用户置权限 一.权限申请原理对话框操作回调接口 RationaleCallbacks 权限申 ...

  6. 【Android NDK 开发】NDK 交叉编译 ( NDK 函数库目录 | Linux 交叉编译环境搭建 | 指定头文件目录 | 指定函数库目录 | 编译 Android 命令行可执行文件 )

    文章目录 I . NDK platforms 目录下的 函数库 II . Ubuntu 配置 NDK 交叉编译环境 III . 同时指定编译的头文件和库文件 IV . 指定编译的头文件 V . 指定编 ...

  7. Tv开发 Google 官方demo leanback遇到的问题

    今天在跑Google针对tv开发出点框架 Leanback的时候,遇到一个问题,就是桌面上没有该appicon.刚开始以为安装不成功.后来发现是.桌面上没有该app的icon.这个问题以前也没有遇到过 ...

  8. 下载Android源码(Google官方文档翻译)

    懒人一个,最讨厌英文文档,可惜中文教程又都残缺不全,只好自己动手翻译一个,第一次翻译,各种错误,翻译不当之处希望大家指出. 原文地址:http://source.android.com/source/ ...

  9. Android NDK开发一 NDK环境搭建及cmake简介

    1 前言 关于NDK的介绍可以查看官方的介绍: https://developer.android.com/ndk/guides/index.html 一句话总结NDK:NDK(Native Deve ...

最新文章

  1. (转)PHP5使用cookie时报错 cannot modify header information - headers already sent by (......)
  2. Mysql字段类型选择
  3. view函数_数据科学系列:数据处理(6)字符串函数基于R(二)
  4. ML之catboost:基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两种方式)
  5. python数据分析第七章实训3_《利用python进行数据分析》读书笔记--第七章 数据规整化:清理、转换、合并、重塑(三)...
  6. 7-6 列出连通集 (25 分)(详解)
  7. 【Linux使用】Centos 7安装图形界面/切换文本界面与图形界面
  8. DIV制作浮在页面的窗口
  9. 2019 送给每位读者的几点拙见
  10. Html辅助方法(分页、下拉框)
  11. ImportError: cannot import name 'PILLOW_VERSION'
  12. linux 系统语言设置字体,Linux语言和字体的自定义设置
  13. 1030:计算球的体积
  14. 基于nRF24L01的一对多节点通信(一收多发)
  15. 分水岭算法和距离变换函数
  16. 薅羊毛的神器,悄悄介绍给你,低调使用!
  17. 现在玩cf的计算机配置要求,穿越火线电脑配置要求-玩CF所需的电脑配置
  18. php下载 微信头像图片_php微信公众号开发,获取用户头像,并下载
  19. 洛谷 P2057 善意的投票
  20. 一、slowfast 代码复现

热门文章

  1. 添加firefox4的deb源,直接安装
  2. gstreamer开发日志
  3. HDU 4023 (博弈 贪心 模拟) Game
  4. jQuery 图片剪裁插件初探之 Jcrop
  5. jQuery源码分析系列
  6. ORACLE DBA的职责
  7. .net常用技巧及调优
  8. 经常用到取整的函数,今天小小的总结一下!其实很简单,就是几个函数而已~~主要是:ceil,floor,round,intval...
  9. 思路:当一个表嵌套另一个表时候 只需在dao中引入该mapper即可 进行正常的数据插入 查询 修改等...
  10. Java程序员必备的Intellij插件