Изменения в Android 10, связанные с MediaStore, теперь, похоже, требуют различного кода для> = 10 и <= 9 версий. В течение года я занимался другими делами, и я вернулся, чтобы обновить приложение, и у меня возникли трудности. Моя особая проблема заключается в том, что я загружаю файл musi c (все типы), сохраняю его вместе с обложками альбомов во внутреннем каталоге общего хранилища (Android / media / com.myapp / mydir). Затем я добавляю его в MediaStore с помощью ContentResolver и возвращаю Uri. Затем я бы воспроизвел его с помощью MediaPlayer.playFromUri (). </p>
Это все еще отлично работает на Android <= 9, но на 10 MediaPlayer.playFromUri () вызывает исключение ввода-вывода. Файлы есть, Uri возвращается при добавлении в MediaStore. Я прочитал несколько постов здесь, пытаясь собрать воедино решение, но просто не могу понять это. </p>
Дистиллированный код для добавления в MediaStore: ...
ContentResolver cr = getContext().getContentResolver();
ContentValues vtrack = new ContentValues();
vtrack.put(MediaStore.MediaColumns.TITLE, t.getTitle());
vtrack.put(MediaStore.MediaColumns.DATA, audiopath);
vtrack.put(MediaStore.Audio.AudioColumns.ARTIST, t.getArtist());
vtrack.put(MediaStore.Audio.AudioColumns.ALBUM, t.getAlbum());
vtrack.put(MediaStore.Audio.AudioColumns.IS_MUSIC, 1);
Uri u;
try {
u = cr.insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, vtrack);
}
catch (Exception e) {
e.getMessage();
}
Любая помощь с благодарностью.