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



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

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

使用ACTION_CREATE_DOCUMENT允许用户指定位置。您可以使用使用ContentResolver及其openOutputStream()方法来获取从ACTION_CREATE_DOCUMENT获取的UriOutputStream。然后,您可以将文本写入该OutputStream

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

ACTION_CREATE_DOCUMENT不需要任何权限,可以回到Android 4.4。

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

或者,如果您将targetSdkVersion保持在 28 或更低,则可以使用WRITE_EXTERNAL_STORAGE并在您想要的位置书写,就像在 Android 9.0+ 上所做的那样。但是,请记住,这种方法将停止与Android R一起使用,并且当您将targetSdkVersion提高到28岁以上时(例如,为了遵守2020年的Play商店要求)。因此,使用ACTION_CREATE_DOCUMENT,或者getExternalFilesDir(),是更好的长期答案。

最新更新