MediaPlayer: баг Android 10
Перешел с API 28 на 29.
Есть код, для воспроизведения случайной музыки с телефона.
mus.setDataSource(songsList.get(rnd.nextInt(songsList.size())));
mus.prepare();
mus.start();
На 28 все работает хорошо, на 29 ничего не происходит.
Это происходит только а Андроид 10 на реальных (3 шт) и виртуальном телефонах (на низких версиях все ОК).
В логах не вижу никаких ошибок.
Интересный и ВАЖНЫЙ факт:
баг происходит, если устанавливать приложение с нуля. если оно уже было установлено на API 28 и обновить его на 29 - все будет работать хорошо.
Нигде ничего не сохраняю, ни кэширую. Получаю список песен только при нажатии на кнопку.
Чтение разрешено - вижу в логах весь список песен.
Разницы между путем к песне нету (пробовал как Path так и Uri)
Ответы (1 шт):
Проблема оказалось с "чтением" файлов.
Того, что я писал "Получаю список песен только при нажатии на кнопку" оказалось мало.
Для Android 10 в Манифесте теперь недостаточно обычных
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Надо добавить еще строчку в блоке <application>
<application>
android:requestLegacyExternalStorage="true"
....
Если targetSDK < 29 - этой проблемы не возникает. Но вот если =>29, то надо добавлять этот кусок.