Android Q RingtonePicker теперь вылетает из приложения?

Поэтому я тестировал Android Q, чтобы убедиться, что у моих приложений не будет проблем, и я заметил, что средство выбора рингтонов теперь приводит к сбою приложения, если вы пытаетесь запустить его.

Сообщение об ошибке, как показано ниже.

android.content.ActivityNotFoundException: не найдена активность для обработки Intent {act=android.intent.action.RINGTONE_PICKER (имеет дополнительные функции)}

Я просмотрел настройки рингтонов, найденные здесь: https://developer.android.com/reference/android/preference/RingtonePreference

Теперь он говорит: этот класс устарел на уровне API Q. Используйте библиотеку настроек AndroidX для согласованного поведения на всех устройствах. Дополнительные сведения об использовании библиотеки настроек AndroidX см. в разделе «Настройки».

Это просто проблема, потому что Android Q находится в бета-версии, или это то, что мне нужно изменить. У меня есть два приложения, в которых я использую RingtonePicker для выбора пользовательских звуков будильника или звуков уведомлений. Кто-нибудь знает какие-либо обходные пути или я должен просто набраться терпения и дождаться дальнейшего развития Q?

Изменить: вот фрагмент моего кода, возможно, это просто проблема с эмулятором.

   Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALARM);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Alarm Sound");
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, chosenAlarm1);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
        startActivityForResult(intent, 5);

person Nathan Woolmore    schedule 19.04.2019    source источник
comment
Предоставьте минимальный воспроизводимый пример, показывающий ваш код, вызывающий этот сбой. Google больше не поддерживает RingtonePreference и не будет предоставлять версию AndroidX. Их рекомендация (изложенная в этом выпуске) заключается в том, чтобы вы использовали new Intent(RingtoneManager.ACTION_RINGTONE_PICKER). Это то, что вы используете?   -  person CommonsWare    schedule 19.04.2019
comment
FWIW, я только что собрал заготовку приложения, которое использует RingtoneManager.ACTION_RINGTONE_PICKER, и у меня не было сбоев. Это было протестировано на Google Pixel с Q Beta 2a (или как там они называют исправленную версию Beta 2). Если вы тестируете на эмуляторе, это может быть проблема с эмулятором.   -  person CommonsWare    schedule 19.04.2019
comment
Спасибо за тестирование :) это должно быть проблема с эмулятором. Просто был немного встревожен таким сбоем, потому что у меня есть два приложения, которые используют эту функцию. (Также добавлен мой фрагмент кода)   -  person Nathan Woolmore    schedule 19.04.2019


Ответы (1)


Я запустил ваш фрагмент кода в черновом проекте на Pixel с Q Beta 2a, за исключением преобразования в Kotlin и удаления лишнего, которое зависело от вашего Uri. Появился психоделический подборщик рингтонов:

Q Средство выбора рингтонов

Мои изменения не должны влиять на маршрутизацию Intent, поэтому я думаю, что ваша проблема связана с эмулятором.

person CommonsWare    schedule 19.04.2019