WebView使得Java和JavaScript可以互相的调用.
请看例子:
WebviewActivity.java
package com.cn; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.webkit.WebSettings; import android.webkit.WebView; public class WebviewActivity extends Activity { /** Called when the activity is first created. */ private WebView mWebView; private Handler mHandler = new Handler(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mWebView = (WebView) findViewById(R.id.webview); WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); mWebView.addJavascriptInterface(new Object() { public void clickOnAndroid() { mHandler.post(new Runnable() { public void run() { //Java调用Javascript方法 mWebView.loadUrl("javascript:wave()"); } }); } }, "demo"); //访问本地程序assets文件夹中的demo.html页面 mWebView.loadUrl("file:///android_asset/demo.html"); /** * 如果访问网站. 如http://rayln.iteye.com. 需要在AndroidManifest.xml中加入网络访问权限 * <uses-permission android:name="android.permission.INTERNET"></uses-permission> * 例如: * mWebView.loadUrl("http://rayln.iteye.com"); **/ } }
/assets/demo.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <script> function runDemo(){ //Javascript调用Java方法 window.demo.clickOnAndroid(); } function wave() { document.getElementById("change").innerText="Java中整用JS写入"; } </script> <body> <input value="点击我!!" onclick="runDemo()" type="button"/> <div id="change"></div> </body> </html>
PS:如果访问网站. 如http://rayln.iteye.com. 需要在AndroidManifest.xml中加入网络访问权限..
<uses-permission android:name="android.permission.INTERNET"></uses-permission>