Android Q 中如何申请外部文件访问权限?
How can I ask for external file access permission in Android Q?
听说 Android Q 引入了一种名为 “Scoped Storage” 的新安全功能,它限制访问外部存储中的文件。我的问题是我必须将文本文档从应用程序保存到用户指定的位置。这是否需要任何类型的许可,而不是 Q 设备中的 READ_EXTERNAL_STORAGE
和 WRITE_EXTERNAL_STORAGE
?
My problem is I have to save a text document to a user specified location from the App
使用ACTION_CREATE_DOCUMENT
允许用户指定位置。您可以使用 ContentResolver
及其 openOutputStream()
方法为从 ACTION_CREATE_DOCUMENT
返回的 Uri
获取 OutputStream
。然后,您可以将文本写入 OutputStream
.
Is this requires any kind of permission rather than READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE in Q devices?
ACTION_CREATE_DOCUMENT
不需要任何权限,可以回到 Android 4.4.
或者,您可以将文件写入 Context
上由 getExternalFilesDir()
标识的目录。 Android Q 上的用户可以看到这部分外部存储,不需要额外的权限。
或者,如果您将 targetSdkVersion
保持在 28 或更低,您可以使用 WRITE_EXTERNAL_STORAGE
并在您想要的地方写入,就像您在 Android 9.0+ 上所做的那样。但是,请记住,这种方法将停止使用 Android R 并且当您将 targetSdkVersion
提高到 28 时(例如,为了遵守 2020 年的 Play 商店要求)。因此,使用 ACTION_CREATE_DOCUMENT
或 getExternalFilesDir()
是更好的长期答案。
听说 Android Q 引入了一种名为 “Scoped Storage” 的新安全功能,它限制访问外部存储中的文件。我的问题是我必须将文本文档从应用程序保存到用户指定的位置。这是否需要任何类型的许可,而不是 Q 设备中的 READ_EXTERNAL_STORAGE
和 WRITE_EXTERNAL_STORAGE
?
My problem is I have to save a text document to a user specified location from the App
使用ACTION_CREATE_DOCUMENT
允许用户指定位置。您可以使用 ContentResolver
及其 openOutputStream()
方法为从 ACTION_CREATE_DOCUMENT
返回的 Uri
获取 OutputStream
。然后,您可以将文本写入 OutputStream
.
Is this requires any kind of permission rather than READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE in Q devices?
ACTION_CREATE_DOCUMENT
不需要任何权限,可以回到 Android 4.4.
或者,您可以将文件写入 Context
上由 getExternalFilesDir()
标识的目录。 Android Q 上的用户可以看到这部分外部存储,不需要额外的权限。
或者,如果您将 targetSdkVersion
保持在 28 或更低,您可以使用 WRITE_EXTERNAL_STORAGE
并在您想要的地方写入,就像您在 Android 9.0+ 上所做的那样。但是,请记住,这种方法将停止使用 Android R 并且当您将 targetSdkVersion
提高到 28 时(例如,为了遵守 2020 年的 Play 商店要求)。因此,使用 ACTION_CREATE_DOCUMENT
或 getExternalFilesDir()
是更好的长期答案。