Android M 6.0权限

标签(空格分隔): Android


[ANdroid 6.0基础知识][3]

1、在 Android 的各个版本中,不论是普通权限还是敏感权限(运行时权限),都需要在 manifest 文件中声明

2、关于解释需要权限的原因可以看一下这篇[博客][1],而且这篇博客对权限组的授权改变、用户勾选不再提醒对话框时,下次不再弹对话框来授予权限时的情况考虑的比较详细
Android 系统提供了shouldShowRequestPermissionRationale()方法来帮助开发者判断是否需要向用户解释需要权限的原因。当某条权限之前已经请求过,并且用户已经拒绝了该权限时,shouldShowRequestPermissionRationale ()方法返回的是 true
如果app之前请求过该权限,被用户拒绝, 这个方法就会返回true.
如果用户之前拒绝权限的时候勾选了对话框中”Don’t ask again”的选项,那么这个方法会返回false.
如果设备策略禁止应用拥有这条权限, 这个方法也返回false.


参考文章:[链接][2]
系统自动回调的情况:
有一些情形下,调用
1.自动授权: 如果用户已经允许了permission group中的一条A权限,那么当下次调用requestPermissions()方法请求同一个group中的B权限时, 系统会直接调用onRequestPermissionsResult() 回调方法, 并传回PERMISSION_GRANTED的结果.
2.自动拒绝: 如果用户选择了不再询问此条权限,那么app再次调用requestPermissions()方法来请求同一条权限的时候,系统会直接调用onRequestPermissionsResult()回调,返回PERMISSION_DENIED.

经验证, 请求权限对话框中的”Don’t ask again”的选项, 只有该条权限之前的状态是Denied的时候,才会出现.
以前从未授权(即第一次弹框), 或者之前的状态是Granted(当然这种情况一般不会弹框询问), 出现的弹框都是不带该不再询问的选项的.


参考[实践文章一][4]、[实践文章二][5]

[一行代码解决Android M新的运行时权限问题][6]

建议在短期内暂时可以不考虑支持该运行时权限机制,等时机成熟或者简单易用的第三方库完善之后再支持也未尝不可。
[1]: https://kingideayou.github.io/2015/11/09/Android_M_permissions/
[2]: http://www.cnblogs.com/mengdd/p/4892856.html
[3]: https://blog.coding.net/blog/understanding-marshmallow-runtime-permission
[4]: http://jijiaxin89.com/2015/08/30/Android-s-Runtime-Permission/
[5]: https://yanlu.me/android-m6-0-permission-chasm/
[6]: http://www.jianshu.com/p/d3a998ec04ad

你可能感兴趣的:(Android M 6.0权限)