android获取网络数据到本地并查看
2013-06-05 11:26
302 查看
把网络上的图片数据下载到本地可以用sd卡,这个就不用说了,网上很多列子,前两天项目需要,没有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. //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);
复制代码
由于时间关系,就只贴出了主要代码。
相关文章推荐
- 从输入流中获取数据并以字节数组返回,这种输入流可以来自Android本地也可以来自网络
- Android -- 获取网络数据并将数据存到本地数据库中
- android 获取网络数据,回传到本地用TextView显示乱码问题解决方法
- Android 查看app本地端数据表
- Android开发17——获取网络资源之XML数据
- android ViewPager实现的轮播图广告自定义视图,网络获取图片和数据
- android获取网络数据
- android HttpClient访问网络获取数据
- Android利用ContentProvider获取本地数据的方法
- Android网络编程之获取网络上的Json数据实例
- Android通过URL获取网络数据
- android—获取网络数据
- Android使用HTTP GET、HTTP POST获取网络数据
- Android 获取视频(本地、网络)的第一关键帧
- Android网络请求缓存,本地数据缓存流程图
- Android利用Get、Post 获取网络数据
- Android 将从网络获取的数据缓存到私有文件
- wemall app商城源码Android 获取XML网络数据并绑定到ListView
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android中获取网络数据