客户端需要调用JS,完成前后端的交互,更新前端的界面等。
一般来说,只需要调用下面一句话就可以调用JS中alipayCallBack()方法。

String msg = "message";  webView.loadUrl("javascript:showInfoFromJava(" + msg + ")");  

但是在功能实现的时候失败了。web报这个错误:
web console uncaught referenceerror: message is not defined at null:1
意思就是web认为message是一个变量名,而不是一个变量值。查了一下,发现JS定义String变量的时候用单引号,而JAVA是使用双引号。
因此把代码改成

String msg  = "message";  webView.loadUrl("javascript:showInfoFromJava('" + msg + "')");  

通过添加单引号,JS就知道message是变量值而不是变量名字了。在调用含参数的JS方法时容易出现这个问题。
如果是不含参数的JS方法,则直接写就好。例如下面,就直接调用了showInfoFromJava()方法。

webView.loadUrl("javascript:showInfoFromJava()");  

android调用JS方法注意两个编程方法中变量表示的不同。

还有其他4中情况,也可能会导致JS调用失败,一并总结如下:
1. webView.getSettings().setJavaScriptEnable(true); 设置webView支持JavaScript
2. webView.addJavascriptInterface(new JSCallBack(), “JSCallBack”); 绑定一个java对象webView,就是把一个Java对象和网页JS相关联。
3. 在JSCallBack类中,增加@JavascriptInterface注解,导入android.webkit.JavascriptInterface;
4. 检查ManiFeast,将android:targetSdkVersion改成17及一下。<其实我自己的工程就是17,但是没有影响>

附上部分Html代码:

<html><body><script type="text/javascript">            var a = document.documentElement.clientHeight;            document.getElementById("id").style.height = a+"px";script><script>          function showInfoFromJava(msg){                alert(msg);          }script>body>html>

更多相关文章

  1. (转)android AppWidgetProvider 定时刷新问题
  2. Android(安卓)-- AsyncTask
  3. Android(安卓)display架构分析-SW架构分析(1-8)
  4. Android:SQLite数据库
  5. Android(安卓)NDK之JNI使用例子
  6. Android显示从网络下载图片偏小的问题
  7. Android(安卓)调用系统应用选文件
  8. Android(安卓)Activity生命周期以及Fragment生命周期的区别与分
  9. android input命令 模拟按键

随机推荐

  1. 「React Native」安卓从零搭建RN项目(三种
  2. android文件导出错误—— failed to pull
  3. Android中View绘制流程
  4. Android项目复盘3
  5. android开源项目之OTTO事件总线(一)
  6. 移动端常见坑(转载自互联网)
  7. android.graphics包简介
  8. android环境搭配
  9. Android(安卓)浏览器启动应用程序
  10. Java转身系列之安卓1 —— 初识Android(