2011/02/21

ContentProviderを利用した画像の出力について

前回の記事で、「ImageView#setImageURI」に直接イメージファイルを設定することが出来ないと分かりました。じゃあ、どうすればいいのか。

・Raw Bitmap Data(?)を出力できる何か

を介せばいいので、それが何かを探しました。結論として、タイトルにあるとおり、ContentProviderを利用することで無事出力できました。


ではではその方法を丸々どどんんと紹介。
ちなみに、基本的なContentProviderの利用方法を紹介する気はありません(というか私が知りません)。ここでは外部に画像を出力する方法のみを紹介します。

Manifest.xmlの一部

以下ではnameを「Provider」、autoritiesを「jp.co.noxi.weathernow.contents」にします。
autoritiesはこのProviderにアクセスするためのものです。

で、Provider本体は

以上です。
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException
をオーバーライトすれば画像を出力できました。
今回は画像出力だけが目的なので他のメソッドは何もいじりません。


あとは

上で設定したAuthoritiesはcontent://のあとに続く文字になります。


ここまでたどり着くのに今日の午後全て潰した...疲れた。