天天看点

Android 6.0 权限问题

android6.0的运行时权限细节就不赘述了,详细可见文末参考资料的第2篇,详细讲解下于此相关的三个api(个人理解)。

函数定义:

Android 6.0 权限问题

该函数返回一个int,如果返回的整形值等于packagemanager.permission_granted说明已经拥有改权限,如果返回值等于packagemanager.permission_denied说明没有拥有权限。

注:packagemanager.permission_granted和packagemanager.permission_denied是packagemanager的两个int常量,专门用于表示是否拥有权限。
Android 6.0 权限问题

第一步检查权限的结果如果是packagemanager.permission_granted,那么该干嘛干嘛去,因为你已经拥有改权限(例如使用摄像头),如果检查结果是packagemanager.permission_denied,那么就要申请到权限才能干你想干的。

Android 6.0 权限问题

主要说明该函数的三个参数(最让我难以理解的是第三个参数)

activity就是要申请权限的activity,写this就可以。

这是一个string数组,该数组包含我们要申请的权限列表,比如要申请的权限有:manifest.permission.read_contacts等好几个,就把这些权限(string)添加到该数组中。

注:这说明可以批量申请权限

这是一个int,是程序猿自定义的一个参数,用法如下:

那么该参数有何用呢?请看第三个函数onrequestpermissionsresult。

第二个函数(requestpermissions)执行完之后,会回调onrequestpermissionsresult,把请求结果告诉请求者,成或者不成总得有个说法不是!程序猿需要重写这个方法,对不同的结果执行不同的对策。

注意case之后的代码,这就是我们之前定义的那个常量,对了,他的作用就是定位你申请的是那个权限,前面也说了,可以一次申请多个权限,那么怎么对应我们申请的权限和申请结果呢?就靠这个int常量了。

参考资料(绝对干货):

<a href="http://blog.csdn.net/lmj623565791/article/details/50709663">http://blog.csdn.net/lmj623565791/article/details/50709663</a>

<a href="https://developer.android.com/training/permissions/requesting.html?hl=zh-cn#perm-request">https://developer.android.com/training/permissions/requesting.html?hl=zh-cn#perm-request</a>

继续阅读