Существует ли простой вызов API, который сообщит мне, должно ли приложение, работающее на Android 10 или более поздней версии, использовать доступ к Scoped Storage, то есть, если обычный доступ к файлу, то есть «Legacy External Storage», отключен? Обратите внимание, что даже если приложение в AndroidManifest.xml, раздел объявлен:
android:requestLegacyExternalStorage="true"
, доступ к файлу все равно может быть закрыт из-за изменений политики Google в будущем, поэтому тестирование этого значения бесполезно. Единственный способ, который я нашел, - это проверить, доступна ли для чтения корневая папка внешнего хранилища, но для этого приложение должно сначала запросить разрешение хранилища, которое бесполезно для всего остального, если устаревшее хранилище отключено.
public static boolean mustUseScopedStorage() {
// Impractical must first ask for useless Storage permission...
File exSD = Environment.getExternalStorageDirectory();
return !exSD.canRead(); // this test works only if Storage permission was granted.
}
Мне кажется, я когда-то видел новый API для обнаружения этого, но больше не могу найти эту статью ...