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一句话权限适配的更优解决方案相关推荐

  1. android m权限工具类,android M权限适配,简单工具类

    很简单没什么说的, 因为项目大了,不能轻易引入第三方库,同时确实也没必要为了适配下权限就引入一个库. 这里写了个处理权限的工具类(部分借鉴的,勿喷),不嫌弃的话拿去! 用法: 1.申请权限: Perm ...

  2. android权限适配 简书,Android动态权限适配

    最近APP里面要添加动态权限,网上找了不少例子并经过一定的测试,基本流程有了一定的认识,需要注意的地方记录下来以备以后查阅. 一 各大手机厂商的适配 依据各大手机Rom的不同表现,可以分为三种不同的模 ...

  3. android 权限管理适配 oppo,Android 动态权限适配 个别厂商( oppo vivo )

    遇到一个比较奇葩的问题,特此记录: 动态权限校验 Android 6.0 的 oppo & vivo 手机时,始终返回 权限已被允许 但是当真正用到该权限时,却又弹出权限申请框. Contex ...

  4. Android不同屏幕适配的大神解决方案(转)

    在CSDN社区逛了这么多年,从中也学习了很多,但是一直没有时间自己写博客(其实是因为太菜,滑稽),这也是我第一次转载大神的文章,不是很会弄,所以里面的内容和链接全是用的原作者的,也没有经过精简和编辑, ...

  5. 93.Android申请权限

    权限组列表: https://blog.csdn.net/lanxuan1993/article/details/102954531 一.RxPermissions https://blog.csdn ...

  6. android 6.0 短信权限,Android6.0权限适配

    Code4Android .jpg 前言 现在谈论Android权限适配可能有点没必要,因为网上关于权限适配的文章很多,搜一下Android6.0权限适配关键词能搜到一堆文章,而且很多写的还很不错.不 ...

  7. Android M版本和非M版本动态权限适配方案

    动态权限适配方案 1.  背景 目前在Google官方推出的最新的AndroidM版本上,对于应用权限的调用做了大大的修改.在M版本之前,应用App需要用到什么权限只需要在AndroidManifes ...

  8. Android悬浮窗适配全机型,包含8.0,小米魅族华为悬浮窗权限适配demo看这一篇就够了

    机型多杂,适配无法完全兼容,不如换种实现方式,性能比悬浮窗好,不需要权限,效果更好:https://blog.csdn.net/m0_38058826/article/details/10399339 ...

  9. 一起Talk Android吧(第三百九十回:关于Android版本12适配蓝牙权限的问题)

    文章目录 1 背景知识 第一阶段 第二阶段 第三阶段 2 权限申请方法 配置文件中的内容 代码中动态申请 各位看官们,大家好,上一回中咱们说的是实现倒计时的例子,这一回中咱们介绍的例子是"A ...

最新文章

  1. Xshell远程登录Ubuntu
  2. 操作 Docker 容器
  3. Codeforces626B - Cards【模拟】
  4. hybris安装执行install.sh -r b2c_acc initialize遇到build错误 8983端口
  5. Serilog 日志框架如何自动删除超过 N 天的日志 ?
  6. 以知识图谱为例,模型思维:简化世界的人工智能模型
  7. Python+ZeroMQ使用REQ/REP模式快速实现消息收发
  8. 3说明书_怎么才能做好产品说明书翻译?知行翻译公司总结了3点
  9. 自定义注解实现(spring aop)
  10. 计算机屏幕画图工具,电脑屏幕画笔工具(Pointofix)
  11. DGND PGND GND AGND 精密电阻与普通电阻
  12. CocosCreator 制作微信小游戏排行榜,超越好友,分享功能
  13. 计算机c盘用户爆满,Win7系统C盘突然快满了怎么办?C盘空闲空间爆满
  14. Cisco(61)——双出口策略路由PBR+NAT
  15. standard fifo和fwft fifo的区别
  16. 网站地图Sitemap怎么制作
  17. 文件上传与下载之数据库实现
  18. 爆笑三国之张飞流水账【爆笑中体验哲理】
  19. 英特尔奔腾芯片漏洞_什么是奔腾(英特尔)?
  20. 怎样使PPT自动播放

热门文章

  1. tcl脚本直接执行脚本中中文识别不了的处理
  2. MongoDB小型文档型数据库使用
  3. Happy Valentine's Day
  4. IAR 的精确延时程序(转)
  5. APE结合键盘控制角色运动 转
  6. java maven 读取配置文件_Java项目和maven项目中如何获取设置配置文件中的属性
  7. 正式发布python版本的年份_飞书全新版本π正式发布 高效便捷的团队沟通新工具...
  8. 处理接口超时_架构设计 | 接口幂等性原则,防重复提交Token管理
  9. kafka实现异步发送_深入理解Kafka的发送流程
  10. webgis从基础到开发实践_webgis@基础GIS 开源资源汇总