Android Lollipop上没有出现图像

时间:2015-08-20 11:20:21

标签: android android-layout android-imageview android-5.0-lollipop android-image

我正在尝试从Android Lollipop上的图库中选择一张图片并在显示屏上显示。我使用以下代码进入图库并选择图像:

Intent galleryIntent = new Intent(
                Intent.ACTION_PICK,
                android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
// Start the Intent
startActivityForResult(galleryIntent, RESULT_LOAD_IMG);

我正在使用以下代码来挑选图片并显示它:

Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };

// Get the cursor
Cursor cursor = getContentResolver().query(selectedImage,
        filePathColumn, null, null, null);
// Move to first row
cursor.moveToFirst();

int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
imgDecodableString = cursor.getString(columnIndex);
cursor.close();

// Set the Image in ImageView after decoding the String
ImageViewFinal.setImageBitmap(BitmapFactory
        .decodeFile(imgDecodableString));

不知何故未显示所选图像。它适用于较低的Android版本,但不适用于Lollipop。 Logcat也没有显示任何错误,这意味着图像实际上已被选中但由于某种原因它隐藏在灰色屏幕后面。

1 个答案:

答案 0 :(得分:0)

我找到了一个适合我的解决方案。在这里,

Uri selectedImageUri = data.getData();
    String[] projection = { MediaColumns.DATA };
    Cursor cursor = managedQuery(selectedImageUri, projection, null, null,
            null);
    int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
    cursor.moveToFirst();

    String selectedImagePath = cursor.getString(column_index);

    Bitmap bm;
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(selectedImagePath, options);
    final int REQUIRED_SIZE = 200;
    int scale = 1;
    while (options.outWidth / scale / 2 >= REQUIRED_SIZE
            && options.outHeight / scale / 2 >= REQUIRED_SIZE)
        scale *= 2;
    options.inSampleSize = scale;
    options.inJustDecodeBounds = false;
    bm = BitmapFactory.decodeFile(selectedImagePath, options);

    ImageViewFinal.setImageBitmap(bm);

我非常感谢你们表示有兴趣帮助我解决这个问题。