在android的应用程序中,可以直接调用webview中的javascript代码,而webview中的javascript代码,也可以去调用ANDROID应用程序(也就是JAVA部分的代码).下面举例说明之:

1 JAVASCRIPT脚本调用android程序
要在webview中,调用addJavascriptInterface(OBJ,interfacename)
其中,obj为和javascript通信的应用程序,interfacename为提供给JAVASCRIPT调用的
名称,设置如下:

WebView webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(getIntent().getCharSequenceExtra("url").toString());
//设定JavaScript脚本代码的界面名称是”android”
webView.addJavascriptInterface(this, "android");
其中WEBVIEW调用的HTML页中,JS如下:
<script type="text/javascript">
function ok() {
android.js(document.forms[0].elements[0].value, document.forms[0].elements[1].value);
}

而这个android.js在哪呢?那是在应用程序中的
//JavaScript脚本代码可以调用的函数js()处理
public void js(String action, String uri) {
...../
}

这个JS中就是处理JAVASCRIPT发送过来的请求了.

2) 下面的例子,当WEBVIEW网页中输入后,点提交按钮,会跟ANDROID的应用程序进行交互
WebView webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new MyWebChromeClient());
webView.loadUrl(getIntent().getCharSequenceExtra("url").toString());

//onJsAlert()函数接收到来自HTML网页的alert()警告信息
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
if (message.length() != 0) {
AlertDialog.Builder builder = new AlertDialog.Builder(JExample02.this);
builder.setTitle("From JavaScript").setMessage(message).show();
result.cancel();
return true;
}
return false;
}

而HTML页中的JS事件为:
<input type="button" value="alert" onclick="alert(document.forms[0].elements[0].value)">

特别提示下,在自定义的MyWebChromeClient())中,除了可以重写onJSAlert外,还可以
重写onJsPrompt,onJsConfirm等,可以参考
http://618119.com/archives/2010/12/20/199.html

3) 下面这个例子,先显示第一张图片,点一点后,再显示第2张图片
HTML JS中:
<script language="javascript">
function changeImage02() {
document.getElementById("image").src="navy02.jpg";
}
function changeImage01() {
document.getElementById("image").src="navy01.jpg";
}
</script>
</head>
<body>
<a onClick="window.demo.onClick()">
<img id="image" src="navy01.jpg"/></a>
</body>

当点<a onClick="window.demo.onClick()">
后,调用ANDROID应用程序中的处理部分,看程序:
webView.addJavascriptInterface(new JSInterface(),"demo");

public final class JSInterface {
//JavaScript脚本代码可以调用的函数onClick()处理
public void onClick() {
handler.post(new Runnable() {
public void run() {
if (flag == 0) {
flag = 1;
webView.loadUrl("javascript:changeImage02()");
} else {
flag = 0;
webView.loadUrl("javascript:changeImage01()");
}
}
});
}
}
可以看到,ANDROID中,通过webView.loadUrl去调用HTML页面中的JS

更多相关文章

  1. Android中webview跟JAVASCRIPT中的交互
  2. Android核心模块及相关技术
  3. Android(安卓)Framework中JNI调用
  4. Android中使用CountDownTimer实现Button上倒计时
  5. IBM详解 Android(安卓)的 Activity 组件
  6. Android如何调用第三方SO库
  7. Android中webview跟JAVASCRIPT中的交互
  8. android传递参数
  9. android JNI 调用

随机推荐

  1. WebView中的视频播放
  2. android animaltion Interpolator使用
  3. android中通过拨号键打开contacts相关界
  4. 获取RadioButton选中的值
  5. [置顶] Android Studio Android SDK Andr
  6. Android Animation(API Guides翻译)
  7. 开机自启动3
  8. android 读取联系人
  9. 2.4.11 网格视图和图像切换器
  10. android编译时添加库第三方库文件