Android:暗黙的Intentの戻り値の問題

私が作っているアプリ、コスメマネージャーで、化粧品に画像を関連付けるためのインポート機能があるのですが、それで、暗黙的Intentを発行しています。intent-filterはimage/*です。画像を読み込みたいので。そうすると、ギャラリーアプリの他、エクスプローラー系のアプリも候補に出てきます。

onActivityResultのintent.getData()の戻り値はcontent://〜で始まるUriだと信じ込んでいたのですが(ギャラリーアプリだとこれが戻ってくる)、エクスプローラー系のアプリだとfile://〜のUriが返ってきていました。
そのままデータベースに文字列に変換して放り込んでいたため、エクスプローラー系のアプリで拾った結果が入っていると、画像を表示するところで画像が見つからなくて(ContentProvider経由で探させているから)、エラーでアプリが落ちるという経験をしました。まぁ検証が足りないと言われればそれまでなのですが、暗黙的Intentの戻り値がどんなのなのかってのも想像できんしで…。

自戒の意味を込めてのメモでした。
暗黙的Intentを使ったとしても、ちゃんと想定できないデータ形式やアプリでテストせんといかんっすね…。


タグ Android | パーマリンク.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です