2013-04-16 113 views
3

我的代碼將停止在這裏的sourceURL聲明,並拋出一個異常:解析SD卡中的Android

java.net.MalformedURLException:協議未發現:MNT/SD卡/安卓/數據...

URL sourceUrl = new URL(Environment.getExternalStorageDirectory() + "/Android/data/com.esentral.testdev/"+"temp2.xml"); 

MyXMLHandler myXMLHandler = new MyXMLHandler(); 
xr.setContentHandler(myXMLHandler); 
xr.parse(new InputSource(sourceUrl.openStream())); 

的是這裏的情況下,某種類型的URL-String的轉換錯誤?如果是這樣,是否有一個共同的解決方法? 我聽說SAX是要走的路,但它可能會使事情進一步複雜化。謝謝。

回答

1

有效的URL以協議開頭。沒有協議返回Environment.getExternalStorageDirectory(),它返回一個文件路徑。您需要將文件協議添加到字符串的開頭。

+0

謝謝。對你很好。 會從這裏進步。 – babyhir

4

你必須指定像http,ftp,文件等協議。在這裏你從sdcard訪問它,所以它將是整個路徑之前的"file://"

現在修改您的代碼段與此,

URL sourceUrl = new URL("file://" + Environment.getExternalStorageDirectory() + "/Android/data/com.esentral.testdev/"+"temp2.xml"); 
MyXMLHandler myXMLHandler = new MyXMLHandler(); 
xr.setContentHandler(myXMLHandler); 
xr.parse(new InputSource(sourceUrl.openStream()));