Android 4.2 を実行している Nexus 4 で着信音の再生に問題があります。
RingTone を再生しようとすると、次の例外が表示されます。
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 を実行している他の 2 つのデバイスで実行すると完全に機能します。
デバッグすると、着信音マネージャーから返された着信音の uri が null であることがわかります (他のデバイスでは有効な値に設定されています)。
何か間違っているのでしょうか、それとも 4.2 のバグでしょうか?