参考 http://blog.csdn.net/chenfeng0104/article/details/7023448
http://www.cnblogs.com/mengdd/archive/2013/03/02/2940185.html
JavaScript调用Android
1.设置js Enable
WebView myWebView = (WebView) findViewById(R.id.webview); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true);
2.注册函数
// 用JavaScript调用Android函数: // 先建立桥梁类,将要调用的Android代码写入桥梁类的public函数 // 绑定桥梁类和WebView中运行的JavaScript代码 // 将一个对象起一个别名传入,在JS代码中用这个别名代替这个对象,可以调用这个对象的一些方法 myWebView.addJavascriptInterface(new WebAppInterface(this),"myInterfaceName");
3.设置标签
Android 4.1,API 17,也就是JELLY_BEAN
开始,只有被JavascriptInterface 注解标识的公有方法可以被JS代码访问。
4.网页中调用
//调用绑定的Java对象的方法,即调用Android代码显示对话框 function showAndroidToast(toast) { console.log("showAndroidToast method"); myInterfaceName.showToast(toast);//注意此处的myInterfaceName要和外部传入的名字一致,大小写正确 }
android调用Js
1.注册函数
myButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 用Android代码调用JavaScript函数: myWebView.loadUrl("javascript:myFunction()"); // 这里实现的效果和在网页中点击第一个按钮的效果一致 } });
2.html网页中写函数
function myFunction() { alert("Hello World!"); }
3.设置 chrome handler
// 如果不设置这个,JS代码中的按钮会显示,但是按下去却不弹出对话框
// Sets the chrome handler. This is an implementation of WebChromeClient
// for use in handling JavaScript dialogs, favicons, titles, and the
// progress. This will replace the current handler.
myWebView.setWebChromeClient(new WebChromeClient()
{
@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result)
{
// TODO Auto-generated method stub
return super.onJsAlert(view, url, message, result);
}
});