如何在启动ACTION_SEND意图时附加位图

时间:2013-06-18 04:34:27

标签: android bitmap mms

我有这段代码:

 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对象?

4 个答案:

答案 0 :(得分:26)

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

答案 1 :(得分:22)

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

def knapsack(J, R, J`):
  potential_solutions = []
  for j in J:
    if R > resources_used_by(j):
      potential_solutions.push( knapsack(J - j, R - resources_used_by(j), J' + j) )
    else:
      return J', R
  return best_solution_of(potential_solutions)

答案 2 :(得分:1)

试试这可能会对你有所帮助:

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

答案 3 :(得分:-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"));