2015-02-05 4 views
2

갤러리에서 이미지를 집어 내 코드는 kitkat에서 잘 작동하지만 롤리팝에서는 충돌합니다.롤리팝 갤러리에서 이미지 선택하기

내 코드 :

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

내 코드는 내가 그것을 해결할 수 null.How을 반환 imageFilePath 때문에 충돌한다?

+0

'cursor.getString() null을 반환은? 먼저 imageFilePath에서 null을 확인하면 코드가 중단되지 않아도됩니다. – greenapps

+0

커서가 항상 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); 
    } 
} 
관련 문제