lAndroidwebkit简介及开发遇到的一些问题
Android webkit简介
张立鹏
M厂开发五部目录
1、webkit架构2
2、Application3
2.1 WebViewClient里面几个重要方法3
2.2 WebChromeClient里面几个重要的方法3
2.3 使用webview的基本流程4
2.4 使用webview的扩展流程4
3、Webkit(framework)7
3.1 webkit(framework)流程的介绍7
3.2 webkit(framework)的一些扩展功能的修改:12
4、Webkit(external)15
4.1 从文件管理器上传文件到邮箱附件里16
4.2 修改webview上的复制效果17
4.3 扩展WML的支持18
4.4 调试19
5、浏览器开发过程中的一些调试手段19
1、webkit架构
目前Android平台自带的浏览器都是以webkit作为解析处理核心的,能够较好的使用webkit提供的功能,能够帮忙我们优化浏览器的一些功能和体验。
从架构上来看,android中的webkit的架构先可以划分为三个主要的部分。如图1-1,application对应的主要是使用webview等实现相应功能的应用,这块目前主要是浏览器或者其他三方应用。Webkit(framework)主要是作为对底层Webkit封装,并为应用提供一些显示方面扩展的功能。Webkit(external)则是整个webkit的核心部分,负责对页面的解析和显示排版等处理。
图1-1 android中webkit架构流程
2、Application
针对普通的应用开发者来说,并不需要知道webkit的实现流程,以及怎么去修改framework中的webkit。一般只需要知道怎么去使用webkit就可以达到自己想要的功能了。Android平台为开发者提供了webview等相应的组件来使用webkit的相应功能。下面就介绍下webview的使用和需要注意的一些地方。
Webview是继承了viewgroup的android提供的一些基本view之一,通过使用webview可以加载本地或者网络服务器上的html等一些页面。而通常我们会和webview配合使用的WebViewClient和WebChromeClient。
2.1 WebViewClient里面几个重要方法
onPageStarted:页面开始加载时会调用,用户可以在这个回调里面显示进度条以及一些初始操作。
onPageFinished:页面加载完毕时调用,可以在这个回调里面刷新界面。
shouldOverrideUrlLoading:需要用户是否针对这个url需要做特殊处理,在这个回调里面,可以对wtai协议或者其他一些特殊的url进行特殊的处理。另外,如果想要让所有点击的link都在当前窗口打开,则一般需要在这个回调里面这样做。
在这个回调里面如果返回true的话,webkit就认为用户以及处理过了,就不会再进行处理了。如果返回false,webkit会根据已有的逻辑进行处理。如打开新的窗口加载这个url等操作。
2.2 WebChromeClient里面几个重要的方法
onProgressChanged:在加载进度有变动的时候会调用这个函数,所以可以在这个函数里面更新加载进度条。
onCreateWindow:在这个回调里面创建窗口
onGeolocationPermissionsShowPrompt:在这个回调里面会提示是否允许使用位置信息
openFileChooser:在这个回调里面要求用户调用打开文件选择来选择文件
2.3 使用webview的基本流程
在使用webview的应用里面,首先创建一个webview,然后根据自己应用的需要添加WebViewClient或者WebChromeClient监听对象来实现一些界面上或者流程上的修改。如:
创建好这些后,通过webview的loadurl就可以加载网络上的数据或者本地数据了。如;
?? 互联网用:webView.loadUrl("");
?????本地文件用:webView.loadUrl("file:///android_asset/XX.html");
使用的地方需要注意的有:
如果是要加载网络服务器上的内容,则必须在应用的AndroidManifest.xml中使用许可"android.permission.INTERNET"如果用webview点链接看了很多页以后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。s