美文网首页
Android6.0 权限解读-SD卡写入权限(WRITE_EX

Android6.0 权限解读-SD卡写入权限(WRITE_EX

作者: 萤火虫叔叔 | 来源:发表于2017-12-26 09:01 被阅读120次

读写权限(WRITE_EXTERNAL_STORAGE)在sdk 23之前,只需要在AndroidManifest.xml中添加响应权限即可。但是sdk 23以及大于23的版本时,需要在activity中动态授权。

1. 用法

在activity类中调用授权方法requestPermissions

requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},123);

调用这个方法之后,用户界面会弹出以下对话框


image.png

大家肯定很熟悉这个界面了,用户点击允许后,就可以正常读写sd卡了。

当然,也需要在AndroidManifest.xml中添加权限。AndroidManifest.xml文件和activity中调用,两者缺一不可。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

如果只是想知道如何使用的童鞋,看到这就够了,下文请忽视~


2. 方法解释

requestPermissions接受两个参数,第一个参数类型是String[],String数组存的是需要授权的权限列表,第二个参数是requestCode,是一个自定义的请求码。这个请求码需要搭配onRequestPermissionsResult方法使用。


image.png

用户点击后,结果会通过这个方法通知开发者,开发者可以自定义处理逻辑。

checkSelfPermission方式用于判断用户是否有权限,checkSelfPermission接受一个String类型参数——用户权限,这个参数Google官方已经有常量表示,例如:Manifest.permission.WRITE_EXTERNAL_STORAGE。
返回值是int类型,其中-1表示用户没有获得此权限,0表示已经获得此权限,返回值也有常量表示,例如:PackageManager.PERMISSION_DENIED。

3. 用户选择不同选项之后的,对应手机权限的变化

在弹出对话框后,因为并不是所有的用户都会选择“允许”,根据用户的选择,app获得的权限也会不同。下面分析在用户的各种操作下,app权限的变化。本人亲测,直接上截图如下:


image.png
image.png
image.png
image.png
image.png

图片中说明列举了app权限和用户操作的关系。app权限中,“?”表示访问,"x"表示拒绝,“√”表示允许。下面在用表格简单说明:

操作 没有动态授权前 允许 第1次拒绝 第n次拒绝(n>1)
勾选“不再询问” 访问 允许 访问 拒绝
不勾选“不再询问” 访问 允许 访问 访问

注:当状态为允许或拒绝时,即使调用请求权限的方法requestPermissions,也不会弹出对话框。所以大家不用担心允许后还会弹出的问题,但是需要注意,如果用户勾选了“不在询问”后,也不会弹出,所以需要考虑这个因素并做处理。这里给出一个参数做法,用checkSelfPermission方法判断是否有权限,如果返回-1,即没有权限,那么先调用自定义弹出框,提示用户必须允许,才能使用xxx功能,如果这个功能确实是用户需要用到的,那用户就没有理由拒绝了。

另外,不管在任何时候,任何状态下,用户都可以在设置中,找到应用权限设置,手动更改权限。

4. 总结

在sdk 23之前(不包括23),只需要在AndroidManifest.xml中添加响应权限即可。但是sdk 23以及大于23的版本,用户权限分成四种:
normal:普通权限,只需在AndroidManifest.xml中声明即可调用
dangerous :危险权限,需在AndroidManifest.xml中声明,并且在某一个activity中调用requestPermissions动态请求权限。
signature :是指具有相同签名的App可以访问和共享此App。本文不作讨论。
signatureOrSystem :是指系统image中App和具有相同签名的App可以访问和共享此App。本文不作讨论。

requestPermissions用于动态请求权限,checkSelfPermission用于判断是否拥有权限。

相关文章

网友评论

      本文标题:Android6.0 权限解读-SD卡写入权限(WRITE_EX

      本文链接:https://www.haomeiwen.com/subject/cbbrgxtx.html