2013-04-16 156 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()));