简体   繁体   English

从棒棒糖的画廊中挑选图像

[英]Picking image from gallery in lollipop

I am picking image from gallery,my code works well with kitkat but it's crashing in lollipop. 我正在从画廊中挑选图像,我的代码在kitkat上效果很好,但是在棒棒糖中崩溃了。

My code: 我的代码:

    public static int LOAD_IMAGE_RESULTS = 1;
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == LOAD_IMAGE_RESULTS && data != null && data.getData() != null) {
            Uri _uri = data.getData();

            //User had pick an image.
            Cursor cursor = getActivity().getContentResolver().query(_uri, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null);
            cursor.moveToFirst();

            //Link to the image
            final String imageFilePath = cursor.getString(0);
            Log.w("ImageFile",imageFilePath);
            cursor.close();
          }
}

My code is crashing because imageFilePath is returning null.How can I resolve it ? 我的代码崩溃是因为imageFilePath返回null。如何解决呢?

This code block worked for me. 该代码块为我工作。

Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(i, RESULT_LOAD_IMAGE);

where RESULT_LOAD_IMAGE = 1. 其中RESULT_LOAD_IMAGE = 1。

Then it's the simple addition of the onActivityResult method: 然后是onActivityResult方法的简单添加:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
            && null != data) {
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 2;

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

        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        cursor.moveToFirst();

        final int width = options.outWidth;
        final int height = options.outHeight;
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String picturePath = cursor.getString(columnIndex);
        cursor.close();
        final Bitmap scaledBitmap = Bitmap.createScaledBitmap(
                BitmapFactory.decodeFile(picturePath, options), width,
                height, true);
        imageView.setImageBitmap(scaledBitmap);
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM