2012-03-21 71 views
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(); 
+0

你能在這裏粘貼堆棧跟蹤? – Triode 2012-03-21 15:46:57

回答

0

它崩潰,因爲你通過getParent()convertImageUriToFile方法(你可以看到NullPointerException異常的堆棧跟蹤)。根據android docsgetParent()如果活動不是嵌入的,則返回null。你最可能不是。

使用File f = convertImageUriToFile(uriSavedImage, this);代替。

對於其他錯誤,imageUri被空,看到這aswer非常可能的解釋和解決方案。

Morover,你imageUri是一個 「文件://」 URI類型,而不是 「內容://」 type.To從它那裏得到的路徑,使用

new File(uri.getPath()); 

,而不是你convertImageUriToFIle()方法。我認爲這種方法只適用於「content://」類型的uris。

其實,你並不需要從你自己製作的URI的文件路徑,你有路徑線:

File image = new File(imagesFolder, "img01"); 
+0

'Toast.makeText(getApplicationContext(), \t \t \t \t「「+ convertImageUriToFile(uriSavedImage,此).getAbsolutePath(), \t \t \t \t Toast.LENGTH_SHORT).show(); '我試圖顯示如上所述的路徑,但應用程序崩潰 – Androelpha 2012-03-22 08:46:02

+0

如果您需要幫助,請提供堆棧跟蹤。 – 2012-03-22 11:31:35

+0

只是一刻 – Androelpha 2012-03-22 13:53:08