1

是否有一种标准方法来检索相机拍摄的保存图像的路径,因为我找到了不同的方法来显示路径,但它们会导致应用程序崩溃。由于我是 android 编程新手,我只需要一些指导。请检查代码:

Java 代码:

@Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            File imagesFolder = new File(Environment.getExternalStorageDirectory(), "My Images");
            imagesFolder.mkdirs();
            File image = new File(imagesFolder, "img01");
            uriSavedImage = Uri.fromFile(image);
            File f = new File (uriSavedImage.getPath());// <---------
            //imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
            imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, f.getPath()); // <---------
            startActivityForResult(imageIntent,CAMERA_REQUEST_CODE);
        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if ((requestCode == CAMERA_REQUEST_CODE) && (resultCode == RESULT_OK)) {

            Toast.makeText(getApplicationContext(),// <---------
                    " "+data.getData(), 
                    Toast.LENGTH_SHORT).show();
4

1 回答 1

0

它崩溃是因为您传递getParent()convertImageUriToFile方法(您可以在堆栈跟踪中看到 NullPointerException)。根据android 文档 getParent(),如果活动不是嵌入式活动,则返回 null。你的很可能不是。

改为使用File f = convertImageUriToFile(uriSavedImage, this);

对于另一个错误,imageUri 为空,请参阅此aswer以获得非常可能的解释和解决方案。

Morover,您的 imageUri 是“f​​ile://”类型的 uri,而不是“content://”类型。要从中获取路径,请使用

new File(uri.getPath());

而不是你的convertImageUriToFIle()方法。我认为该方法仅适用于“content://”类型的 uris。

实际上,您不需要从您自己制作的 uri 中获取文件路径,您在该行中有该路径:

File image = new File(imagesFolder, "img01");
于 2012-03-21T20:33:26.907 回答