听说过 Android Q 引入了一项名为“范围存储” 的新安全功能,该功能限制了对外部存储中文件的访问。我的问题是我必须从应用程序中将文本文档保存到用户指定的位置。是否需要任何类型的权限,而不是Q设备中的READ_EXTERNAL_STORAGE
和WRITE_EXTERNAL_STORAGE
?
答案 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
是更好的长期答案。