将位图作为额外的结果Intent完全关闭应用程序
当我从另一个活动返回到主活动并在返回Intent中放置一个额外的位图时,该应用程序完全完成,并且主活动中的onActivityResult根本不会被调用。将位图作为额外的结果Intent完全关闭应用程序
SecondaryActivity.java
private void returnFromModule(int result) {
Intent intent = new Intent();
intent.putExtra(CameraModule.Keys.KEY_FILE_PATH, mFilepath);
//if the next line is omitted the app goes back normally to the main activity
intent.putExtra("data", mThumbnail);
setResult(result, intent);
finish();
}
注意,一切正常,当我不把多余的位图。位图也不是很大。
public static Bitmap getThumbnail(String filepath) {
ExifInterface exifInterface = getExifInterface(filepath);
byte[] thumbnailData = exifInterface.getThumbnail();
Bitmap thumbnail = BitmapFactory.decodeByteArray(thumbnailData, 0, thumbnailData.length);
return thumbnail;
}
这是放在意图中的缩略图位图。
MainActivity.java
这里是我的MainActivity的onActivityResult,但我不认为它很重要,因为很多时候一个位图被放在回归意向那就不叫的。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
((TextView)findViewById(R.id.path)).setText(data.getExtras().getString(CameraModule.Keys.KEY_FILE_PATH));
}
}
}
这里是我开始SecondaryActivity
startActivityForResult(new Intent(this, SecondaryActivity.class),1);
有大小限制了可以穿越活动的内容。你不能这样做。
我正在运行这与Android 6,不应该引发TransactionTooLargeException?位图也只是一个缩略图,应该通过,因为位图实现了Parcelable。 – ninjaintrouble
请告诉我们您试图放入该意图的字节数量。 – greenapps
位图是0.786 Mb – ninjaintrouble
您是否从MainActivity启动了SecondardActivity?如果你这样做,你是否通过使用startActivityForResult()将意图返回给MainActivity来启动SecondardActivity?如果你不这样做,你必须在创建类似下面的答案时设置类信息。 – kimkevin
是的,我开始了结果的活动。只有当我添加一个位图额外,它才能完成应用程序,否则它会正常返回。 – ninjaintrouble
返回一个位图是一个非常糟糕的主意。而且它不起作用,因为你可以看到。更好地返回文件路径并让接收器提取位图。 – greenapps