0

「共有」リストに登録したいアプリに取り組んでいます。その部分は、マニフェスト ファイルで次のタグを使用して既に処理されています。

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

SO に関するいくつかの例を見て、関連する各質問から少しずつ使用した後、ギャラリーから共有された画像を受け取る単純な (しかし不器用な) コードをまとめました。受信した画像を Facebook にアップロードすることもできました。

私の質問は、アプリでさまざまなアプリのさまざまなコンテンツを共有したいということです。たとえば、Twitter からのツイート、ブラウザーからの URL などです。別のアプリから自分のアプリに共有されたデータ/コンテンツの正確な性質を特定するにはどうすればよいですか? 受信したデータを適切に処理できます。しかし、どのコンテンツが共有されたかをどのように把握できるかについて、私は困惑しています。

画像を共有するためにまとめたコードは次のとおりです。

onCreate()注: 現在、エラー チェックを行わずにこのコードをメソッドで実行しています。問題についての手がかりが得られたら、それらを配置します。

ImageView imgSelectedPhoto = (ImageView)findViewById(R.id.imgDisplaySelectedImage);

Uri imageURI = (Uri) getIntent().getExtras().get(Intent.EXTRA_STREAM);
Bitmap bitmap = null;
try {
    bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageURI));
        try {
        Utility.scaleImage(getApplicationContext(), imageURI);
        imgSelectedPhoto.setImageBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
}

ヘルプ/アドバイス/提案は大歓迎です。

4

1 に答える 1

3

アプリケーションが受け取るインテントの MIME タイプのデータを次のように取得できます。

String type = getIntent().getType();
于 2012-05-18T15:17:23.887 に答える