Android 开发之 下载 图片数据

16 篇文章 0 订阅
15 篇文章 0 订阅

把网络上的图片数据下载到本地可以用sd卡,要把网络上的数据保存到本地并在断网的时候能继续使用 

首先我们来获取网络上的数据

1. //path为网络地址这儿可以是任何,本列子只说读取图片还有html 

2. URL url = new URL(path); 

3. // 记住使用的是HttpURLConnection 

4. HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 

5. conn.setRequestMethod("GET"); 

6. // 如果运行超过5秒会自动失效 

7. conn.setConnectTimeout(5 * 1000); 

8. //获取流 

9. InputStream inStream = conn.getInputStream(); 

10.ByteArrayOutputStream outSteam = newByteArrayOutputStream(); 

11.byte[] buffer = new byte[1024]; 

12.int len = -1; 

13.while ((len = inStream.read(buffer)) != -1) { 

14.outSteam.write(buffer, 0, len); 

15.} 

16.outSteam.close(); 

17.inStream.close(); 

18.FileOutputStream out = new FileOutputStream(newFile(activity.getFilesDir() + "/aa.html")); 

19.//html文件通过流文件写到data文件下 

20.out.write(data); 

21.// 关闭流 

22.out.close();

这样网络上的html就保存到本地了,现在是在webview里读取出这个html,大家知道有sd卡可以直接用url读取html,但是data文件没有直接的路径,所以我们也采用流的方式把html读取出来

1. FileInputStream file= this.openFileInput(name); 

2. //name为,你往data文件存的时候的html文件名这儿是aa.html 

3. byte[] buffer = new byte[file.available()]; 

4. file.read(buffer); 

5. file.close(); 

6. webview.getSettings().setSupportZoom(true); 

7. webview.getSettings().setDefaultZoom(ZoomDensity.FAR); 

8. webview.getSettings().setBuiltInZoomControls(true); 

9. webview.getSettings().setTextSize(TextSize.NORMAL); 

10.webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 

11.webview.loadData(newString(buffer).replaceAll("#", "%23"). 

12.replaceAll("%","%25").replaceAll("\'","%27"),"text/html", "utf-8");

复制代码

这儿要说明一点,获取的html流有很多特殊符号,这儿要做一些处理,想知道为什么的话可以查看一下webview源码 
如果html里面包含有图片,当你连网用webview加载了这个html那么webview会缓存这些图片,当你断网是也看以读取图片 
把网络图片保存到本地也是上面的操作只是在获取时有点区别

1. FileInputStream file=activity.openFileInput("保存的图片名"); 

2. Bitmap bmImg = BitmapFactory.decodeStream(file); 

3. newsimage.setImageBitmap(bmImg);

复制代码

由于时间关系,就只贴出了主要代码
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值