15

Androidで画像エディタを書いています。これまでのところ、単一のアクティビティがあります。このアクティビティから、Gallery アクティビティを呼び出すメニュー オプションを使用して画像を読み込むことができます。onActivityResult では、受け取った画像を処理してキャンバスをペイントし、編集できるようにします。これはうまくいっています。

ここでやりたいことは、このアクティビティを他の場所から呼び出せるようにすることです。そのため、アクティビティ内から画像を選択する代わりに、ギャラリーを開いて写真を選択し、それをアプリに送信できます。しかし、私は方法を理解できません。

私のマニフェストでは、<activity>タグ内に次のものを入れました。

<intent-filter>
   <action android:name="android.intent.action.SEND" />
   <category android:name="android.intent.category.DEFAULT" />
   <data android:mimeType="image/*" />
</intent-filter>

次に、http://developer.android.com/training/basics/intents/filters.htmlで述べたように、私のアクティビティでは、onCreate() の中に次のコードを入れました。

...
//after initializing my view and stuff

Intent intent =getIntent();
Uri image = intent.getData();

//code to do something with my uri
...

携帯電話にアプリをインストールしてからギャラリーを開くと、画像を選択して「送信」メニューを使用すると、アプリがアプリ リストに表示されますが、選択するとアプリが開きますが、画像は無視されます。取得元の uriintent.getData()が null であることがわかりましたが、その理由がわかりません。

私は何か間違ったことをしていますか?私は何かを忘れていますか?知っておく必要がある場合は、提供されている CoolIris ギャラリーを使用して、ストック Android 2.3 を使用しています。

4

1 に答える 1

30

必要な Uri はバンドルに含まれています。以下のコードを試してみましたが、次のような画像の Uri を取得できますcontent://media/external/images/media/1750

Intent intent = getIntent();
Bundle bundle = intent.getExtras();
Uri uri = (Uri)bundle.get(Intent.EXTRA_STREAM);

詳細についてはACTION_SENDをご覧ください

于 2012-04-30T17:08:01.290 に答える