22

我有这个代码:

 Intent intent = new Intent(); 
 intent.setAction(Intent.ACTION_SEND); 
 startActivity(intent); 

这将在 Android 上成功启动消息应用程序。

但是在启动意图时如何附加位图对象?

我已阅读http://developer.android.com/reference/Android/content/Intent.html,我需要的壁橱是EXTRA_STREAM,如下所示:

intent2.putExtra(Intent.EXTRA_STREAM, _uri);

但我的情况是,我有位图对象的引用,而不是位图的 URI。

请告诉我如何附加位图对象?

4

4 回答 4

30
    String pathofBmp = Images.Media.insertImage(getContentResolver(), bitmap,"title", null);
    Uri bmpUri = Uri.parse(pathofBmp);
    final Intent emailIntent1 = new Intent(     android.content.Intent.ACTION_SEND);
    emailIntent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    emailIntent1.putExtra(Intent.EXTRA_STREAM, bmpUri);
    emailIntent1.setType("image/png");

其中位图是您必须存储在 SD 卡中的位图对象。然后将该 Uri 用于共享图像。

于 2013-06-18T04:39:09.347 回答
23

您必须首先将位图保存到文件中。您可以将其保存到应用程序的缓存中

private void shareBitmap (Bitmap bitmap,String fileName) {
    try {
        File file = new File(getContext().getCacheDir(), fileName + ".png");
        FileOutputStream fOut = new FileOutputStream(file);
        bitmap.compress(CompressFormat.PNG, 100, fOut);
        fOut.flush();
        fOut.close();
        file.setReadable(true, false);
        final Intent intent = new Intent(     android.content.Intent.ACTION_SEND);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
        intent.setType("image/png");
        startActivity(intent);
    } catch (Exception e) {
        e.printStackTrace();
    }

}
于 2015-09-28T17:57:38.897 回答
3

试试这个它可以帮助你:

ByteArrayOutputStream bos = new ByteArrayOutputStream();  
yourbitmapimagename.compress(CompressFormat.PNG, 0, bos);
Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_SEND); 
intent.setType("*/*"); 
intent.putExtra(Intent.EXTRA_STREAM, bos.toByteArray());
startActivity(intent); 
于 2013-06-18T07:21:01.820 回答
-12
 String cc=trlink.toString();
 Intent share = new Intent(Intent.ACTION_SEND);
 share.setType("text/plain");
 share.putExtra(Intent.EXTRA_TEXT,cc);
 startActivity(Intent.createChooser(share,"Share Text"));
于 2013-06-18T04:40:03.733 回答