Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查uri指向的铃声是否存在?_Java_Android_Uri_Ringtone - Fatal编程技术网

Java 如何检查uri指向的铃声是否存在?

Java 如何检查uri指向的铃声是否存在?,java,android,uri,ringtone,Java,Android,Uri,Ringtone,我可以使用以下代码播放铃声 rone = RingtoneManager.getRingtone(this.getContext(), Uri.parse(one)); rone.play(); 如何检查uri指向的音频文件是否存在?当用户从手机中删除文件时,我无法播放铃声,铃声会崩溃。getRingtone()如果铃声不存在,将返回null 始终检查返回值是否不为null,无论何时调用可能返回null值的方法,这都是一个很好的实践。这将防止大量的NullPointerException尝试使

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

rone = RingtoneManager.getRingtone(this.getContext(), Uri.parse(one));
rone.play();
如何检查uri指向的音频文件是否存在?当用户从手机中删除文件时,我无法播放铃声,铃声会崩溃。

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


始终检查返回值是否不为null,无论何时调用可能返回null值的方法,这都是一个很好的实践。这将防止大量的
NullPointerException

尝试使用
getRingtonePosition()
方法而不是
getRingtone()


检查rone是否为null谢谢,我可以通过检查(ringtone!=null){//do something}其他{//no ringtone,do something}来检查铃声是否存在出于某种原因,我得到了一个非null的对象,即使我在“../notifications”文件夹中删除了它的文件,而且我还得到了一个奇怪的铃声名称(一个数字)而不是原始名称。即使URI是有效的并且指向现有文件,我也得到了-1。啊,我知道为什么。在实例化
RingtoneManager
之后,您还需要这一行:
rm.setType(RingtoneManager.TYPE_通知)或选择应用程序正在使用的铃声类型。Ringtone manager需要知道要加载的铃声类型(对于所有类型,请使用
type\u ALL
)。
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);