如何在Android Q中请求外部文件访问权限?

时间:2019-04-29 06:23:06

标签: android android-manifest androidq

听说过 Android Q 引入了一项名为“范围存储” 的新安全功能,该功能限制了对外部存储中文件的访问。我的问题是我必须从应用程序中将文本文档保存到用户指定的位置。是否需要任何类型的权限,而不是Q设备中的READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE

1 个答案:

答案 0 :(得分:1)

  

我的问题是我必须从应用程序中将文本文档保存到用户指定的位置

使用ACTION_CREATE_DOCUMENT允许用户指定位置。您可以使用ContentResolver及其openOutputStream()方法来获取从OutputStream返回的Uri的{​​{1}}。然后,您可以将文本写到该ACTION_CREATE_DOCUMENT

  

这是否需要任何权限,而不是Q设备中的READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE?

OutputStream不需要任何权限,并且可以恢复使用Android 4.4。

或者,您可以将文件写入ACTION_CREATE_DOCUMENT上由getExternalFilesDir()标识的目录中。外部存储的这一部分在Android Q上对用户可见,不需要其他权限。

或者,如果您将Context保持在28以下,则可以使用targetSdkVersion并在需要的地方写,就像在Android 9.0+上一样。但是,请记住,当您将WRITE_EXTERNAL_STORAGE提升到28以上(例如,遵守2020年的Play商店要求)时,该方法将无法在Android R上使用。因此,使用targetSdkVersion或也许使用ACTION_CREATE_DOCUMENT是更好的长期答案。