android运行时存储权限(11的外部存储权限申请流程)

 2025-06-27  阅读 552  评论 0

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

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的外部存储权限申请流程)(1)

手动授权界面

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

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

,

版权声明:xxxxxxxxx;

原文链接:http://cn.tdroid.net/ce09cCz0HBg4EV1E.html

发表评论:

管理员

  • 内容264670
  • 积分0
  • 金币0
关于我们
lecms主程序为免费提供使用,使用者不得将本系统应用于任何形式的非法用途,由此产生的一切法律风险,需由使用者自行承担,与本站和开发者无关。一旦使用lecms,表示您即承认您已阅读、理解并同意受此条款的约束,并遵守所有相应法律和法规。
联系方式
电话:
地址:广东省中山市
Email:
注册登录
注册帐号
登录帐号

Copyright © 2022 太卓开发网 Inc. 保留所有权利。 泰达科技网易库网

页面耗时0.1596秒, 内存占用1.33 MB, 访问数据库18次