如何从 android webview 获取 javascript 函数的返回值到应用程序 - Java

问题描述 投票:0回答:2

我想获取 Android webview 中 javascript 函数的返回值,以便 android 应用程序可以访问并将其转换为字符串。

所以我把这段代码:

String fileName = MyWebView.loadUrl("javascript:android.onData(returnFileName())");

但随后显示此错误:类型不兼容。找到:'void',需要:'java.lang.String'。

如何解决这个问题?

java android-webview
2个回答
0
投票

您确定启用了 JavaScript 吗?

getSettings().setJavaScriptEnabled(true);

也尝试访问这个网站。他们有一些关于 Android WebView 的有用信息。


0
投票

WebView的loadUrl()的原型是:

public void loadUrl(String url)

因此,

loadUrl()
永远不会返回任何东西,当然不是你期望的文件名。

相反,您可以使用 WebView 的

evaluateJavascript()
方法:

  • 通过扩展 WebViewClient 类并覆盖其
    onPageFinished()
    方法,在您的 Java 应用程序中创建一个 JavaScript 接口。在那里,将 JavaScript 注入 WebView 并获取其返回值:
webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        webView.evaluateJavascript("yourJavaScriptFunction()", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String value) {
                // value is the return value of your JavaScript function
            }
        });
    }
});
  • 在你的 JavaScript 函数中,确保返回一个值:
function yourJavaScriptFunction() {
    return "hello world";
}
  • 一旦WebView完成加载页面,
    onReceiveValue()
    接口的
    ValueCallback
    方法将被调用,您可以从value参数中获取JavaScript函数的返回值。

注意

evaluateJavascript()
仅适用于 Android 4.4(API 级别 19)及更高版本。如果您的目标是早期版本的 Android,则需要使用
loadUrl()
方法来执行 JavaScript 并获取其返回值。

© www.soinside.com 2019 - 2024. All rights reserved.