博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开源项目-Easypermissions
阅读量:7301 次
发布时间:2019-06-30

本文共 2473 字,大约阅读时间需要 8 分钟。

Easypermissions简化了Android M的运行时权限的申请、结果处理、判断等步骤。

1 相关文档

官方文档:

运行时权限官方文档解释:

2 为什么使用Easypermissions

Android M对权限系统进行了改变。Android M之前所需权限只需要在AndroidManifest中申请即可。但更新Android M系统后,部分“Dangerous Permission”需要在运行时询问申请。

Normal and Dangerous Permissions解释:

如下图所示:

运行时权限申请

代码中如果需要申请运行时权限步骤:

1 检查运行时权限

ContextCompat.checkSelfPermission(thisActivity,                Manifest.permission.READ_CONTACTS)        != PackageManager.PERMISSION_GRANTED

2 申请权限

ActivityCompat.requestPermissions(thisActivity,                new String[]{Manifest.permission.READ_CONTACTS},                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

3 接收权限处理结果

@Overridepublic void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case MY_PERMISSIONS_REQUEST_READ_CONTACTS: { // If request is cancelled, the result arrays are empty. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // permission was granted, yay! Do the // contacts-related task you need to do. } else { // permission denied, boo! Disable the // functionality that depends on this permission. } return; } // other 'case' lines to check for other // permissions this app might request } }

以上即是google建议的运行时权限处理过程。代码量和处理地方还是比较繁琐的。so,Easypermissions应运而生。

3 如何使用

首先,引用库

dependencies {  compile 'pub.devrel:easypermissions:0.1.9'}

同样,easypermissions处理权限分为3步。

1 检查权限

String[] perms = {Manifest.permission.CAMERA, Manifest.permission.CHANGE_WIFI_STATE};if (EasyPermissions.hasPermissions(this, perms)) {   //...     } else { //... }

2 申请权限

EasyPermissions.requestPermissions(this, "拍照需要摄像头权限",                    RC_CAMERA_AND_WIFI, perms);

3 实现EasyPermissions.PermissionCallbacks接口,直接处理权限是否成功申请

@Override    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); // Forward results to EasyPermissions EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } //成功 @Override public void onPermissionsGranted(int requestCode, List
list) { // Some permissions have been granted // ... } //失败 @Override public void onPermissionsDenied(int requestCode, List
list) { // Some permissions have been denied // ... }

4 总结

Easypermissions主要简化了对权限申请结果的处理和判断,直接以接口的方式回调处理结果。不需要再自行进行处理。

作者:Tsy远
链接:https://www.jianshu.com/p/2b3661928e66
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
你可能感兴趣的文章
JS代码片段整理
查看>>
根据出生日期计年龄
查看>>
Cracking the coding interview--Q2.3
查看>>
qt显示图片
查看>>
springboot整合kafka
查看>>
pku3020 Antenna Placement (解法1)
查看>>
nohup 命令(设置后台进程): appending output to ‘nohup.out’ 问题
查看>>
docker in all
查看>>
windows phone 8.0 app 移植到windows10 app 页面类
查看>>
Tar专题
查看>>
Http压测工具wrk使用指南
查看>>
全栈工程师?并没有什么卵用。每个人都应该去创业,不为别的,就为了健全你的人格(转)...
查看>>
既然选择了远方 便只顾风雨兼程
查看>>
tomcat、腾讯云主机和微信
查看>>
如何在同一台电脑上同时运行2个tomcat
查看>>
排序算法(1)—直接插入排序
查看>>
ubuntu下的第一个脚本file.sh
查看>>
DB1:数据库的创建和文件的修改
查看>>
分享几个在线生成网址二维码的API接口
查看>>
PHPExcel导出Excel文件
查看>>