jokermonn / permissions4m Goto Github PK
View Code? Open in Web Editor NEW:wrench:国产手机5.0、6.0权限适配框架/编译时注解框架/an Android Runtime Permissions Tool by using APT
License: Apache License 2.0
:wrench:国产手机5.0、6.0权限适配框架/编译时注解框架/an Android Runtime Permissions Tool by using APT
License: Apache License 2.0
compile 'com.github.jokermonn:permissions4m:2.1.2-lib'
annotationProcessor 'com.github.jokermonn:permissions4m:2.1.2-processor'
更新大神这个小版本之后,使用listener回调同步申请读取通讯录权限和读取短信权限时弹出获取通讯录权限对话款,同时回调了权限获取成功方法(通讯录和短信均被回调成功获取,此时未点击同意授予权限);
在2.1.1的版本库上未现此问题;
使用环境MIUI8.2,android5.0.2
使用listener方式,在onRequestPermissionsResult回调处理中,发现wrapperMap内维护的PermissionWrapper弱引用被回收,导致wrapper = reference.get() 返回null,不执行回调的bug。
这个不能用在module里面,只能用在app中,
用在module里 java.lang.NullPointerException: Attempt to invoke interface method 'void com.joker.api.wrapper.AnnotationWrapper$PermissionsProxy.granted(java.lang.Object, int)' on a null object reference
有什么办法可以放在下层module的gradle中吗?
不确定是不是只支持国产手机,今天用三星试了下。三星galaxy note3,5.0版本系统,试下来不起作用。申请的权限直接就过了,没有触发用户人工授权的流程。
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.sokal.zouhonglive, PID: 20155
java.lang.NullPointerException: Attempt to invoke interface method 'void com.joker.api.wrapper.AnnotationWrapper$PermissionsProxy.granted(java.lang.Object, int)' on a null object reference
at com.joker.api.apply.NormalApplyPermissions.grantedWithAnnotation(NormalApplyPermissions.java:27)
at com.joker.api.wrapper.AbstractWrapper.requestPermissionWithAnnotation(AbstractWrapper.java:315)
at com.joker.api.wrapper.AbstractWrapper.request(AbstractWrapper.java:203)
at com.sokal.zouhonglive.view.MainActivity.requestPermission(MainActivity.java:145)
at com.sokal.zouhonglive.view.MainActivity.onClick(MainActivity.java:123)
at com.sokal.zouhonglive.view.MainActivity_ViewBinding$3.doClick(MainActivity_ViewBinding.java:60)
at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22)
at android.view.View.performClick(View.java:4848)
at android.view.View$PerformClick.run(View.java:20262)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5644)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
请问对于三星权限申请支持的好么?
v4包中 PermissionChecker.checkSelfPermission 很好用,我也是从另外一个老哥这么写的,挺好用于检查是不是有权限申请成功
吧所有权限设置成询问之后,所有权限都提示成功,但是全都不成功。依然还是询问状态
就冲你文章里面那两个被形容成**的角色我得给你颗星星。
哎呀呀,coolpad Y91-921 android版本5.1.1,加上.requestForce(true),不强制弹框,吐司获取权限成功之后,在设置查看还是询问状态,是不是coolpad手机太屌了,手上没有其他手机,但是5.0的虚拟机也不强弹框。。
Vivo x9 7.1.1手机,第一次申请camera权限,均正常,授予权限后,手动到设置中去把camera权限关掉后,再去申请camera权限,仍然会回调到granted方法里面去
vivo6.0系统,读取联系权限关闭,APP跳转联系人界面。
我用MeizuPro 6把权限全部禁止后
除了 录音(自定义rationale)
含PageListener的权限申请(读取手机状态权限)
地理位置(注解)
这三项可用(会有提示说无权限)
其他都误报权限申请成功
小米手机发送短信权限,检测都是grant,但是设置里面其实是拒绝或者询问
Activity
通话记录(注解)拒绝权限后 提示读取授权成功。
具体的权限检查是针对M及以上,但事实上国内手机在M以下,也自己整了一套权限管理。比如魅蓝2,ContextCompat.checkSelfPermission() 也只是检查Manifest里面有没有声明权限,而实际上,比如录音,在真正开始录音的时候才弹出一个系统的权限申请框。所以建议针对锅内手机的话,For M其实没有意义,干脆取消版本的控制。
本人手机魅蓝5S,安卓6.0,测试了一下DEMO发现有几个权限检查是错误的。测试时先安装demo,然后去权限管家里面把所有权限禁止,测试发现只有录音、手机状态读取和地理位置三个权限能正常检测到,其余的权限都显示授权成功,尤其是相机权限都检测错误,这个问题有点严重啊,但是还是感谢房主,解决了三个权限的检测问题。
魅族手机获取到的manufacturer ‘Meizu’影响了权限判断的逻辑,建议加上大小写忽略
加上code参数后,在自定义提示的时候比较方便展示每一种权限的描述,就是alterdiolog的message
1.作者所说的刺激危险区代码是指什么?
2.我们的应用中,TargetSDKVersion<23,各下兼容到16,按照您权限库中的判断方法是否能正确返回应用是否真正地拥有某个危险权限呢? 看了其他几个比较出名的库,默认在小于23时,权限直接返回true了.
(我们应用中需要读取通话记录与短信,而且是必须读到才能允许下一步操作)
PermissionsChecker里面没有internet权限检测吗?
小米6 WAKE_LOCK权限在权限管理界面找不到开启的地方,默认应该是授权的,但是使用permissions4m返回是没授权的
PermissionsChecker类的isNumberIndexInfoIsNull方法判断cursor.getCount() > 0,当手机没有短信或者没有联系人时,即使给了权限也会判断为没有权限
比那个检测不到权限更尴尬了。
测试手机为:
魅蓝5S
安卓6.0
你好,非常欣喜能看到你这样适配国内厂商的定位权限,我比较关注定位权限这一块,因为我们对APP定位权限要求比较高,而我利用系统的权限校验通常在国内厂商上不准确,看到你的逻辑是获取到了权限之后再调一次getLastKnownLocation,如果返回null说明还是没有给权限,初看之下这个逻辑非常惊喜,但是看了官方文档后发现有一种情况规避不了,那就是把GPS关掉它也会返回null。
Returns a Location indicating the data from the last known location fix obtained from the given provider.
This can be done without starting the provider. Note that this location could be out-of-date, for example if the device was turned off and moved to another location.
If the provider is currently disabled, null is returned.
所以这个判断还是不准确的,还是考虑下有没有别的途径。多谢你的分享。
型号:奇酷360N5s
问题:多个权限申请直接谈成功,但是其实没有成功
在onResume方法中申请权限的话,会一直循环调用onResume方法
魅蓝note5,Android7.0,一直提示拨打电话权限成功,在设置里面禁止了拨打电话权限还是一样,
ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE);一直返回0,也就是有权限
原生接口返回grant,实际没有
permissions4m 返回grant,实际没有
大神你好, 我在使用的过程中, 注解的方式 好是好, 但是侵入性太强了, 所以我使用的是 listener 的方式 .抽取了一个 PermissionManager 的管理类 来进行统一处理. 在 小米5SP 上面进行测试的时候发现 1,第一次申请权限必定会调用到 requestCustomRationaleListener 的回调, 但是 demo 上面就不会 , 是没更新吗? 2,在调用到 requestCustomRationaleListener 后的结果不会调用到 .requestListener(newListenerWrapper.PermissionRequestListener() {} 的方法中, 就是说, 我申请多个权限的时候如果有一个 没有结果 需要 提示 ,那我在提示中调用如下代码.
Permissions4M.get(activity)
.requestOnRationale()
.requestPermissions(permission)
.requestCodes(code)
.request();
的时候 在ListenerWrapper.PermissionRequestListener回调不到结果 ,这是怎么回事?
使用注解,明明没有获取到,却返回granted
使用注解方式申请多个权限,总是出现case分支重复
华为荣耀6 android 6.0
在targetsdk>=23的情况下,运行正常。
在targetsdk<23时,拒绝摄像头权限后仍然返回已授权
联想ZUK7.0 首次申请权限 点击允许;
进去APP ,又申请权限弹窗 ’前往设置设置’,点击 ‘前往设置 ' 但是发现此时app定位权限已经允许了的;
返回,一直弹窗 ‘前往设置’ ;
2:首次权限申请无论点击禁止还是点击允许,进入app需要定位权限无法识别,弹窗 ‘前往设置’,允许了也没作用。
设置app targetSdkVersion 17,如何判断用户是否拒绝了 某个权限?
经测试,还是提示授权成功,但是还是定位失败返回(百度地图)167错误代码(定位没有给权限)
我的手机是小米4.4,把相机权限关闭,提示授权成功,但是在应用权限那里相机是关闭的。
拒绝权限后 提示去设置开启 点击崩溃 提示找不到类
如题。
如题
在小米手机中会自动禁用一些权限,例如修改短信、通知类短信、读取联系人等权限,但回调的却是permissionGranted申请成功,这个该如何解决,感谢~
手机管家包名:com.meizu.safe
无论是用原生的方法还是这个库,返回的永远是granted,询问时会弹出对话框,允许和拒绝时不会弹
魅族 魅蓝 note2 android版本 5.1 :申请定位权限没有弹窗 返回是成功的 当运行到定位的业务逻辑块时会弹出系统提供的定位权限弹窗
我那个是申请存储权限、摄像头、录音权限
其实存储权限会同时申请
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS
这三个权限是一组,因给一个requestcode
摄像头权限:
Manifest.permission.CAMERA
使用一个requestcode
录音权限
Manifest.permission.RECORD_AUDIO
使用一个request code
相当于这三组权限涉及5个权限,但是只想用3个code能做到吗
下载了demo。oppo r9挨个点击,都toast授权成功,无任何弹框,去看了授权管理,并没有成功, 三星S6在拒绝后,再次点击会弹框授权提示,是没问题的,换到oppoR9, 第一次会有请求权限,点击拒接后,再次点击按钮,会调用授权成功的方法 toast 授权成功,但不会执行成功后的方法,也没有弹框(正常情况下应该是第一次拒绝,第二次点击会弹框的吧,S6测试正常),我说的有点啰嗦,也就是S6成功 oppoR9不行,s6是6.0.1,r9 5.1。 有没看懂的回复我哦,我在说一下,表达的有点不清晰。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.