Получение пути для физической 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" я вижу:

Какие-либо предложения?

Большое спасибо

0 ответов

Другие вопросы по тегам