如何在Android WebView中实现JavaScript-Java通信同步?
How do I make JavaScript-Java communication sync in Android WebView?
我有WebView, JS代码里面。我也有接口,允许Java方法调用从WebView到Java代码。我需要将数据从JS传递到Java。:
webView.loadUrl("javascript:getData()");
//Obtain Java object here
在JavaScript: function gataData () {
//serialize data to JSON, pass it as 'native' function param
JSInterface.setLocationsData(data);// This calls a Java function setLocationsData(String param)
}
JavaScript界面(Java代码):
void setLocationsData(String param){
//parse JSON here, create Java Object
}
问题是:在WebView . loadurl()和数据返回到我的Java代码时,我在WebView中调用脚本之间有延迟。Java代码不会等待JS完成它的业务。怎么解呢?
我遇到的唯一(hacky)解决方案是在调用loadUrl后使用一秒钟延迟。你可以使用addJavaSriptInterface()来实现。
或者如果JS处理时间太长,你必须使用回调
<input type="button" value="Say hello" onClick="callYourCallbackFunctionHere('Hello Android!')" />
<script type="text/javascript">
function callYourCallbackFunctionHere(toast) {
Android.callAndroidCallback(toast);
}
</script>
public class JavaScriptInterface {
Context mContext;
/** Instantiate the interface and set the context */
JavaScriptInterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
public void callAndroidCallback(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
相关文章:
- java.net和javascript之间正则表达式的差异
- 如何使用json将对象列表从java转换为javascript
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- JSON分析错误:Java中AJAX、Javascript和Servlet的意外EOF
- 如何将变量数据从Java类获取到JavaScript
- 将这些正则表达式从javascript转换为Java
- java,javascript签名的小程序(文件选择,ftp上传)安全性/套接字异常
- JavaScript/Java GWT with Rails
- php javascript java applet smart card signing pdf on server
- Javascript:Java类包和类冲突问题
- FF插件中的桥接JavaScript / Java
- Javascript/Java - Webservice returning doubles for date.valu
- 延迟Javascript/Java中函数内的代码执行
- 使用Rhino/JavaScript/Java显示DOS错误消息
- AES JavaScript & Java
- 如何在Android WebView中实现JavaScript-Java通信同步?
- 遍历2D数组(网格)的最佳寻路算法(JavaScript/Java/ c#)
- 获取网页源代码后,网页运行Javascript - Java
- Javascript/Java Servlet之间的响应/请求
- JavaScript, Java, Php或c++密码加密-修改算法