问题
I have this code:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
startActivity(intent);
Which will successfully launch a Messaging App on Android.
But how can I attach a Bitmap object when launching the intent?
I have read http://developer.android.com/reference/Android/content/Intent.html, the closet thing to what I need is EXTRA_STREAM, like this:
intent2.putExtra(Intent.EXTRA_STREAM, _uri);
But my case, I have a reference of Bitmap object, not an URI of a Bitmap.
Please tell me what to do to attach a Bitmap object?
回答1:
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");
Where bitmap is your bitmap object which must be store in SD Card. and then use that Uri for shareimage.
回答2:
You must first save the bitmap to a file. you can save it to the app's cache
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();
}
}
回答3:
Try this it may help you:
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);
回答4:
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"));
来源:https://stackoverflow.com/questions/17160593/how-to-attach-a-bitmap-when-launching-action-send-intent