白羽
2018-09-14
来源 :网络
阅读 1043
评论 0
摘要:本文将带你了解Android应用开发之Android与JavaScript的交互记录,希望本文对大家学Android有所帮助
本文将带你了解Android应用开发之Android与JavaScript的交互记录,希望本文对大家学Android有所帮助
1. JavaScript 调用 Java
1.1 WebView 设置允许 JavaScript 运行
webView.getSettings().setJavaScriptEnabled(true);
1.2 创建 JavaScript 接口类
public class JsInterface { @JavascriptInterface public void showMes(String mes) { Log.e("JsInterface", "mes = " + mes); }}
方法必须添加 @JavascriptInterface 注解
1.3 WebView 添加 JavaScript 接口对象
webView.addJavascriptInterface(new JsInterface(), "JsInterface");
参数二是 JavaScript 用来调用接口类方法的对象名,建议使用类名避免混淆
1.4 Web 端使用 JavaScript 调用 Java 方法
if(window.JsInterface){ JsInterface.showMes(et_mes.value);}else{ alert("未传入 JsInterface 对象");}
2. Java 调用 JavaScript
2.1 Web 端使用 JavaScript 编写 function
var func_write = function(mes){ et_mes.value = mes;};
2.2 Android 端使用 WebView 调用 function
webView.loadUrl("javascript:if(window.func_write){window.func_write('" + mes + "')}");
3. 常见问题
3.1 JavaScript 调用的方法是在子线程中执行的
利用接口将方法映射到主线程,定义接口声明 JavaScript 接口类中的方法,并让 Activity 实现这个接口。然后通过构造方法将 Activity 对象传入 JavaScript 接口类中,通过 Activity 对象调用实现的方法,在 Activity 里面改变线程。
3.2 JavaScript 传递数组或者对象数据给 Java 时会出现类型错误
由于 JavaScript 中的数组成员类型可以不同,但 Java 的数组成员类型是一致的,所以传递数据的时稍不注意就会发生错误。应对这种情况,可以将数组或者对象转换为 Json 并通过传递字符串解决。
4. HTML网页代码示例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>WebView</title> <style type="text/css"> body{ background:#cccccc; } .button{ background:#ffffff; } </style></head><body><p><span>请输入字符串:<input type="text" id="et_mes"></span></p><p id="bt_java"><span class="button">点击调用Java</span></p> <script type="text/javascript"> var et_mes = document.getElementById("et_mes"); var bt_java = document.getElementById("bt_java"); bt_java.addEventListener("click", function(){ if(window.JsInterface){ JsInterface.showMes(et_mes.value); }else{ alert("未传入 JsInterface 对象"); } }); var func_write = function(mes){ et_mes.value = mes; }; </script></body></html>
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号