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

如何在Android Q中请求外部文件访问权限?,android,android-manifest,android-10.0,Android,Android Manifest,Android 10.0,HardAndroid Q引入了一种新的安全功能,称为“作用域存储”,它限制对外部存储中文件的访问。我的问题是我必须将文本文档从应用程序保存到用户指定的位置。这是否需要任何类型的权限,而不是Q设备中的READ\u EXTERNAL\u STORAGE和WRITE\u EXTERNAL\u STORAGE 我的问题是我必须将文本文档从应用程序保存到用户指定的位置 使用ACTION\u CREATE\u DOCUMENT允许用户指定位置。您可以使用ContentResolver及其openOutpu

HardAndroid Q引入了一种新的安全功能,称为“作用域存储”,它限制对外部存储中文件的访问。我的问题是我必须将文本文档从应用程序保存到用户指定的位置。这是否需要任何类型的权限,而不是Q设备中的
READ\u EXTERNAL\u STORAGE
WRITE\u EXTERNAL\u STORAGE

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

使用
ACTION\u CREATE\u DOCUMENT
允许用户指定位置。您可以使用
ContentResolver
及其
openOutputStream()
方法来获取从
操作\u创建\u文档
返回的
Uri的
OutputStream
。然后,您可以将文本写入该
OutputStream

这是否需要任何类型的权限,而不是Q设备中的读外部存储和写外部存储

ACTION\u CREATE\u DOCUMENT
不需要任何权限,可以使用Android 4.4

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

或者,如果您将
targetSdkVersion
设置为28或更低,您可以使用
WRITE\u EXTERNAL\u STORAGE
并在需要的地方写入,就像在Android 9.0+上一样。但是,请记住,当您的
targetSdkVersion
超过28时(例如,为了符合2020年的Play Store要求),这种方法将停止使用Android R。因此,使用
ACTION\u CREATE\u DOCUMENT
,或者
getExternalFilesDir()
,是更好的长期解决方案。

你能帮我解决这个问题吗