我有一个应用程序,允许用户转到照片库并选择要用作头像的照片。除了Xoom之外,代码在任何地方都可以正常工作,Xoom会激活图库,允许用户选择照片,然后失败并显示“java.lang.RuntimeException:Failed to unparcel Bitmap”。我正在使用以下方法来调用图库:
public Intent getImagePickerIntent(int width, int height) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("outputX", width);
intent.putExtra("outputY", height);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("noFaceDetection", true);
intent.putExtra("setWallpaper", false);
intent.putExtra("return-data", true);
return intent;
}
然后我使用以下代码获取Bitmap数据:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == PHOTO_PICKED) {
// If the activity successfully captured a photo
if(resultCode == Activity.RESULT_OK && data.getExtras() != null) {
// Resize photo to 100x100 and then save to user's device
try {
// putting this in a try-catch after seeing odd exceptions on a Xoom
ImageHelper.save(PrefsActivity.this, MyApplication.DEVICE_PHOTO_FILE_NAME, ImageHelper.resize((Bitmap)data.getExtras().getParcelable("data"), 100, 100));
请注意,我通过调用(Bitmap)data.getExtras().getParcelable("data")
这在Android 2.3及更低版本上运行良好,不知道为什么它在3.x失败了吗?
编辑:为了让它更令人兴奋,这个相同的代码在常规Activity中的Honeycomb上运行良好。这个特殊问题发生在PreferencesActivity中。
答案 0 :(得分:2)
我最近在尝试在onActivityResult方法中返回一个Bitmap时遇到了类似的问题。令人费解的是,以下代码适用于SDK 3,但在更大的内容上失败:
Bundle extras = intent.getExtras();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("someImage");
作为一种解决方法,我将位图转换为使用startActivityForResult调用的活动中的字节数组:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
myBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
intent.putExtra( "myByteArray", stream.toByteArray() );
回到onActivityResult后,我用:
检索它byte[] myByteArray = intent.getExtras().getByteArray("myByteArray");
然后我转换回具有以下内容的位图:
InputStream is = new ByteArrayInputStream(myByteArray);
Bitmap bmp = BitmapFactory.decodeStream(is);
我希望这有助于某人。