javascript - 使用 Webview Android 处理回调

标签 javascript java android webview

您好,我正在创建一个 Android 应用程序。我不喜欢使用 Android UI 系统,并选择使用 WebView 进行 UI 设计,因为它对来自 HTML5 背景的我来说更容易。 我尝试过 Cordova 和 Phonegap 等平台,但它们没有给我确切的控件 ID,因为我也有 Java 背景。所以重申一下,我仅将 WebView 用于 UI。

话虽如此,我想在 WebView 上运行少量 JavaScript 代码,即网络调用。我有一个使用 OkHttp 的网络后端,可以使这些连接正常!但我无法以对我当前的 webview 知识友好的方式获取任何数据。

这是我的 JavaScript 函数签名:

function makeRequest(method,url,data,callback){
    ... Code Here ...
}

我想这样调用它:

makeRequest("GET","http://www.example.com/",{
    "key1" : "value1",
    "key2" : "value2"
},(code,responseJSON) => {
    ... Handle Response...
});

到目前为止,在我的 Android/Java 端,我有这个:

@JavascriptInterface
public void makeRequest(String method, String url, String data, ??? callback){
    ... Handle Request Java-side ...
}

当请求被处理时,id喜欢如何调用回调函数。 就像事件监听器之类的,但我对类型“???”感到困惑应该, 或者我将如何调用该函数以便 JavaScript 代码可以接收 回调并继续。

我已经有了通过我的 JavaScriptInterface 与 webview 一起工作的单向代码。 而 JSON 没有问题,因为它在 JS 代码中转换为字符串,而 GSON 可以 解析并得到我需要的东西。就是这个回调把我难住了!

提前感谢您的帮助:)

最佳答案

你可以这样做,

public class MyJavaScriptInterface {
    private final MyJavaScriptInterfaceCallBack myJavaScriptInterfaceCallBack;

    public interface  MyJavaScriptInterfaceCallBack{
        void clickedAdmission(YourDataType code,String responseJSON);
    }
    public MyJavaScriptInterface(MyJavaScriptInterfaceCallBack myJavaScriptInterfaceCallBack) {
        this.myJavaScriptInterfaceCallBack=myJavaScriptInterfaceCallBack;
    }

    @JavascriptInterface
    public void applynow() {
        myJavaScriptInterfaceCallBack.clickedAdmission();
    }

}

然后在您的 Activity fragment 中

您的 fragment 或 Activity 必须实现 MyJavaScriptInterface.MyJavaScriptInterfaceCallBack 接口(interface)和方法。

在WebView中设置javascript接口(interface)

webView.addJavascriptInterface(new MyJavaScriptInterface(this), "YourRecognizer");

关于javascript - 使用 Webview Android 处理回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65809049/

相关文章:

javascript - 可点击下拉不可见DIV

android - 如何使用 vitamio 从原始文件夹运行视频?

java - ListView 返回相同的项目位置和 ID

android - 开发 Android 应用程序的最佳 IDE 是什么?

javascript - 尝试在 html 文件中实例化 JavaScript 类

javascript - 根据另一个数组对对象数组进行排序

java - Netbeans Swing GUI Builder 无法与 java 模块项目和 Maven 一起使用

java - 将Excel VBA代码集成到Java代码中,最终创建从Excel工作表单元格的下拉列表中选择多个值的功能

java - 如何在同一个Tomcat上部署多个具有外部配置的Spring boot应用程序?

javascript - 使用 Web Workers 进行多核心负载管理怎么样?