乐读文学

Android从入门到精通

乐读文学 > 科普学习 > Android从入门到精通

第163页

书籍名:《Android从入门到精通》    作者:明日科技




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)  {