权限动态适配(三)
来源:互联网 发布:淘宝地址错了怎么改 编辑:程序博客网 时间:2024/06/06 19:32
功能
5.0、6.0动态权限适配。
说明
该项目基于hongyangAndroid的MPermissions进行二次开发。采用编译时注解,较运行时注解效率高。最初纯粹作为Andriod 编译时注解项目使用,较原项目有如下升级:
支持java8
支持一行代码同步请求多权限
支持多种回调函数,代码更简洁
支持国产机型适配
支持国产机型5.0权限申请
概述
解决
ActivityCompat.shouldShowRequestPermissionRationale(Activity, String)
无法弹出权限申请对话框问题。解决显示授权失败却回调权限申请成功方法问题。
解决用户拒绝后不再提示权限申请对话框问题。
解决5.0权限申请问题。
使用文档
必加二次权限申请回调(#must_add)
接口回调(#annotation)
单个权限申请(#single)
多个权限同步申请(#mutli)
Listener回调(#listener)
单个权限申请(#sinlge_listener)
多个权限同步申请(#mutli_listener)
具体用法
引入依赖
project中build.gradle
allprojects { repositories { // 添加下行 maven { url 'https://jitpack.io' } }}
app中build.gradle
dependencies { compile 'com.github.jokermonn:permissions4m:2.1.0-lib' annotationProcessor 'com.github.jokermonn:permissions4m:2.1.0-processor'}
- 查看具体代码
注意
申请权限方法不可在
onResume()
中使用,否则会陷入死循环,无限输出Toast信息。同步申请默认强制申请
requestForce(true)
,同步申请不支持@PermissionsNonRationale
。目前针对主流权限强制对话框弹出已基本完成,对涉及使用以下权限代码暂并未完善。
Manifest.permission.GET_ACCOUNTS
Manifest.permission.USE_SIP
Manifest.permission.ADD_VOICEMAIL
Manifest.permission.WRITE_CALENDAR
Manifest.permission.CAMERA
Manifest.permission.SEND_SMS
Manifest.permission.RECEIVE_WAP_PUSH
Manifest.permission.RECEIVE_MMS
Manifest.permission.RECEIVE_SMS
目前小米通讯录授权失败原因有两种:
用户手机中不存在联系人
用户拒绝授权(建议针对小米机型做出相应提示)
同步申请不支持
@PermissionsNonRationale
/PermissionPageListener
回调(假设同步申请权限A -> B -> C,当B被拒时,应弹出跳转权限对话框还是申请权限C对话框?)不支持权限组申请是因国产手机有部分适配畸形。虽可一组权限格式进行申请授权,但却可分别关闭同组权限内单个权限。若针对被拒权限做回调,则代码显冗余。
官方文档
在运行时请求权限
完整代码
https://github.com/snpmyn/PermissionDynamicThree.git
原著
http://mp.weixin.qq.com/s/23N-ouoalLc_IKsPSZEJgw
- 权限动态适配(三)
- 6.0权限动态适配(五)
- springBoot+springSecurity 动态管理Restful风格权限(三)
- springBoot+springSecurity 动态管理Restful风格权限(三)
- 6.0权限动态适配(一)(存在问题)
- 6.0权限动态适配(二)(存在问题)
- 6.0权限动态适配(四)(存在问题)
- 关于miui6.0动态权限适配
- Android 6.0动态权限适配
- 漫聊android适配动态权限机制
- BaseActivity中封装权限动态适配
- 安卓棉花糖动态权限适配
- 权限管理系统(三)
- 动态权限
- 动态权限
- 动态权限
- 动态权限
- Android运行时权限(6,0后动态权限)
- 2. 数据分割
- Retrofit2 配置Https 工具类
- 虚拟机搭建lnmp开发环境供windows开发调试
- js function myfun(){} var myfun =function(){} 区别
- 落单的数
- 权限动态适配(三)
- 简单的socket通信
- log4j.properties 详解与配置步骤
- MVC框架与MVT框架详解(更新完善中...)
- 中文分词原理与实现
- laravel5.4 微信网页授权
- ListView[1] 显示效果
- leetcode 657. Judge Route Circle(C语言)
- 【错误解决】SpringBoot邮件服务的一些错误及其解决方案