在android平板上用webview打开一个网页,调用里面的javascript方法,同时相互传参。 网上例子很少啊,基本都不能获取返回值,贴一个自己最后调试完的代码如下: Java: 代码如下: protected void onCreate(Bundle savedInstanceState) { …….. x = (WebView)this.findViewById(R.id.webView_viewTable); x.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); x.getSettings().setBuiltInZoomC 在Android应用开发中,WebView是一个非常重要的组件,它允许我们加载和显示网页内容。在某些情况下,我们需要在Java代码和JavaScript之间进行交互,比如调用JavaScript的方法并获取其返回值。以下是一个详细的教程,展示了如何在Android的WebView中实现这个功能。 你需要在`onCreate`方法中设置和配置WebView。确保JavaScript是启用的,这可以通过调用`setJavaScriptEnabled(true)`来完成。同时,可以添加一个JavaScript接口以便于Java代码和JavaScript之间进行通信。例如: ```java x = (WebView)this.findViewById(R.id.webView_viewTable); x.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); x.getSettings().setBuiltInZoomControls(true); x.getSettings().setJavaScriptEnabled(true); x.addJavascriptInterface(new JsToJava(), "stub"); // 创建一个名为"stub"的接口 ``` `addJavascriptInterface`方法接收一个实现了特定方法的Java对象(在这个例子中是内部类`JsToJava`)和一个字符串参数,这个字符串将在JavaScript中作为接口的名字。 然后,你可以加载HTML内容,或者直接调用JavaScript方法,将参数传递给JavaScript。例如: ```java // 加载HTML内容 x.loadDataWithBaseURL("", data, "text/html", "UTF-8", ""); // 调用JavaScript方法并传递参数 String url = "javascript:setValuesJson('" + jsonString + "')"; x.loadUrl(url); ``` 在JavaScript端,你需要定义一个与Java代码交互的函数。在这个例子中,我们有一个名为`setValuesJson`的函数,它接受Java传递的参数,并执行一些操作,如显示alert或者计算返回值: ```javascript <script type="text/javascript"> function setValuesJson(param) { alert(param); // 显示Java传递的值 var result = "传回Java的string"; window.stub.jsMethod(result); // 调用Java接口中的方法,将结果返回给Java } </script> ``` 在Java代码中,我们需要定义一个内部类`JsToJava`,该类需要实现`jsMethod`方法,这个方法会在JavaScript调用它时被触发,接收JavaScript返回的值: ```java private class JsToJava { @JavascriptInterface // 必须添加此注解,防止在API 17+被安全策略阻止 public void jsMethod(String paramFromJS) { System.out.println("js返回结果" + paramFromJS); // 打印JavaScript返回的结果 // 在这里处理返回的结果 } } ``` 通过这种方式,你可以在Android的WebView中调用JavaScript方法并获取返回值。请注意,为了安全起见,使用`addJavascriptInterface`时应该始终加上`@JavascriptInterface`注解,并对传入的数据进行适当的验证和清理,以防止XSS攻击。 总结一下,Android的WebView提供了强大的能力,使得Java代码能够与JavaScript进行交互。这不仅限于调用JavaScript方法,还可以包括传递数据、执行复杂操作等。在实际开发中,这种交互性对于构建混合式应用或增强原生应用的功能非常有用。记住,确保在处理JavaScript和Java之间的交互时,始终考虑安全性、性能和用户体验。
























- 粉丝: 6
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 网络安全工程实验书.doc
- 第3章-建筑安装工程定额.ppt
- 污水处理厂运营维护方案p.doc
- BIM技术在铁路隧道工程施工管理中的应用.doc
- 大数据时代数据新闻的实践浅析-以财新网数字说为例.docx
- 做高级软件工程师首选计算器学校一度教育软工培训.doc
- 大数据时代的医学院校数据结构课程教学改革初探.docx
- 涂膜防水屋面施工工艺标准.docx
- 公路土方路基施工方法.doc
- 关于水头损失根源的水力学理论探讨.docx
- 万科在给排水设计阶段的44个成本优化点.docx
- 工程质量管理关键控制点研究.doc
- 桥梁施工质量控制要点.ppt
- 天津某医院外科大楼外墙保温施工方案.doc
- [江苏]电厂机组烟气脱硫工程磨机房施工作业指导书.doc
- 大数据时代下公共管理的效用与效率研究.docx


