2012-12-22 26 views
2

在我的应用程序中,我需要用户选择铃声作为应用程序声音。我使用RingtoneManager.ACTION_RINGTONE_PICKER来获取选定的铃声。它会返回铃声的Uri,我可以将其转换为铃声,并且一切正常。但这里有一个棘手的部分:如何将铃声存储为字符串?

我的所有应用程序数据都保存在一个XML文件中,所以我需要一种方法将铃声保存为String。 我正在考虑使用Uri.getPath()获取铃声路径并将路径保存在我的应用中。但是当我需要使用它时,我无法找到将路径转换回铃声的方法。 下面是我想一个URI转换为字符串,并返回的代码:

String ringtonePath = ringtoneUri.getPath(); 
ringtoneUri = Uri.parse(ringtonePath); 
Ringtone ringtone = RingtoneManager.getRingtone(getActivity(), ringtoneUri); 

它不工作。 logcat的输出:

Failed to open ringtone /internal/audio/media/13 

和铃声获得null

回答

3

Uri.path只返回URL的path一部分。例如,如果URI是“http://hello.com/world/1”,那么path只是URI的“/ world/1”部分。您应该将结果Uri.toString()存储在您的XML中。

+1

工程像魅力。谢谢! –

相关问题