Android Ringtone Play crash на 4.2
У меня возникли проблемы с воспроизведением мелодии звонка на моем Nexus 4 под управлением Android 4.2.
Когда я пытаюсь воспроизвести мелодию звонка, я вижу следующее исключение:
java.lang.NullPointerException at android.media.Ringtone.play(Ringtone.java:228)
Мой код ниже:
RingtoneManager ringtoneManager = new RingtoneManager(context);
ringtoneManager.setType(AudioManager.STREAM_NOTIFICATION);
Ringtone ringtone = ringtoneManager.getRingtone(index);
Ringtone ringtone.setStreamType(AudioManager.STREAM_NOTIFICATION);
if (ringtone != null)
{
ringtone.play();
}
Значение индекса передается в мой метод, основанный на выборе пользователя (я представляю их со списком мелодий для выбора). В любом случае, не имеет значения, что я ставлю на это поведение всегда одно и то же.
Этот код отлично работает при запуске на двух других моих устройствах запуск 2.3 и 4.0.4.
Когда я отлаживаю, я вижу, что uri равен нулю В мелодии звонка, возвращаемой менеджером мелодий (и установлен в допустимое значение на других моих устройствах).
Я делаю что-то не так или это может быть ошибка в 4.2?
1 ответ:
Я думаю, вам нужно сначала проверить, существует ли мелодия звонка на позиции. Так что попробуйте
Edit: попробуйте это.
RingtoneManager ringtoneManager = new RingtoneManager(ActivityName.this); ringtoneManager.setType(AudioManager.STREAM_NOTIFICATION); Cursor c = ringtoneManager.getCursor(); Ringtone ringtone = ringtoneManager.getRingtone(index); ringtone.setStreamType(AudioManager.STREAM_NOTIFICATION); if(ringtone != null && ringtoneManager.getRingtoneUri(position) != null){ ringtone.play(); }