启动ACTION_SEND意图时如何附加一个位图

我有这个代码:

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

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

但是,如何启动意图时附加一个Bitmap对象?

我已经阅读http://developer.android.com/reference/Android/content/Intent.html ,我需要的是一个EXTRA_STREAM,像这样:

intent2.putExtra(Intent.EXTRA_STREAM,_uri);

但是我的情况是,我有一个Bitmap对象的引用,而不是一个Bitmap的URI。

请告诉我怎么做附加一个Bitmap对象?

Solutions Collecting From Web of "启动ACTION_SEND意图时如何附加一个位图"

  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来共享图像。

您必须先将位图保存到文件中。 你可以将它保存到应用程序的caching中

 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(); } } 

试试这可能会帮助你:

 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); 
  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"));