java.lang.NullPointerException:uri

时间:2016-12-08 12:55:20

标签: android nullpointerexception android-camera uri

我试图从摄像头获取捕获图像的URI我为什么得到异常java.lang.NullPointerException:uri,

这是我的代码。

Uri selectedImage = data.getData();


file = new File(URI(selectedImage)); 

public String URI(Uri contentUri)
 {
        Cursor cursor = null;

try
 {




String[] proj = {MediaStore.ACTION_IMAGE_CAPTURE};

     cursor=getActivity().getContentResolver().query(contentUri,proj,null,null,null);
      intcolumn_index=cursor.getColumnIndexOrThrow(MediaStore.ACTION_IMAGE_CAPTURE);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

此代码中存在许多问题,甚至忽略了它不完整的事实。根据您的说法,我将假设您为startActivity()致电ACTION_IMAGE_CAPTURE,并且您的问题中的代码来自onActivityResult()

首先,ACTION_IMAGE_CAPTURE的结果并未向您提供任何内容Uri。如果您在EXTRA_OUTPUT ACTION_IMAGE_CAPTURE上使用Intent,则根据您在EXTRA_OUTPUT中输入的值,您的图片应该是您要求的图片。否则,您会从Bitmap返回data.getExtra("data"),代表缩略图大小的图片。

其次,即使file = new File(URI(selectedImage));不是selectedImagenull也毫无意义。 AFAIK,该行甚至不会编译。即使这样,Uri也不是File.

第三,MediaStore.ACTION_IMAGE_CAPTURE不是从MediaStore检索的有效列。

第四,你假设MediaStore知道相机应用拍摄的照片。没有要求相机应用程序告诉MediaStore这张照片。

FWIW,this sample app演示使用ACTION_IMAGE_CAPTURE拍摄照片,然后使用UriACTION_VIEW的图片进行观看,以便查看图片。