2015-02-05 3 views
2

Я выбираю изображение из галереи, мой код хорошо работает с kitkat, но он врезается в леденец.Выбор изображения из галереи в lollipop

Мой код:

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(); 
      } 
} 

Мой код сбой, потому что imageFilePath возвращается null.How я могу решить это?

+0

Вы имеете в виду 'cursor.getString() возвращает нуль? Ваш код не должен вылетать, если вы сначала проверите imageFilePath для null. – greenapps

+0

Я имею в виду cursor.getString всегда возвращает null – Okan

+0

Что говорит _uri.getPath()? – greenapps

ответ

0

Этот кодовый блок работал для меня.

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

где RESULT_LOAD_IMAGE = 1.

Тогда это простое добавление метода 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); 
    } 
} 
Смежные вопросы