Android 11的外部存储权限申请流程

Android 11的外部存储权限申请流程Android 11对应的API为30,从这个版本起要想对外部存储进行写入操作的话需要比以往的操作多几个步骤,这里简单归纳下,具体的原因我就不多

大家好,欢迎来到IT知识分享网。

Android 11对应的API为30,从这个版本起要想对外部存储进行写入操作的话需要比以往的操作多几个步骤,这里简单归纳下,具体的原因我就不多话了,具体步骤如下以供参考

1-在AndroidManifest.xml里这样注册权限:

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

比以往多一条MANAGE_EXTERNAL_STORAGE

2-在AndroidManifest.xml的application下加入android:requestLegacyExternalStorage=”true”

其实这句在API30下已经不起作用了,但在API29中还有作用,所以一并加上以免麻烦。

3-在代码中申请权限,由于这些新加的权限特殊,以往的申请方式不起作用,无论怎么申请,最后必然是授权失败。所以正确的方式就是先判断API的版本,如果大于等于30则用Environment.isExternalStorageManager()判断是否有授权,这个方法会返回一个布尔值,如是false就跳到一个特殊的页面让用户手动授权,跳转方法如下:

val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION) intent.data = Uri.parse("package:" + requireActivity().packageName) startActivity(intent) //startActivityForResult(intent,0x01)

由于这个授权界面是一个Activity,所以用startActivity还是startActivityForResult都可以,具体看你怎么利用生命周期了。

Android 11的外部存储权限申请流程

手动授权界面

4-记得用传统方式申请下WRITE_EXTERNAL_STORAGE,以免产生不必要的麻烦。

到此,针对Android 11的外部存储的权限申请就这样了。最后说一下,虽然通过上述方式可以对整个外部存储空间进行文件的读写操作,但Android/data目录是个例外,此目录下保存着所有应用的专属空间,在Android11下已经不让访问了,但可以通过代码方式直接访问自己的那个目录。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/48994.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信