Android - 权限

时间:2019-06-03 19:40:46   收藏:0   阅读:143

背景介绍

今天做读取联系人信息的时候,出现了一个问题

技术分享图片

但是明明已经添加了读取联系人权限,为什么还要让我添加权限,在网上查了一下,发现是因为权限问题。

系统权限主要分为两种,普通权限以及危险权限

普通权限:不会直接获取用户的隐私,如果manifest中声明了这些权限,系统会自动授予app这些普通权限。

危险权限:顾名思义,会获取用户隐私,如果你确实需要这些危险权限,用户必须在APP中,通过点击同意才能获取。(相机、位置、通讯录、短信等权限)

当用户手机的android系统为5.1及以下的系统,或者项目设置的targetSDK为22或者以下,那么所有的权限(普通和危险)都是在安装时候授权。但如果你的Android系统为6.0及以上并且targetSDK为23及以上,每一个危险的权限都必须在ap运行的时候逐一让用户点击同意或者拒绝。

所以我的程序崩溃的原因正好满足了以上三点:

 1.  TargetSdkVersion 为23以上

 2.  手机的操作系统为6.0以上

 3.  请求的是google定义的危险权限

解决办法是咋程序中检查是否授权,未授权则申请授权。

权限相关知识

技术分享图片

技术分享图片

技术分享图片

技术分享图片

其中,检查时候授权还有三种方式:

技术分享图片

    1)    在M之前版本调用,永远返回false

    2)    第一次请求权限时,返回false

    3)    第一次请求权限被禁止,但未选择【不再提示】,返回true

    4)    允许权限后,返回false

    5)    禁止权限,并选择【不再提示】,返回false

另外:Fragment中也可以请求权限,效果和Activity一样。

FragmentCompat.requestPermissions()

FragmentCompat.shouldShowRequestPermissionRationate()

危险权限总结

技术分享图片

参考博客

https://blog.csdn.net/njweiyukun/article/details/50044193?_t_t_t=0.6781663475894713

https://www.jianshu.com/p/e1ab1a179fbb

https://blog.csdn.net/wangpf2011/article/details/80589648

 

原文:https://www.cnblogs.com/Ayinger/p/10968658.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!