android获取网络数据到本地并查看

把网络上的图片数据下载到本地可以用sd卡,这个就不用说了,网上很多列子,前两天项目需要,没有sd卡,但是要把网络上的数据保存到本地并在断网的时候能继续使用
首先我们来获取网络上的数据
//path为网络地址这儿可以是任何,本列子只说读取图片还有html
URL url = new URL(path);
// 记住使用的是HttpURLConnection类
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
// 如果运行超过5秒会自动失效
conn.setConnectTimeout(5 * 1000);
//获取流
InputStream inStream = conn.getInputStream();
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = inStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
}
outSteam.close();
inStream.close();
FileOutputStream out = new FileOutputStream(new File(activity.getFilesDir() + "/aa.html"));
//把html文件通过流文件写到data文件下
out.write(data);
// 关闭流
out.close();
这样网络上的html就保存到本地了,现在是在webview里读取出这个html,大家知道有sd卡可以直接用url读取html,但是data文件没有直接的路径,所以我们也采用流的方式把html读取出来
FileInputStream file= this.openFileInput(name);
//name为,你往data文件存的时候的html文件名这儿是aa.html
byte[] buffer = new byte[file.available()];
file.read(buffer);
file.close();
webview.getSettings().setSupportZoom(true);
webview.getSettings().setDefaultZoom(ZoomDensity.FAR);
webview.getSettings().setBuiltInZoomControls(true);
webview.getSettings().setTextSize(TextSize.NORMAL);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webview.loadData(new String(buffer).replaceAll("#", "%23").
replaceAll("%", "%25").replaceAll("\'", "%27"),"text/html", "utf-8");
//这儿要说明一点,获取的html流有很多特殊符号,这儿要做一些处理,想知道为什么的话可以查看一下webview源码
如果html里面包含有图片,当你连网用webview加载了这个html那么webview会缓存这些图片,当你断网是也看以读取图片
把网络图片保存到本地也是上面的操作只是在获取时有点区别
FileInputStream file=activity.openFileInput("保存的图片名");
Bitmap bmImg = BitmapFactory.decodeStream(file);
newsimage.setImageBitmap(bmImg);
由于时间关系,就只贴出了主要代码。

你可能感兴趣的:(html,android)