次のコードを使用して着信音を再生できます
rone = RingtoneManager.getRingtone(this.getContext(), Uri.parse(one));
rone.play();
uri が指す音声ファイルが存在するかどうかを確認するにはどうすればよいですか? ユーザーが自分の電話からファイルを削除すると、着信音を再生できず、クラッシュします。
getRingtone()
着信音が存在しない場合は null を返します。
戻り値が null でないことを常に確認してください。これは、null 値を返す可能性のあるメソッドを呼び出すときは常に良い方法です。これにより、多くのことが防止されますNullPointerException
getRingtonePosition()
の代わりにメソッドを使用してみてくださいgetRingtone()
:
final RingtoneManager rm = new RingtoneManager(preference.getContext());
final Uri loadedRingtoneUri = Uri.parse(ringtoneUriString);
final int pos = rm.getRingtonePosition(loadedRingtoneUri);
// if loaded ringtone uri is valid, use it or use default
final Ringtone ringtone = RingtoneManager.getRingtone(preference.getContext(),
(pos != -1) ? loadedRingtoneUri :
Settings.System.DEFAULT_RINGTONE_URI);