Add OS.get_external_data_dir() to get Android external directory #49435
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Android provides each app with a dedicated location for external storage. However, this was often ignored because any external storage location could be accessed with the
READ_EXTERNAL_STORAGE
andWRITE_EXTERNAL_STORAGE
permissions. With Android 10+, with scoped storage, the dedicated external storage location is the only external location that the app is allowed to access (without using theMediaStore
API or requesting theMANAGE_EXTERNAL_STORAGE
permission). On Android 10, this could be worked around withandroid:requestLegacyExternalStorage="true"
(see #39103), however this workaround is disabled with Android 11 (see #47954).This PR provides users with an easy way to locate the dedicated external storage location e.g.:
To provide compatibility, on other OSs, this will return the same location as
OS.get_user_data_dir()
.Fixes #39414.
Should help with #38913 and #48636.