У меня есть приложение, которое позволяет пользователю перейти в фотогалерею и выбрать фотографию для использования в качестве аватара. Код работает везде, кроме 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;
}
А потом я получаю данные растрового изображения, используя следующий код:
@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?
РЕДАКТИРОВАТЬ : чтобы сделать его более захватывающим, этот же код прекрасно работает в Honeycomb в обычной деятельности. Эта конкретная проблема возникает в PreferencesActivity.