2011-06-19 8 views
9

私がしようとしているのは、選択された着信音をユーザから取得し、アラームがオフになったときにその着信音を再生するようにAlarmManagerアラームを設定することです。電話機の再起動後にすべてのアラームをリセットできるように、データベースに着信音を保存する必要があります。Android:データベースへのandroid.net.Uriのオブジェクト

私の質問は、後で検索するために着メロUriをデータベースに保存する最良の方法は何ですか?

私は以下のことを試してみました:

1)DBにおける着信音のタイトルを保存し、それを取得し、デフォルトの着信音・パスに追加します。しかし問題は、着信音が別の場所からロードされている可能性があるということです。 2)URIスキームを保存し、speficiパートとフラグメントをスキームし、Uri.fromPartsを呼び出してUriを作成します。 3)UriからinputStream、byte []配列を作成し、blobとして保存してから読み込み、結果をUri

にキャストします。

あなたのヘルプははるかに高く評価されます。

答えて

14

URIを文字列としてデータベースに格納し、後でロードします。

あなたは、データベースから文字列を取得すると、次のようにURIを再構築
// This will get the uri in a string format 
String s = mUri.toString(); 

// This will decode the string into a URI 
Uri mUri = Uri.parse(s); 

お役に立てば幸いです。がんばろう!

+0

ご回答いただきありがとうございます。 Uri.decodeはUriではなくStringを返します。私はuri.parse(s)を使用し、それはUriを返しましたが、元のもの(多くの欠落した情報とフィールド)と同じではありません。 MediaPlayerはそれを正しく再生せず、準備を中断します。 – Sammy

+1

uri.toString()を使用して、文字列形式のURIを取得してください。 –

+1

toStringが正常に機能しました。 – Sammy