Получение пути для физической SD-карты в Oreo (API26)
Я пишу приложение для Android. Если я идентифицирую физическую SD-карту (см. Далее код), я бы предложил сохранить данные файлов на карту (300–800 МБ). Я бы использовал "директорию для приложения", которую система удаляет, когда пользователь удаляет приложение. Если я не могу идентифицировать SD с помощью кода, просто я не предлагаю такую возможность.
Я использую Android Studio 3.0.1 (но та же проблема в 3.1) и AVD (SD во внешнем файле).
До API25 следующий код правильно идентифицирует SD-карту:
String mySDPath = "";
if( Build.VERSION.SDK_INT >= 21 ) {
File[] ExternalStorage = ContextCompat.getExternalFilesDirs( myContext, null );
Emulated = true;
for( int i = 0; i < ExternalStorage.length; i++ ) {
Emulated = Environment.isExternalStorageEmulated( ExternalStorage[i] );
if( !Emulated ) {
mySDPath = ExternalStorage[i].getAbsolutePath();
break;
}
}
}
Начиная с AVD API26 "физическая SD" не распознается. После строки:
File[] ExternalStorage = ContextCompat.getExternalFilesDirs( myContext, null );
Я вижу в отладчике для API25:
ExternalStorage[0] = /storage/emulated/0/Android/data/my.app/files
ExternalStorage[1] = /storage/10E7-191B/Android/data/my.app/files
но только для API26:
ExternalStorage[0] = /storage/emulated/0/Android/data/my.app/files
С помощью Android Studio "Device File Explorer" я вижу:
Какие-либо предложения?
Большое спасибо