【发布时间】:2021-04-24 18:55:58
【问题描述】:
您好,我正在创建一个 Android 应用程序。我不喜欢使用 Android 的 UI 系统,并选择使用 WebView 进行 UI 设计,因为它对我来说更容易来自 HTML5 背景。 我已经尝试过像 Cordova 和 Phonegap 这样的平台,但它们并没有像我一样给我确切的控件 ID,因为我也有 Java 背景。所以重申一下,我仅将 WebView 用于 UI。
话虽如此,我想在 Web 视图上运行少量 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 ...
}
当请求被处理时,我想以某种方式调用回调函数。 像 EventListener 之类的,但我对类型“???”感到困惑应该, 或者我将如何调用该函数以便 JavaScript 代码可以接收 它的回调并继续。
我已经有了通过我的 JavaScriptInterface 和 webview 工作的单向代码。 而 JSON 是没有问题的,因为它在 JS 代码中转换为字符串,而 GSON 可以 解析并得到我需要的东西。就是这个回调让我难住了!
提前感谢您的帮助:)
【问题讨论】:
标签: javascript java android webview