android webview 内的原始 tcp 套接字

Raw tcp socket inside android webview

简介

我正在开发一个 Android 应用程序,它允许非程序员使用可视化编程语言(基于块)对教育机器人进行编程。这个机器人运行 lua 虚拟机,可以设置自己的 wifi 网络,我将从我的 Android 设备连接到该网络。

问题

我需要将代码发送给机器人,我需要在 Android 网络视图中执行此操作,因为重要的是用户可以在机器人执行时继续看到基于块的程序,并且将反馈发送回移动设备(这将突出显示正在实时执行的代码块)。 所以基本上:我需要使用我自己的通信协议通过原始 tcp 套接字从 Android webview 内部发送和接收数据。

我尝试了什么?

我一直在搜索有关如何解决此问题的信息。到目前为止我已经学会了:

我没有找到在 webview 中使用原始 tcp 套接字的方法。

但是我能够解决这个问题,将 javascript 接口绑定到我的 webview,允许 webview 和接口(Java class)之间的通信,然后在我很容易实现 tcp 套接字的接口,因为它是 Java.

Java脚本接口信息: https://developer.android.com/guide/webapps/webview.html#BindingJavaScript

我以前从 Android 到 webview 的通信方式是在我的 webview 中的 js 文件 运行 中定义一个 javascript 函数,我们称它为“myJsFunction()” ,将使用 WebView 的 loadurl() 方法调用,如下所示:

WebView myWebView = ...;
myWebView.loadUrl("javascript:myJsFunction()");