第163页
android:text="允许执行JavaScript代码" />
android:id="@+id/webView1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
(2)在MainActivity中,声明一个WebView组件的对象webview,具体代码如下:
private WebView webview; //声明WebView组件的对象
(3)在onCreate()方法中,首先获取布局管理器中添加的WebView组件和复选框组件,然后为复选框组件添加选中状态被改变的事件监听器,在重写的onCheckedChanged()方法中,根据复选框的选中状态决定是否允许使用JavaScript,最后为WebView组件指定要加载的网页,具体代码如下:
webview = (WebView) findViewById(R.id.webView1); //获取布局管理器中添加的WebView组件
CheckBox check = (CheckBox) findViewById(R.id.checkBox1); //获取布局管理器中添加的复选框组件
check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
webview.getSettings().setJavaScriptEnabled(true); //设置JavaScript可用
webview.setWebChromeClient(new WebChromeClient());
webview.loadUrl("http://192.168.1.66:8081/bbs/allowJS.jsp"); //指定要加载的网页
}else{
webview.loadUrl("http://192.168.1.66:8081/bbs/allowJS.jsp"); //指定要加载的网页
}
}
});
webview.loadUrl("http://192.168.1.66:8081/bbs/allowJS.jsp"); //指定要加载的网页
(4)由于在本实例中需要访问网络资源,所以还需要在AndroidManifest.xml文件中指定允许访问网络资源的权限,具体代码如下:
运行本实例,在屏幕上将显示不支持JavaScript的网页,选中上面的“允许执行JavaScript代码”复选框后,该网页将支持JavaScript。例如,选中“允许执行JavaScript代码”复选框后,单击网页中的“发表”按钮,将弹出一个提示对话框,如图14.12所示。
图14.12 让WebView支持JavaScript
14.3 经典范例
14.3.1 打造功能实用的网页浏览器
例14.10 在Eclipse中创建Android项目,名称为14.10,实现一个包含前进、后退功能并支持JavaScript的网页浏览器。(实例位置:光盘\TM\sl\14\14.10)
(1)修改新建项目的res\layout目录下的布局文件main.xml,将默认添加的TextView组件删除,然后添加一个水平线性布局管理器和一个用于显示网页的WebView组件,并在该布局管理器中添加“前进”按钮、“后退”按钮、地址栏编辑框和GO按钮,具体代码请参见光盘。
(2)在MainActivity中,声明一个WebView组件的对象webView,一个EditText对象和GO按钮对象,具体代码如下:
private WebView webView; //声明WebView组件的对象
private EditText urlText; //声明作为地址栏的EditText对象
private Button goButton; //声明GO按钮对象
(3)在onCreate()方法中,首先获取布局管理器中添加的作为地址栏的EditText组件、GO按钮和WebView组件,然后让WebView组件支持JavaScript,并为WebView组件设置处理各种通知和请求事件,具体代码如下:
urlText=(EditText)findViewById(R.id.editText_url); //获取布局管理器中添加的地址栏
goButton=(Button)findViewById(R.id.button_go); //获取布局管理器中添加的GO按钮
webView=(WebView)findViewById(R.id.webView1); //获取WebView组件
webView.getSettings().setJavaScriptEnabled(true); //设置JavaScript可用
webView.setWebChromeClient(new WebChromeClient()); //处理JavaScript对话框
//处理各种通知和请求事件,如果不使用该句代码,将使用内置浏览器访问网页
webView.setWebViewClient(new WebViewClient());
说明: 在上面的代码中,加粗的代码一定不能省略,如果不使用该句代码,将使用内置浏览器访问网页。
(4)获取布局管理中添加的“前进”按钮和“后退”按钮,并分别为它们添加单击事件监听器,在“前进”按钮的onClick()方法中调用goForward()方法实现前进功能;在“后退”按钮的onClick()方法中调用goBack()方法实现后退功能。具体代码如下:
Button forward=(Button)findViewById(R.id.forward); //获取布局管理器中添加的“前进”按钮
forward.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
webView.goForward(); //前进
}
});
Button back=(Button)findViewById(R.id.back); //获取布局管理器中添加的“后退”按钮
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {