在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被Linux内核除名
  2. Android(安卓)Studio 常用快捷键
  3. 设置TextView文字居中,代码实现android:layout_gravity
  4. Android核心模块及相关技术
  5. Android(安卓)Studio 如何引用aar包
  6. Android中webview跟JAVASCRIPT中的交互
  7. Android中webview跟JAVASCRIPT中的交互
  8. Android核心模块及相关技术
  9. Android(安卓)Framework中JNI调用

随机推荐

  1. android 连续点击三次跳转到下一面
  2. Android .so和.a的makefile
  3. android datepicker只显示年和日期
  4. android 视频图片混合轮播实现
  5. android应用常见错误
  6. 日常记录
  7. 缓存统一管理工具类--android
  8. Android修改默认浏览器为其他浏览器
  9. 判断当前是电脑还是手机打开网页
  10. Android使用adb命令对手机进行截屏保存到