5

我可以使用以下代码播放铃声

rone = RingtoneManager.getRingtone(this.getContext(), Uri.parse(one));
rone.play();

如何检查uri指向的音频文件是否存在?当用户从他们的手机中删除一个文件时,我无法播放铃声并且它崩溃了。

4

2 回答 2

7

getRingtone()如果铃声不存在,将返回 null。

始终检查返回值是否不为空,这是一个很好的做法,每当您调用可能返回空值的方法时。这将阻止很多NullPointerException

于 2013-04-19T18:11:56.150 回答
1

尝试使用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);
于 2015-10-10T19:31:03.043 回答