Android11 已有MANAGE_EXTERNAL_STORAGE 但还是没有WRITE_EXTERNAL_STORAGE权限
在Android 11中,新增了MANAGE_EXTERNAL_STORAGE
权限,用于控制应用对外部存储的管理权限。但是,WRITE_EXTERNAL_STORAGE
权限仍然没有被引入,这意味着应用仍然无法直接向外部存储写入数据。在这篇科普文章中,我们将探讨Android 11中的存储权限管理情况,并提供一些解决方案。
存储权限变更
在Android 10及之前的版本中,我们可以通过向Manifest文件中添加以下代码来请求写入外部存储的权限:
但是在Android 11中,WRITE_EXTERNAL_STORAGE
权限被废弃,取而代之的是MANAGE_EXTERNAL_STORAGE
权限。这意味着应用无法直接请求写入外部存储的权限,而是需要经过系统级的管理来进行存储操作。
使用MANAGE_EXTERNAL_STORAGE权限
要在Android 11中使用外部存储,我们需要请求MANAGE_EXTERNAL_STORAGE
权限,并在Manifest文件中声明以下权限:
此权限允许应用管理外部存储,包括读取和删除外部存储中的文件。但是,仍然无法直接写入外部存储。
解决方案
虽然无法直接向外部存储写入数据,但我们可以通过以下方法来绕过这一限制:
- 使用MediaStore API:通过MediaStore API可以向外部存储的特定目录写入文件。以下是一个简单的示例:
- 使用SAF(Storage Access Framework):SAF提供了一个标准化的界面,用于访问设备上的文件。以下是一个使用SAF保存文件到外部存储的示例:
序列图示例
下面是一个简单的序列图示例,展示了应用向外部存储写入数据的过程:
结语
尽管Android 11中没有引入WRITE_EXTERNAL_STORAGE
权限,但通过MANAGE_EXTERNAL_STORAGE
权限、MediaStore API和SAF,我们仍然可以在应用中使用外部存储。希望这篇文章可以帮助你更好地了解Android 11中的存储权限管理情况,并找到解决方案来处理外部存储的操作。如果你有任何疑问或建议,请随时在评论区留言,我们将尽快回复。谢谢阅读!