我有一个网址,例如http://somedomain.com/sync_login/go123/go并且它提供了一个XML,如果你要在网页浏览器中查看它(我使用的是firefox),输出是这样的:
<SyncLoginResponse>
<Videos>
<Video>
<name>27/flv</name>
<title>scooter</title>
<url>http://somedomain.com/tabletcms/tablets/tablet_content/000002/videos/</url>
<thumbnail>http://somedomain.com/tabletcms/tablets/tablet_content/000002/thumbnails/106/jpg</thumbnail>
</Video>
</Videos>
<Slideshows>
<Slideshow>
<name>44</name>
<title>ProcessFlow</title>
<pages>4</pages>
<url>http://somedomain.com/tabletcms/tablets/tablet_content/000002/slideshows/</url>
</Slideshow>
<Slideshow>
<name>71</name>
<title>Processflows</title>
<pages>3</pages>
<url>http://somedomain.com/tabletcms/tablets/tablet_content/000002/slideshows/</url>
</Slideshow>
</Slideshows>
<Forms>
<Form>
<name>Best Form Ever/html</name>
<url>http://somedomain.com/tabletcms/tablets/tablet_content/000002/form/</url>
</Form>
</Forms>
<Websites>
<Website>
<name>facebook</name>
<url>http://www.facebook.com</url>
</Website>
</Websites>
<Surveys>
<Survey>
<name>CokeSurvey/html</name>
<url>http://somedomain.com/tabletcms/tablets/tablet_content/000002/survey/</url>
</Survey>
</Surveys>
<Interactives>
<Interactive>
<name>34/swf</name>
<title>PirateGem</title>
<url>http://somedomain.com/tabletcms/tablets/tablet_content/000002/interactives/</url>
<thumbnail>http://somedomain.com/tabletcms/tablets/tablet_content/000002/thumbnails/110/png</thumbnail>
</Interactive>
<Interactive>
<name>36/swf</name>
<title>tictactoe</title>
<url>http://somedomain.com/tabletcms/tablets/tablet_content/000002/interactives/</url>
<thumbnail>http://somedomain.com/tabletcms/tablets/tablet_content/000002/thumbnails/106/jpg</thumbnail>
</Interactive>
</Interactives>
<Skins>
<Skin>
<title>CokeZero</title>
<fontcolor>F50A0A</fontcolor>
<backgroundcolor>787777</backgroundcolor>
<reset>18-reset/png</reset>
<slideshows>18-slideshows/png</slideshows>
<url>http://somedomain.com/tabletcms/tablets/tablet_content/000002/skins/</url>
</Skin>
</Skins>
<AdminSites>
<AdminSite>
<name>yahoo</name>
<url>http://www.yahoo.com</url>
</AdminSite>
</AdminSites>
<AdminSlideshows>
<AdminSlideshow>
<name>71</name>
<title>Processflows</title>
<pages>3</pages>
<url>http://somedomain.com/tabletcms/tablets/tablet_content/000002/slideshows/</url>
</AdminSlideshow>
</AdminSlideshows>
<AdminVideos>
<AdminVideo>
<name>27/flv</name>
<title>scooter</title>
<url>http://somedomain.com/tabletcms/tablets/tablet_content/000002/videos/</url>
<thumbnail>http://somedomain.com/tabletcms/tablets/tablet_content/000002/thumbnails/106/jpg</thumbnail>
</AdminVideo>
</AdminVideos>
<UserDetails>
<userid>137</userid>
<userfirstname>Jayem</userfirstname>
<userlastname>Dalisay</userlastname>
<messages></messages>
<companyname>John Stewart Company</companyname>
</UserDetails>
</SyncLoginResponse>
我想在平板电脑上下载该XML上提供的信息和文件。
我是android dev的新手,非常感谢提前!
答案 0 :(得分:1)
private Uri downloadFileFromURL(URL url, Context context, String fileName) {
try {
URLConnection conn = url.openConnection();
HttpURLConnection httpConnection = conn instanceof HttpURLConnection ? (HttpURLConnection ) conn : null;
if(httpConnection != null) {
int contentLength = httpConnection.getContentLength();
int len, length = 0;
byte[] buf = new byte[8192];
InputStream is = httpConnection.getInputStream();
File file = new File(context.getExternalFilesDir(null), fileName);
OutputStream os = new FileOutputStream(file);
try {
while((len = is.read(buf, 0, buf.length)) > 0) {
os.write(buf, 0, len);
length += len;
publishProgress((int) (PROGRESS_MAX * (float) length / contentLength));
}
os.flush();
}
finally {
is.close();
os.close();
}
return Uri.fromFile(file);
}
}
catch(IOException e)
{
//Exception handling goes here
}
return null;
}
我在AsyncTask类中编写了这个方法,所以我使用publishProgress来更新进度,你可以删除那一行。但我建议你也写下你的AsyncTask。
希望有所帮助:)
并且不要忘记在android-manifest.xml中添加android.permission.INTERNET权限。我犯了这个愚蠢的错误:)