2013-10-16 68 views
1

好吧我終於把問題歸結爲這種方法。Java Uri.fromFile路徑問題

我有稱爲文件File對象,當我做一個toString()它輸出如下

/storage/emulated/0/Pictures/ecohelp/IMG_ecohelp_20131016_214242.jpg 

現在後的文件對象被插入到以下方法

Uri uriFile = Uri.fromFile(file); 

當我做了一個uriFile.toString()它輸出以下內容

file:///storage/emulated/0/Pictures/ecohelp/IMG_ecohelp_20131016_214242.jpg 

現在我試着刪除/在「/ storage ...」的開頭,但它仍然不起作用,任何人都知道爲什麼會發生這種情況?它應該是file://像其他任何東西一樣,但是它放在其中三個。

我試圖模仿這種對圖片:http://developer.android.com/guide/topics/media/camera.html#saving-media

我在嘗試保存文件時,這個錯誤:

10-16 22:16:39.945: E/AndroidRuntime(32080): java.lang.RuntimeException: 
Failure delivering result ResultInfo{who=android:fragment:2, request=100, 
result=-1, data=null} to activity 
{com.example.ecohelp/com.example.ecohelp.MainActivity}: java.lang.NullPointerException 

回答

0

這被認爲是正確的行爲,因爲URI包含以下要素:

  • 方案:file://
  • 路徑:/storage/emulated/0/Pictures/ecohelp/IMG_ecohelp_20131016_214242.jpg

所有文件的URI通常有3條斜線,兩個用於計劃,一個說的路徑應該從根本上啓動文件系統(/)。

0

實際上,您收到的字符串是正確的URI。

總之,一個URI語法的去爲:

(方案)://(路徑)

其中路徑可能包含更多的子域(在http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax看看關於這些一個更完整的討論子場)。

現在,對於「文件」方案,路徑是相對本地路徑或絕對本地路徑的枯萎。在基於Unix的系統上,絕對路徑將以斜槓開始。

所以你的字符串是完全正確的:

文件:///storage/emulated/0/Pictures/ecohelp/IMG_ecohelp_20131016_214242.jpg

意味着該方案爲 「file」,並且路徑絕對本地文件:「/ storage/emulated/0/Pictures/ecohelp/IMG_ecohelp_20131016_214242。jpg「,這是你啓動的File對象的正確位置

至於你的NullPointerException,我不認爲它與URI或文件有關,我對Android開發並不瞭解,但我相信你應該有一個onActivityResult方法,可能是因爲你在那裏調用了某個方法,而沒有首先檢查空值?