【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 简介 | 权限申请处理细节 | 添加依赖 | 界面权限申请结果处理 | 权限申请结果回调接口 )

简介: 【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 方法各一次 , 每个回调方法中都会显示同意或拒绝的若干个权限 ;


目录
相关文章
|
7月前
|
XML Java Maven
Android线条等待动画JMWorkProgress(可添加依赖直接使用)
这是一篇关于Android线条等待动画JMWorkProgress的教程文章,作者计蒙将其代码开源至GitHub,提升可读性。文章介绍了如何通过添加依赖库使用该动画,并详细讲解了XML与Java中的配置方法,包括改变线条颜色、宽度、添加文字等自定义属性。项目已支持直接依赖集成(`implementation &#39;com.github.Yufseven:JMWorkProgress:v1.0&#39;`),开发者可以快速上手实现炫酷的等待动画效果。文末附有GitHub项目地址,欢迎访问并点赞支持!
212 26
|
10月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
426 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
289 1
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
452 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a

热门文章

最新文章