国产 Android 权限申请最佳适配方案——permissions4m

原文出自:点击打开链接

笔者发现国产手机有许多适配缺陷,例如:

  • ActivityCompat.shouldShowRequestPermissionRationale(Activity, String) 无法弹出权限申请对话框

  • 明明用户点击拒绝授权,却回调的是权限申请成功方法

  • 只能有一次权限是否授予选择,拒绝后就无法再有提示

相信做过权限适配的小伙伴们都知道适配国产 Android 机的权限会有多少坑,而国内也并没有任何权限申请框架解决这些问题,现在对于这三个问题 permissions4m 都有良好的解决:

  • 权限申请必定弹出对话框

  • 拒绝授权时回调的就是授权失败方法,接受授权时回调的就是授权成功方法,让它一定回调正确的方法

  • 当系统权限申请对话框不再弹出时,函数可返回一个 Intent,跳转到系统设置页面或者手机管家界面

情景再现

Boss: “mmp,为什么展示联系人这块在小米手机显示不出来?” 

Programmer: “boss,其他手机都没问题,我这块做了权限申请的,但是小米就是不弹出权限申请对话框,与此同时小米默认授权失败,所以不能读取通讯录。” 

Boss: “mmp,那这块呢,明明说了读取日历权限成功了,为什么还是没读取到?” 

Programmer: “boss,其他手机都没问题,我这块做了权限申请的,但是小米就是不弹出权限申请对话框,与此同时小米默认授权成功,但是实际上是授权失败的。” 

Boss: “mmp,那这块呢,明明我拒绝授予权限,为什么你提示我授权成功?” 

Programmer: “boss,其他手机都没问题,我这块做了权限申请的,小米弹出权限申请对话框,与此同时你点了拒绝,但是小米做了手脚,实际上调用了授权成功的方法。” 

Boss: “你有个毛用?测试机我都给你买好了,还这么菜,收拾收拾滚蛋吧。” 

Programmer: “f**k 小米!”

原生 Android 请求方式在小米等国内机型上适配的情形,相信有部分读者已经有过经历,这里就不做原生测试了,其实不仅仅是小米,国内其它手机也会有一样的问题,比如 oppo a57

可以看到,在申请过程中并没有任何弹窗弹出,并且提示授权成功,而实际上我们到权限管理界面可以看到并未得到权限。

生活中,无论是作为开发者还是普通用户,应该都有接触到过 5.0+ 的小米/魅族手机,使用过这些手机的读者们应该还有些许印象——部分国产手机早在 android 6.0 之前,也就是在 google 推出动态权限之前就有了权限申请,而国产的 5.0 权限申请使用 6.0 的权限申请代码是行不通的,理由很简单——在5.0的系统源码里没有6.0权限申请的源码,这个问题在 permissions4m 2.0.0 版本中已经迎刃而解了,这意味着从 2.0.0 版本开始, permissions4m 开始支持国产手机 5.0 权限申请了。

permissions4m 简介

简介中只是节选了部分内容,更详细完整的请移至项目:

https://github.com/jokermonn/permissions4m

注:截止笔者发布博客为止,permissions4m 最新版本为 2.0.0

引入依赖

Gradle 依赖

project 中的 build.gradle:


app 中的 build.gradle:


【欢迎上码】

【微信公众号搜索 h2o2s2】


猜你喜欢

转载自blog.csdn.net/luzhenyuxfcy/article/details/77929720