日期:2014-05-16  浏览次数:20415 次

android 与JavaScript的互相调用

1.html代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>  
		<title>Android/Javascript互调Demo</title>
		<script type="text/javascript" language="javascript">
			function  callJavaScriptMethod()
			{
				document.getElementById("content").innerHTML = "Android 调用 Javascript 成功";
			}
		</script>
	</head>
	
	<body>
		<div ><a onClick="window.demo.callJavaMethod()" href="">点击-->JS调用Android代码</a></div>
		<div style="margin:50px 50px 50px 50px;" id="content"></div>
	</body>
</html> 



2.xml布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
		<WebView
			android:id="@+id/webview"
			android:layout_width="match_parent"
		    android:layout_height="wrap_content" />
		
		<Button
			android:id="@+id/androidCallJSBtn"
			android:layout_width="match_parent"
			android:layout_height="wrap_content"
			android:text="点击 Android 调用 JavaScript"/>
		
</LinearLayout>

3.Activity测试代码

package com.testwebview;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

	 private WebView mWebView;  
	 private Button androidCallJSBtn;
	 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
	}


    @SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" })
	private void initView() {
    	
        mWebView = (WebView) findViewById(R.id.webview);  
        WebSettings mWebSettings = mWebView.getSettings();  
       
        mWebSettings.setJavaScriptEnabled(true);   //加上这句话才能使用javascript方法  
        mWebView.addJavascriptInterface(new Object() {//增加接口方法,让html页面调用  

        	public void callJavaMethod() {  
               Toast.makeText(getApplicationContext(), "JS调用Android成功", Toast.LENGTH_LONG).show();
            }  
        	
        }, "demo");  
        mWebView.loadUrl("file:///android_asset/demo.html");  //加载页面  
        
        androidCallJSBtn = (Button) findViewById(R.id.androidCallJSBtn);  
        androidCallJSBtn.setOnClickListener(new Button.OnClickListener() {  //给button添加事件响应,执行JavaScript的fillContent()方法 
            public void onClick(View v) {  
                mWebView.loadUrl("javascript:callJavaScriptMethod()");  
            }  
        });  
    }  
}

4.效果图(依次是未调用前、android调用JS、JS调用android)

    


demo地址:htt