我可以使用以下代码播放铃声
rone = RingtoneManager.getRingtone(this.getContext(), Uri.parse(one));
rone.play();
如何检查uri指向的音频文件是否存在?当用户从他们的手机中删除一个文件时,我无法播放铃声并且它崩溃了。
getRingtone()
如果铃声不存在,将返回 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);