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

本文介绍了一种将网络上的HTML和图片资源下载到本地的方法,以便在网络不可用时仍能在应用中显示这些资源。文中详细介绍了如何使用HttpURLConnection类获取网络资源,并将其保存到Android应用的data文件夹下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

把网络上的图片数据下载到本地可以用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);
由于时间关系,就只贴出了主要代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值