一实现的过程
功能需求的定义
结合WebView的API,初步确定这个简单浏览器的功能如下:
1 输入网址,显示跳转页面
2 页面的前进和回退
3 页面刷新
4 停止加载页面
5 历史记录的显示和清除
6 书签的添加和显示
7 保存图片
8 设置背景颜色
9 在页面内查找串
10 清除缓存
后来结合实际情况,最后确定浏览器所具有的功能如下:
1 输入网址,显示跳转页面
2 页面的前进和回退
3 页面刷新
4 历史记录的显示和清除
5 书签的添加和显示
接下来,一一介绍这些功能是怎样实现的
1输入网址,显示跳转页面
WebView提供了一个很好的接口void loadUrlString url),要使用WebView控件,需要在AndroidManifest.xml中添加如下权限:
<uses-permission android:name="android.permission.INTERNET" />
为了达到更好的效果,我增加了一个ProcessDialog控件,在页面加载过程中显示该控件;
增加一个Button和EdtiText,用于相应输入和接受输入。
2 页面的前进和后退
WebView提供了一对接口canGoBack()和goBack以及canGoFoward()和goFoward(),这里必须注意的是一定要重写onKeyDown()函数,否则当按返回键时,就会退出这个浏览器了。
3 刷新页面
利用WebView的接口reload()即可。
4 历史记录显示和删除
1历史记录的显示
在介绍这个之前,还要先介绍我写的另一个类ListShower,这个类将ArrayList<HashMap<String,String>>这样一个结构用listView显示出来,并且选中某一项时,将这一项的URL带回来。HashMap用来存放网址的标题和URL。有了这个类,显示历史记录就很简单了,利用WebView 的接口copyBackForwardList(),可活动历史记录的列表,在将它们放于ArrayList<HashMap<String,String>>这样的对象中,最后利用Intent的对象实现两个Activity之间的数据交换和跳转即可。
2历史记录的删除
利用WebView的接口clearHistory()即可。
5 书签的添加和显示
书签包含网址的标题和URL,这些信息需要保存到本地,而android数据存储在本地的方式有sharePreference、File以及SQLite数据库,考虑到数据的操作方便,我选的是将书签的信息保存到SQLite数据库里,这样取得利用WebView提供的接口getTitle和getUrl取得当前页面的标题和URL,再保存到数据库里即可。
书签的显示,先从数据库里拉取所有的数据,保存到ArrayList<HashMap<String,String>>的结构里,利用ListShower将其显示即可。
二遇到的问题
1 有时候不能显示网页
2 数据库创建失败
三解决的方法
1 刚开始的时候默认浏览器不能浏览器网页,后来设置了它的代理服务器和端口号就可以上网了。但利用WebView有时候还是不能上网。为了方便测试,我做了两个本地网页作为测试用,就解决了不能浏览网页的问题。
2 数据库这块,我创建了一个Bookmark类来管理,这个类的父类是Activity。在Main这个类里有个Bookmark的对象,它在OnCreate时被new出来,但在创建数据库时,放回的值总是空值,原来一个activity被new出来,但它还是处于为被激活状态,必须通过startAtctivity()将它激活。但这这样做的话必须要先停止Main这个activity。后来我想用Bookmark继承至server类,但发现这样数据交换的话,要改事先定义好的接口。最后我的解决方法是将Bookmar继承至Object类,这样只要new出来就可以了,然后再将Main的this指针传进去,就可以调用SQLite的接口了。
四 还可以完善和改进的地方
1书签的删除
这个需要删除ListView的选中的一项,然后在数据库中也删除这项。
2保存图片
可以选中网页中的图片,保存到本地
3书签重复
要检查当前添加的书签在数据库中是否已经存在。
五 学到的东西
1 Logcat某些日志信息的含义
2 WebView常用接口的使用
3 浏览器的基本功能
4 ListView的使用
5 WebView常用接口的使用
6 SQLite数据库的简单使用
效果如如下:
资源下载地址: