1、Android开发实战经典第12章:网络通信 WebView组件李兴华北京魔乐科技软件学院本章目标E-MAIL: 理解WebView组件的主要作用;可以使用HTML进行Android显示界面的开发;可以通过WebView实现本地程序与Javascript的互调用;可以使用Javascript调用本地Android程序。WebView组件E-MAIL: WebView是一个开放的浏览器组件,是基于WebKit内核开发出来的,像 苹果的Safari、Google Chrome浏览器都是通过WebView实现的,而在Android系统之中,默认也提供了WebView组件的支持,用户可以直接使 用We
2、bView组件显示网页的内容,或者是将一些指定的HTML文件嵌入进 来,除了支持各个浏览器的“前进”、“后退”等功能之外,最为强大的 是在WebView组件之中也支持Javascript的操作。android.webkit.WebView的继承结构如下所示:java.lang.Objectandroid.view.Viewandroid.view.ViewGroupandroid.widget.AbsoluteLayoutandroid.webkit.WebViewWebView组件的常用方法(A)E-MAIL:No.方法类型描述1public WebView(Context context)
3、构造取得WebView类的实例化对象2public void addJavascriptInterface(Object obj,StringinterfaceName)普通绑定一个Javascript的对象3public boolean canGoBack()普通判断能否实现后退操作4public boolean canGoBackOrForward(int steps)普通判断是否可以后退或前进指定步数5public boolean canGoForward()普通判断是否可以前进6public boolean canZoomIn()普通判断是否可以缩小7public boolean ca
4、nZoomOut()普通判断是否可以放大8public void clearCache(boolean includeDiskFiles)普通清空缓存,如果是false则只清空RAM9public void clearFormData()普通清空表单的填写记录10public void clearHistory()普通清空历史信息11public int getProgress()普通得到访问进度12public String getTitle()普通取得当前访问页面的标题13public void goBack()普通后退一步WebView组件的常用方法(B)E-MAIL:No.方法类型描述
5、14public void goBackOrForward(int steps)普通后退或前进指定的步数15public void goForward()普通前进一步16public void loadData(String data,String mimeType,Stringencoding)普通通过指定的字符串进行页面的加载17public void loadUrl(String url)普通读取指定的URL地址数据18public void reload()普通重新加载页面19public void savePassword(String host,String username,St
6、ring password)普通保存密码20public void setDownloadListener(DownloadListenerlistener)普通对下载文件进行进行监听21public void setWebChromeClient(WebChromeClient client)普通使用Google Chrome作为客户端22public void setWebViewClient(WebViewClient client)普通使用WebView作为客户端23public boolean zoomIn()普通缩小24public boolean zoomOut()普通放大25p
7、ublic WebSettings getSettings()普通返回WebSettings对象E-MAIL:E-MAIL:范例:定义Activity程序public class MyWebViewDemo extends Activity/文本输入组件/WebView组件private EditText inputurl=null;private Button open=null;/按钮组件private WebView webview=null;Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(sav
8、edInstanceState);super.setContentView(R.layout.main);/默认布局管理器this.inputurl=(EditText)super.findViewById(R.id.inputurl);/取得组件this.open=(Button)super.findViewById(R.id.open);/取得组件this.webview=(WebView)super.findViewById(R.id.webview);/取得组件this.open.setonclickListener(new OpenonclickListenerImpl();/设置单
9、击事件E-M AIL:范例:修改AndroidManifest.xml文件配置权限E-MAIL: 范例:读取字符串信息E-MAIL:范例:定义布局管理器 main.xml线性高度为屏幕高度MAIL:E-布局 管理器高度为屏幕高度组件范例:定义Activity程序package org.lxh.demo;import android.app.Activity;import android.os.Bundle;import android.webkit.WebView;public class MyWebViewDemo extends Activity private WebView webvi
10、ew=null;/WebView组件Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);super.setContentView(R.layout.main);/默认布局管理器this.webview=(WebView)super.findViewById(R.id.webview);/取得组件String data=MLDNJava Training.E-MAIL:范例:实现自己的浏览器E-MAIL:范例:定义HTML显示界面E-MAIL:设置HTML文件的保存路径
11、*.html文件被保存在了assets/html文件夹之 中,这样以后Activity程序在通过WebView 组件进行访问的时候,只需要在loadUrl()中 填写以下的路径信息即可。范例:访问项目中的show_js.html文件 file:/android_asset/html/show_js.htmlE-MAIL:范例:定义包含Javascript的HTML文件function openurl(url)window.location=url;E-MAIL:height=220img src=http:/view- width=150请选择您要浏览的网站:MLDN魔乐科技软件学院E-范例:
12、定义布局管理器 main.xml线性布局管理器高度为 屏幕高度高度为屏幕高度MAIL:E-范例:定义Activity程序,读取HTML文件package org.lxh.demo;import android.app.Activity;import android.os.Bundle;import android.webkit.WebView;public class MyWebViewDemo extends Activity private WebView webview=null;Overridepublic void onCreate(Bundle savedInstanceState
13、)super.onCreate(savedInstanceState);super.setContentView(R.layout.main);/默认布局管理器this.webview=(WebView)super.findViewById(R.id.webview);/取得组件this.webview.getSettings().setJavascriptEnabled(true);/启用javascriptMAIL:E-MAIL:范例:修改AndroidManifest.xml文件配置权限E MWebChromeClient 使用WebView也可以专门处理Javascript返回的警告框
14、、确认框等互操作,而此时就需要使用android.webkit.WebChromeClient这个客户端处理的 操作类完成。No.方法类型描述1public void oncloseWindow(WebView window)普通窗口关闭操作2public boolean onCreateWindow(WebView view,boolean dialog,boolean userGesture,Message resultMsg)普通创建新的WebView-3public boolean onJsalert(WebView view,String url,String JsRmeseussl
15、targees,ult)AIL:普通弹出警告框互操作范例:本地程序与Javascript互操作E-MAIL:范例:定义HTML页面 show_js.html魔乐科技软件学院:function openalert()window.alert(魔乐科技软件学院nwww.MLDNJAVA.cn);function openConfirm()E-MAIL:)if(window.confirm(是否删除此信息?/确定删除JsResult类E-MAIL: 通过show_js.html页面,读者可以发现,在确认框中有一个询问是否删除 的提示,如果确认删除则要跳转到“delete_js.html”文件执行删除
16、操作,但是此时这个操作的执行也需要由Activity进行,而要想执行此操作则 需要使用到android.webkit.JsResult类完成(例如:在onJsConfirm()、onJsalert()方法中都有此参数),此类中定义了两个操作方法:取消对话框:public final void cancel();确认操作:public final void confirm();范例:定义删除信息后的显示文件 delete_js.htmlE-MAIL:魔乐科技软件学院:信息已删除!import android.app.Activity;import android.app.alertDialog;import android.app.Dialog;import android.content.DialogInterface;import android.os.Bundle;import android.webkit.JsResult;import android.webkit.WebChromeClient;import android.webkit.WebView;import andr
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1