Android 开发之webview使用

Android WebView与JavaScript交互指南
本文介绍了Android中WebView的使用,包括如何支持网页JavaScript、阻止超链接跳转到外部浏览器、实现网页JS调用Android程序的方法。同时,针对Android 2.2和2.3版本WebView JavaScript调用导致的系统崩溃问题进行了说明。
 1、WebView 显示进度条 在onCreate事件里写:
        WebView myWebView = (WebView) findViewById(R.id.webView1); 
        final Activity activity = this;   
        myWebView.setWebChromeClient(new WebChromeClient() {   
                   public void onProgressChanged(WebView view, int progress) {
                	   	activity.setTitle("正在努力为您加载....");
                        activity.setProgress(progress * 100);  
                        if(progress == 100)
                        	activity.setTitle("已完成");//或者设置为原有的Activity标题

                  }   
               });   
2、网页自适应webView宽度 在onCreate事件里写:
WebView myWebView = (WebView) findViewById(R.id.webView1); 
myWebView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);


3、webView支持网页JavaScript语言 在onCreate事件里写:

WebView myWebView = (WebView) findViewById(R.id.webView1); 
myWebView.getSettings().setJavaScriptEnabled(true);


4、网页里面超链接在webview里加载而不是在手机默认浏览器打开 在onCreate事件里写:

WebView myWebView = (WebView) findViewById(R.id.webView1);
myWebView.setWebViewClient(new WebViewClient(){   
       public boolean shouldOverrideUrlLoading(WebView view, String url) {   
             view.loadUrl(url);   
              return true;   
          }   
      }); 
myWebView.loadUrl("http://www.baidu.com"));//默认加载url只能放在setWebViewClient后面 否则网页里面超链接还是在手机默认浏览器打开而不是在WebView里加载


5、按手机返回按钮后退网页而不是打开WebView程序之前的界面:

 public boolean onKeyDown(int keyCode, KeyEvent event) 
    { // Check if the key event was the BACK key and if there's history 
    	WebView myWebView = (WebView) findViewById(R.id.webView1);  
    	if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) 
    		{
	    		myWebView.goBack(); 
	    		return true; 
    		} // If it wasn't the BACK key or there's no web page history, bubble up to the default // system behavior (probably exit the activity) 
    	return super.onKeyDown(keyCode, event); 
    }


6、网页Js调用Android程序:

新建一类JavaScriptInterface

package com.example.androidhouse;

import android.content.Context;
import android.widget.Toast;

public class JavaScriptInterface {
	Context mContext; 
	/** Instantiate the interface and set the context */ 
	JavaScriptInterface(Context c) { mContext = c; } 
	/** Show a toast from the web page */ 
	public void showToast(String toast) 
	{ 
		Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); 
	}
}

在onCreate事件里写:

WebView myWebView = (WebView) findViewById(R.id.webView1);
myWebView.addJavascriptInterface(new JavaScriptInterface(this),"Android");

网页js代码里写:

window.Andorid.showToast("我调用的Android程序");

切记:在Andorid2.2 和Android2.3里面 webview的js调用会引起系统崩溃出现vm aborting错误 这是这两个版本的BUG 解决起来很麻烦 到现在为止,我仍未找到解决的办法。



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值