我想获取 Android webview 中 javascript 函数的返回值,以便 android 应用程序可以访问并将其转换为字符串。
所以我把这段代码:
String fileName = MyWebView.loadUrl("javascript:android.onData(returnFileName())");
但随后显示此错误:类型不兼容。找到:'void',需要:'java.lang.String'。
如何解决这个问题?
您确定启用了 JavaScript 吗?
getSettings().setJavaScriptEnabled(true);
也尝试访问这个网站。他们有一些关于 Android WebView 的有用信息。
WebView的loadUrl()的原型是:
public void loadUrl(String url)
因此,
loadUrl()
永远不会返回任何东西,当然不是你期望的文件名。
相反,您可以使用 WebView 的
evaluateJavascript()
方法:
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
}
});
}
});
function yourJavaScriptFunction() {
return "hello world";
}
onReceiveValue()
接口的ValueCallback
方法将被调用,您可以从value参数中获取JavaScript函数的返回值。注意:
evaluateJavascript()
仅适用于 Android 4.4(API 级别 19)及更高版本。如果您的目标是早期版本的 Android,则需要使用 loadUrl()
方法来执行 JavaScript 并获取其返回值。