这也许是Android一句话权限适配的更优解决方案
SoulPermission
Android一行代码权限的更优解决方案:
- 解耦Activity和Fragment、不再需要Context、不再需要onPermissionResult
- 内部涵盖版本判断,一行代码解决权限相关操作,无需在调用业务方写权限适配代码,继而实现真正调用时请求的“真运行时权限”
- 接入成本低,零入侵,仅需要在gradle配置一行代码
- 支持多项权限同时请求
- 支持检查通知权限
- 支持系统权限页面跳转
- 支持debug模式
Installation:
dependencies {implementation 'com.qw:soulpermission:1.1.3'
}
Usage:
基本用法:
- 一句话版本完成自动判断、权限检查、请求、后续操作:
SoulPermission.getInstance().checkAndRequestPermission(Manifest.permission.ACCESS_FINE_LOCATION,//if you want do noting or no need all the callbacks you may use SimplePermissionAdapter insteadnew CheckRequestPermissionListener() {@Overridepublic void onPermissionOk(Permission permission) {Toast.makeText(ApiGuideActivity.this, permission.toString() +"\n is ok , you can do your operations", Toast.LENGTH_SHORT).show();}@Overridepublic void onPermissionDenied(Permission permission) {Toast.makeText(ApiGuideActivity.this, permission.toString() +" \n is refused you can not do next things", Toast.LENGTH_SHORT).show();}});
- 也可以一次请求多项权限
SoulPermission.getInstance().checkAndRequestPermissions(Permissions.build(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE),//if you want do noting or no need all the callbacks you may use SimplePermissionsAdapter insteadnew CheckRequestPermissionsListener() {@Overridepublic void onAllPermissionOk(Permission[] allPermissions) {Toast.makeText(ApiGuideActivity.this, allPermissions.length + "permissions is ok" +" \n you can do your operations", Toast.LENGTH_SHORT).show();}@Overridepublic void onPermissionDenied(Permission[] refusedPermissions) {Toast.makeText(ApiGuideActivity.this, refusedPermissions[0].toString() +" \n is refused you can not do next things", Toast.LENGTH_SHORT).show();}});
- 包含shouldShowRequestPermissionRationale的情形
SoulPermission.getInstance().checkAndRequestPermission(Manifest.permission.READ_CONTACTS,new CheckRequestPermissionListener() {@Overridepublic void onPermissionOk(Permission permission) {Toast.makeText(ApiGuideActivity.this, permission.toString() +"\n is ok , you can do your operations", Toast.LENGTH_SHORT).show();}@Overridepublic void onPermissionDenied(Permission permission) {// see CheckPermissionWithRationaleAdapterif (permission.shouldRationale()) {Toast.makeText(ApiGuideActivity.this, permission.toString() +" \n you should show a explain for user then retry ", Toast.LENGTH_SHORT).show();} else {Toast.makeText(ApiGuideActivity.this, permission.toString() +" \n is refused you can not do next things", Toast.LENGTH_SHORT).show();}}});
- 检查某项权限
//you can also use checkPermissions() for a series of permissions
Permission checkResult = SoulPermission.getInstance().checkSinglePermission(Manifest.permission.ACCESS_FINE_LOCATION);
- 检查特殊权限[通知权限]
boolean checkResult = SoulPermission.getInstance().checkSpecialPermission(Special.NOTIFICATION);
- 跳转到应用设置页
SoulPermission.getInstance().goPermissionSettings();
- 设置debug模式(看日志打印)
SoulPermission.setDebug(true);
注意事项:
- 最低支持Android 4.0(Api level 14)
- SoulPermission内部自动初始化,如果你项目中使用了Tinker等使用了替换Application方式从而可能会导致SoulPermission内部初始化失败的框架(打开debug通过在任意页面请求权限可以通过日志看到是否初始化失败),请手动在你的Application类中调用init即可。
//invoke init in your application when auto init failed
public class SimpleApplication extends Application {@Overridepublic void onCreate() {super.onCreate();//no necessarySoulPermission.init(this);}
}
- 如果需要在某个页面创建时候请求权限,请在onCreate()中使用、请不要在onResume()调用,否则权限未被动态授予前会陷入死循环。
Screenshot:
MoreDetail:
工作原理和最佳示例
项目参考地址:https://github.com/soulqw/SoulPermission
这也许是Android一句话权限适配的更优解决方案相关推荐
- android m权限工具类,android M权限适配,简单工具类
很简单没什么说的, 因为项目大了,不能轻易引入第三方库,同时确实也没必要为了适配下权限就引入一个库. 这里写了个处理权限的工具类(部分借鉴的,勿喷),不嫌弃的话拿去! 用法: 1.申请权限: Perm ...
- android权限适配 简书,Android动态权限适配
最近APP里面要添加动态权限,网上找了不少例子并经过一定的测试,基本流程有了一定的认识,需要注意的地方记录下来以备以后查阅. 一 各大手机厂商的适配 依据各大手机Rom的不同表现,可以分为三种不同的模 ...
- android 权限管理适配 oppo,Android 动态权限适配 个别厂商( oppo vivo )
遇到一个比较奇葩的问题,特此记录: 动态权限校验 Android 6.0 的 oppo & vivo 手机时,始终返回 权限已被允许 但是当真正用到该权限时,却又弹出权限申请框. Contex ...
- Android不同屏幕适配的大神解决方案(转)
在CSDN社区逛了这么多年,从中也学习了很多,但是一直没有时间自己写博客(其实是因为太菜,滑稽),这也是我第一次转载大神的文章,不是很会弄,所以里面的内容和链接全是用的原作者的,也没有经过精简和编辑, ...
- 93.Android申请权限
权限组列表: https://blog.csdn.net/lanxuan1993/article/details/102954531 一.RxPermissions https://blog.csdn ...
- android 6.0 短信权限,Android6.0权限适配
Code4Android .jpg 前言 现在谈论Android权限适配可能有点没必要,因为网上关于权限适配的文章很多,搜一下Android6.0权限适配关键词能搜到一堆文章,而且很多写的还很不错.不 ...
- Android M版本和非M版本动态权限适配方案
动态权限适配方案 1. 背景 目前在Google官方推出的最新的AndroidM版本上,对于应用权限的调用做了大大的修改.在M版本之前,应用App需要用到什么权限只需要在AndroidManifes ...
- Android悬浮窗适配全机型,包含8.0,小米魅族华为悬浮窗权限适配demo看这一篇就够了
机型多杂,适配无法完全兼容,不如换种实现方式,性能比悬浮窗好,不需要权限,效果更好:https://blog.csdn.net/m0_38058826/article/details/10399339 ...
- 一起Talk Android吧(第三百九十回:关于Android版本12适配蓝牙权限的问题)
文章目录 1 背景知识 第一阶段 第二阶段 第三阶段 2 权限申请方法 配置文件中的内容 代码中动态申请 各位看官们,大家好,上一回中咱们说的是实现倒计时的例子,这一回中咱们介绍的例子是"A ...
最新文章
- Xshell远程登录Ubuntu
- 操作 Docker 容器
- Codeforces626B - Cards【模拟】
- hybris安装执行install.sh -r b2c_acc initialize遇到build错误 8983端口
- Serilog 日志框架如何自动删除超过 N 天的日志 ?
- 以知识图谱为例,模型思维:简化世界的人工智能模型
- Python+ZeroMQ使用REQ/REP模式快速实现消息收发
- 3说明书_怎么才能做好产品说明书翻译?知行翻译公司总结了3点
- 自定义注解实现(spring aop)
- 计算机屏幕画图工具,电脑屏幕画笔工具(Pointofix)
- DGND PGND GND AGND 精密电阻与普通电阻
- CocosCreator 制作微信小游戏排行榜,超越好友,分享功能
- 计算机c盘用户爆满,Win7系统C盘突然快满了怎么办?C盘空闲空间爆满
- Cisco(61)——双出口策略路由PBR+NAT
- standard fifo和fwft fifo的区别
- 网站地图Sitemap怎么制作
- 文件上传与下载之数据库实现
- 爆笑三国之张飞流水账【爆笑中体验哲理】
- 英特尔奔腾芯片漏洞_什么是奔腾(英特尔)?
- 怎样使PPT自动播放
热门文章
- tcl脚本直接执行脚本中中文识别不了的处理
- MongoDB小型文档型数据库使用
- Happy Valentine's Day
- IAR 的精确延时程序(转)
- APE结合键盘控制角色运动 转
- java maven 读取配置文件_Java项目和maven项目中如何获取设置配置文件中的属性
- 正式发布python版本的年份_飞书全新版本π正式发布 高效便捷的团队沟通新工具...
- 处理接口超时_架构设计 | 接口幂等性原则,防重复提交Token管理
- kafka实现异步发送_深入理解Kafka的发送流程
- webgis从基础到开发实践_webgis@基础GIS 开源资源汇总