Android与JS交互:Java调用JS与JS调用Android方法

需积分: 3 1 下载量 21 浏览量 更新于2024-09-09 收藏 7KB TXT 举报
"js和android的java通信.txt" 在Android应用开发中,有时我们需要实现JavaScript与Android原生Java代码的交互。这个文档介绍了一个简单的示例,展示了如何在Android的WebView组件中通过JavaScript调用Java方法,以及Java方法如何响应JavaScript的调用。 1. JavaScript调用Android Java方法: 在HTML文件中,JavaScript函数`callAndroid()`被定义,当用户点击特定链接时,`onclick`事件触发这个函数。在这个例子中,`window.android.callAndroid('HellofromBrowser')`调用了名为`callAndroid`的Android Java方法,并传递参数`'HellofromBrowser'`。要使这个功能生效,Android的Java代码需要注册一个`WebChromeClient`或`WebViewClient`,并重写`addJavascriptInterface()`方法,将Java对象暴露给JavaScript环境。 2. Android Java响应JavaScript: Android的Java代码需要创建一个`WebView`对象,并设置`WebSettings`允许JavaScript执行。然后,通过`addJavascriptInterface()`方法,我们可以创建一个Java对象(如`AndroidBridge`),并将其方法映射到JavaScript可以调用的接口。例如,Java中的`AndroidBridge.callFromJS(String arg)`方法可以对应到JavaScript的`window.android.callFromJS`。 3. JavaScript与嵌入式IFrame通信: 如果HTML中包含IFrame,JavaScript可以通过`parent`对象访问IFrame中的元素。例如,`parent.document.getElementById('id')`可以获取父页面中ID为'id'的元素。对于IFrame内部的元素,可以使用`document.getElementById('iframeId').contentDocument.getElementsByTagName('table')`来获取表格元素。 4. JavaScript跨域通信: JavaScript跨域通信通常受到同源策略的限制。然而,可以通过设置`window.postMessage()`方法和事件监听器实现跨域消息传递。发送方JavaScript会调用`window.postMessage()`,接收方需要监听`message`事件。 5. JavaScript历史操作: JavaScript可以操作浏览器的历史记录,例如`window.history.back()`用于返回上一页,`window.location.href`可以改变当前页面的URL。 6. JavaScript动态创建元素: JavaScript可以动态创建和修改HTML元素。例如,创建一个新的文本输入框可以使用`document.createElement('input')`,并设置其属性如`type`、`id`等,然后添加到DOM中。 7. JavaScript与服务器交互: JavaScript通常使用Ajax技术(XMLHttpRequest或Fetch API)与服务器进行异步数据交换。这使得网页可以在不刷新的情况下更新内容。 在实际应用中,这种JavaScript与Android Java的通信方式可以用于实现多种功能,如用户输入验证、数据同步、界面动态更新等。为了保证安全性,需要注意防止跨站脚本攻击(XSS)和其他潜在的安全问题。