2

私のアプリケーションでは、ユーザーがアプリケーションサウンドとして着信音を選択する必要があります。RingtoneManager.ACTION_RINGTONE_PICKER選択した着信音を取得するために使用します。それは着信音を返しますUri、そして私はそれを着信音に変えることができます、そしてそれはすべてうまく働きます。しかし、ここに注意が必要な部分があります。

すべてのアプリケーションデータはXMLファイルに保存されているため、着信音をとして保存する方法が必要Stringです。Uri.getPath()アプリでパスを使用して着信音のパスを取得し、保存することを考えていました。しかし、使用する必要があるときにパスを着信音に戻す方法が見つかりません。UriをStringに変換して元に戻そうとしたコードは次のとおりです。

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

動作しません。LogCat出力:

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

着メロはnull

4

1 に答える 1

3

Uri.pathpathURLの一部のみを返します。たとえば、URIが「http://hello.com/world/1"の場合、URIpathの「/world/1」部分のみです。Uri.toString()代わりに、の結果をXMLに保存する必要があります。

于 2012-12-22T09:02:26.943 に答える