2015-02-05 106 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(); 
      } 
} 

我的代码崩溃,因为imageFilePath将返回null.How我能解决这个问题?

+0

你的意思是 'cursor.getString()' 的返回null?如果首先检查imageFilePath为null,则代码不会崩溃。 – greenapps 2015-02-06 10:38:38

+0

我的意思是cursor.getString总是返回null – Okan 2015-02-06 10:39:24

+0

_uri.getPath()告诉了什么? – greenapps 2015-02-06 10:42:14

回答

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