2014-07-17 29 views
1

我需要从图库中获取图像并将其转换为位图。当我从图库中选择图像时,意图数据在onActivityResult中为null

这是发送意图代码:

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

onActivityResult:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == mResultLoadImage && resultCode == RESULT_OK && data != null) { 
      Uri pickedImage = data.getData(); 
      String[] filePath = { MediaStore.Images.Media.DATA }; 
      Cursor cursor = getContentResolver().query(pickedImage, filePath, 
        null, null, null); 
      cursor.moveToFirst(); 
      String imagePath = cursor.getString(cursor 
        .getColumnIndex(filePath[0])); 
      bitmap = BitmapFactory.decodeFile(imagePath); 
      someFunction(bitmap); 
      cursor.close(); 
     } 
} 

我总是得到一个NullPointerException,并与debuger,我发现数据意图为空。 任何解决方案?

+0

是否图像选择器意图变得开放? – niculare

+0

是的,意图选择器打开,但是当我选择图像时,它给我带来了错误。 – mvd3

回答

0

试试这个,它应该工作:

Intent intent = new Intent(Intent.ACTION_PICK); 
startActivityForResult(intent, RESULT_LOAD_IMAGE); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == RESULT_LOAD_IMAGE) { 
     Uri imageUri = data.getData(); 
     Bitmap imgBitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri), null, null); 
     // then do whatever you want with the bitmap 
    } 

} 
+0

同样的错误。 – mvd3

相关问题