Я разрабатываю приложение для 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/
Ну, тут ты ошибаешься, и я просто сделал это.
Вы не поняли мой комментарий. Покажите полные пути.
Можно запросить права доступа ко всем файлам, и тогда на 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);
Вы не можете помещать файлы в /storage и /sdcard для устройств Android 11+ с самого начала.