永远获得NPE

时间:2012-03-07 06:23:17

标签: android android-intent uri image-gallery

我想从图库中选择一张图片,然后在SD卡上获取图片的路径

     Intent intent = new Intent();
     intent.setType("image/*");
     intent.putExtra("crop", "true");
     intent.setAction(Intent.ACTION_PICK);
     startActivityForResult(Intent.createChooser(intent,
             "Select Picture"), 1);

然后活动结果为

 public void onActivityResult(int requestCode, int resultCode, Intent data) {

    String tempImage = null;
    File f = null ;
        if (resultCode == RESULT_OK && requestCode == 1 && data!=null) 
        {
                        Uri selectedImageUri = data.getData(); // always null Uri WHY?
                        selectedImagePath = getPath(selectedImageUri);
                        if(selectedImagePath!=null)
                        {

                 ........

和getPath方法

public  String getPath(Uri uri) {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }

问题是Uri selectedImageUri = data.getData();给出空值。昨天工作正常。

偶数intent不为空。

我尝试清理项目但问题仍然存在。

先谢谢!!

*更新解决方案*

解决方案是HERE

1 个答案:

答案 0 :(得分:0)

这个正在我的申请中工作:

启动Image Chooser:

    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_PICK);
    startActivityForResult(Intent.createChooser(intent,"Select Picture"), 201);

从URI获取SD卡路径的功能。

private String decodePath(Uri data)
{        
     Cursor cursor = getContentResolver().query(data, null, null, null, null);
     cursor.moveToFirst(); 
     int idx = cursor.getColumnIndex(ImageColumns.DATA);
     String fileSrc = cursor.getString(idx);   
     return fileSrc;
}