2

以前にディスクに保存した画像を共有しようとしています。を送信しIntent.ACTION_SENDます。問題は、私の場合、さまざまなアプリ、公式Gmailアプリ、TweetDeckと互換性を持たせる方法が見つからないことです。

共有したい画像は:に含まれていFileます

File agendaFile; 
// its path using getAbsolutePath() -> /data/data/com.mypackage/files/agenda.jpg

オプションA)Uri.fromFileを使用する

Uri agendaUri = Uri.fromFile(agendaFile); 
// the value -> file:///data/data/com.mypackage/files/agenda.jpg

結果

  • Gmail、画像はメールに添付されていますか?いいえ
  • Tweetdeck、ツイートメッセージに画像が追加されていますか?はい

オプションB)Uri.parseを使用する

Uri agendaUri = Uri.parse(agendaFile.toURI().toString()); 
// the value -> file:/data/data/com.mypackage/files/agenda.jpg

結果

  • Gmail、画像はメールに添付されていますか?はい
  • Tweetdeck、ツイートメッセージに画像が追加されていますか?いいえ

ついに

どちらの場合も、次のようなインテントを送信します。

final Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setType("image/jpg");
intent.putExtra(android.content.Intent.EXTRA_STREAM, agendaUri);
startActivity(Intent.createChooser(intent, "title"));

それで、画像を共有する他のオプションはありますか?ほとんどのアプリと互換性のある画像を共有するための最良の方法はどのようにすればよいですか?

ありがとう!

4

4 に答える 4

3

試す

intent.setType("image/*");

私にとっては、Twitter、whatsapp、bluetoothで機能します。

編集:完全なコード:

Intent intent = new Intent();
        intent.setAction(Intent.ACTION_SEND);
        intent.setType("image/*");

        intent.putExtra(android.content.Intent.EXTRA_SUBJECT, title);
        intent.putExtra(android.content.Intent.EXTRA_TEXT, R.string.visita);
        Uri uri = Uri
        .parse("android.resource://com.package.xname/drawable/"
                + i);
        intent.putExtra(Intent.EXTRA_STREAM, uri);
于 2012-08-15T13:51:13.013 に答える
3

MediaStoreに画像を保存する際の問題をようやく解決しました。ファイルのURIを使用する代わりに、私が行うことは次のとおりです。

String agendaFilename = agendaFile.getAbsolutePath();

final ContentValues values = new ContentValues(2);
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
values.put(MediaStore.Images.Media.DATA, agendaFilename);
final Uri contentUriFile = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

そして最後に私は使用しますcontentUriFile

final Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setType("image/jpg");
intent.putExtra(android.content.Intent.EXTRA_STREAM, contentUriFile);
startActivity(Intent.createChooser(intent, "title"));
于 2012-08-20T13:32:34.680 に答える
0

このコードはもっと簡単です

Intent intent = new Intent(Intent.ACTION_SEND);
            intent.setData(Uri.parse("mailto:"));
            intent.putExtra(intent.EXTRA_EMAIL,"XXXXX@XXXX.com");
            intent.putExtra(intent.EXTRA_SUBJECT, "XXXXX");
            intent.putExtra(Intent.EXTRA_TEXT, "XXXXX");
            intent.setType("message/rfc822");
            chosser = Intent.createChooser(intent, "Enviar Email");
            intent.putExtra(intent.EXTRA_STREAM, uri);
            startActivity(chosser);
于 2018-01-10T11:41:43.247 に答える
0

私にとって、FileProviderを使用することはうまくいきました。内蔵カメラで写真を撮るためにセットアップして、共有に使用しました(以下を参照)。

final Uri uri = FileProvider.getUriForFile(mActivity, "com.paeuba.paragonik.fileprovider", photoFile);
Intent intent = ShareCompat.IntentBuilder.from(mActivity).setType("image/jpeg").setStream(uri).createChooserIntent();
mActivity.startActivity(intent);
于 2018-01-21T09:27:10.343 に答える