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

1 相关文档

官方文档:

https://github.com/googlesamples/easypermissions

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

https://developer.android.com/training/permissions/requesting.html

2 为什么使用Easypermissions

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

Normal and Dangerous Permissions解释:
https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous

如下图所示:

运行时权限申请

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

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 接收权限处理结果

@Override
public 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<String> list) {
// Some permissions have been granted
// ...
} //失败
@Override
public void onPermissionsDenied(int requestCode, List<String> list) {
// Some permissions have been denied
// ...
}

4 总结

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

作者:Tsy远
链接:https://www.jianshu.com/p/2b3661928e66
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

最新文章

  1. TODO:小程序开发环境搭建
  2. ftp文件上传下载实用命令
  3. android html.fromHtml 用例
  4. 百川即时通讯跨appkey问题解决
  5. MD5使用
  6. join 和 union 区别
  7. python备忘录
  8. SQL Server日期时间格式转换字符串详解
  9. 使用KnockoutJs+Bootstrap实现分页
  10. [Codeforces 940E]Cashback
  11. 【STM32H7教程】第12章 STM32H7的HAL库框架设计学习
  12. 十分钟学会Java8的lambda表达式和Stream API
  13. awk小例子_2_数值统计脚本
  14. 【机器学习_11】基础算法:KNN
  15. python-day7-静态方法、类方法、属性方法、特殊成员方法、反射、异常处理、socket
  16. 《用Python解决数据结构与算法问题》在线阅读
  17. 单点登录SSO的原理及实现方式总结
  18. Maven CXF wsdl2Java List&lt;Xxx&gt;生成ArrayOfXxx包装对象 解决方法
  19. artificial neural network in spark MLLib
  20. SpringBoot日记——MQ消息队列整合(一)

热门文章

  1. cmake编译选项
  2. C语言结构体数组内带字符数组初始化和赋值
  3. 基于apache —HttpClient的小爬虫获取网页内容
  4. 洛谷 P2261 [CQOI2007]余数求和
  5. 避免每次都用sudo使用docker
  6. mybatis springmvc velocity的demo
  7. MongoDB学习笔记—常用命令
  8. Happy Hours, Happy Days
  9. 【python】判断字符串以什么开头或结尾
  10. 剑指offer 面试19题