API 33 Android 13, не являющиеся мультимедийными файлами, не найдены

Я разрабатываю приложение для API 33, Android 13, а не мультимедийные файлы не найдены. Согласно Google, вам не нужны разрешения для поиска файлов, не являющихся мультимедийными, но они не будут найдены, даже с установленными разрешениями. До Android 12 у меня была опция «Разрешить управление всеми файлами», но в Android 13 это невозможно.

Когда я рекурсивно сканирую файлы .bin и .png в Android 12 и 13, он находит оба в 12, но находит только .png в 13. Я вижу файл .bin с приложением «Файлы» в 13.

<uses-permission android:name = "android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name = "android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name = "android.permission.READ_MEDIA_AUDIO" />

Это не сработает, есть предложения, как найти файл .bin? Я положил файлы на

/storage/
/sdcard/

Вы не можете помещать файлы в /storage и /sdcard для устройств Android 11+ с самого начала.

blackapps 11.01.2023 12:21

Ну, тут ты ошибаешься, и я просто сделал это.

MOTIVECODEX 11.01.2023 13:31

Вы не поняли мой комментарий. Покажите полные пути.

blackapps 11.01.2023 14:39
0
3
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Можно запросить права доступа ко всем файлам, и тогда на SD-карте был найден файл .bin. Протестировано по API 29, 31, 33.

<uses-permission android:name = "android.permission.MANAGE_EXTERNAL_STORAGE"
        tools:ignore = "ScopedStorage" />
<uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE" />

Основная деятельность

private void checkForExternalPermission() {
  if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {
    if (!checkStoragePermission()) {
      PermissionActivity.requestStoragePermission(this, true);
    }
  } else {
    PermissionActivity.requestAllFilesAccess(this);
  }
}

РазрешениеАктивность

Для разрешения на хранение < Android 13

startActivity(
  new Intent(
    android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
    Uri.parse(String.format("package:%s", getPackageName()))));

РазрешениеАктивность

Для всех разрешений файлов Android 13

Intent intent =
  new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
  .setData(Uri.parse("package:" + getPackageName()));
startActivity(intent);

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