Android transactiontoolargeexception通过intent extra通过电子邮件发送图像时发生异常

Android transactiontoolargeexception通过intent extra通过电子邮件发送图像时发生异常,android,android-layout,android-fragments,android-intent,Android,Android Layout,Android Fragments,Android Intent,这是我的代码,我想附加图像到电子邮件并发送它 String receiverEmail = receiver.getText().toString().trim(); String to[] = {receiverEmail}; Intent intent = new Intent(Intent.ACTION_SEND); intent.setData(Uri.parse("mailto:")); intent.setType("imge/jpeg");

这是我的代码,我想附加图像到电子邮件并发送它

    String receiverEmail = receiver.getText().toString().trim();
    String to[] = {receiverEmail};
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setData(Uri.parse("mailto:"));
    intent.setType("imge/jpeg");
    intent.putExtra(Intent.EXTRA_EMAIL, to);
    intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
    intent.putExtra(Intent.EXTRA_TEXT, "hello wats up");
    intent.putExtra(Intent.EXTRA_STREAM, bitmap );
    startActivity(intent);
我得到的错误是

Caused by: android.os.TransactionTooLargeException: data parcel size 1331968 bytes
此问题与位图文件有关。如何缩小尺寸。? 帮我解决这个问题。先谢谢你

{
oncreate method....
I have my bitmap here created with instance name bitmap which i want to send in email attachment
Uri bitmapUri = getImageUri(OutgoingEmbededImage.this, bitmap); //null pointer exception error here
String bitmapPath = getPathOfUri(bitmapUri);
end of on create method
}

//getting bitmapUri here 
 private Uri getImageUri(Context context, Bitmap myBitmap){
 ByteArrayOutputStream bytes = new ByteArrayOutputStream();
 myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
 String path = MediaStore.Images.Media.insertImage(context.getContentResolver(), myBitmap, "Image", null);
 return Uri.parse(path);
}

//string path here
public String getPathOfUri(Uri uri){
    Cursor cursor = getContentResolver().query(uri, null, null, null, null);
    cursor.moveToFirst();
    int index = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
    return cursor.getString(index);
}
在注释中提到的行上获取错误。 若我得到位图路径,那个么我可以在下面的行中传递它,我猜。。。如果我错了,请纠正我。希望您能理解我在代码中提到的问题,以便您能帮助我

intent.putExtra(Intent.ACTION_ATTACH_DATA, bitmapPath);
在这里:

导致问题的行,因为位图大小与允许的活页夹事务缓冲区大小一样大

请看这里:

:

活页夹事务缓冲区具有有限的固定大小,当前为1Mb, 由流程的所有正在进行的事务共享。 因此,当存在多个异常时,可能会引发此异常 即使在大多数单个交易 尺寸适中


因此,要解决此问题,而不是使用Intent.putExtra传递图像位图,请使用图像url、文件路径、URI、可绘制id等,。。。发送最小尺寸的数据。

Aalap,不要编辑我的答案,而是用你收到的最新代码和问题编辑你的帖子。我在这里更新了我的帖子,错误就在前面提到的那行。请帮我解决这个问题。。
intent.putExtra(Intent.EXTRA_STREAM, bitmap );