Android处理6.0获取权限问题的第三方框架------开源项目-Easypermissions
来源:互联网 发布:零件设计软件手机 编辑:程序博客网 时间:2024/05/23 07:26
本人昨天要实现 手机拍照,相册选择功能的实现, 本以为很简单,把以前的代码拷贝过来就可以咯,但是在 6.0手机测试中,发现 点击手机拍照,直接崩溃咯。连错误信息都没提示。 特别烦人。 后来听朋友说,处理 6.0权限问题,可以使用谷歌退出的三方框架__———————— Easypermissions
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 接收权限处理结果
@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<String> list) { // Some permissions have been granted // ... } //失败 @Override public void onPermissionsDenied(int requestCode, List<String> list) { // Some permissions have been denied // ... }
4 总结
Easypermissions主要简化了对权限申请结果的处理和判断,直接以接口的方式回调处理结果。不需要再自行进行处理。
好用指数,5星!!!
结尾
本文 由 微信妈妈(公众号买卖ontaobao.cn) 编辑整理, 转载地址 http://www.jianshu.com/p/2b3661928e66- Android处理6.0获取权限问题的第三方框架------开源项目-Easypermissions
- Android权限处理——第三方库easypermissions使用
- Android 6.0动态权限框架EasyPermissions的使用
- Android开源项目-Easypermissions
- Android开源项目-Easypermissions
- Android开源项目-Easypermissions
- Android开源项目-Easypermissions
- Android开源项目-Easypermissions
- Android开源项目-Easypermissions
- 官方推荐的android 6.0 权限获取方式(实例demo:easypermissions)
- Android EasyPermissions官方库,高效处理权限
- 第三方框架 开源项目
- EasyPermissions解决Zxing扫一扫6.0权限问题
- Android 权限检查EasyPermissions
- Android 6.0多个权限申请,教你使用Google easypermissions框架,100%申请成功
- EasyPermissions android 权限框架 简单易用 稳定
- Andorid6.0动态权限及开源项目EasyPermissions使用介绍
- Android[第三方or官方]高质量实用【组件&开源项目&框架】集合贴
- socket服务器解决843端口策略文件的问题
- 基于vue.js重写Cnodejs.org社区的webapp
- Session 共享方案
- 远程连接并操作redis
- GitHub 上排名前 100 的 Android 开源库介绍
- Android处理6.0获取权限问题的第三方框架------开源项目-Easypermissions
- 表格模型事件Java
- linux下mysql定时全量备份
- postgresql 切换xlog日志
- poj2186--tarjan+缩点
- 自定义例外
- LA4287--tarjan
- Java并发修改异常ConcurrentModificationException
- poj1113--凸包