gpt4 book ai didi

javascript - Android 7.0 及以上版本的 Javascript 无法运行 Webview

转载 作者:行者123 更新时间:2023-11-30 00:05:22 25 4
gpt4 key购买 nike

我正在使用 WebView 将支付网关集成到我的应用程序中。我想从 HTML 内容中读取响应,基本上它是一个 JSON 对象。这在 6.0 设备上运行良好。但是对于 7.0 和 8.0,我面临着 JavaScript 的问题。我正在使用以下代码。

我的代码

    vPayment.loadUrl(myurl);

wvPayment.getSettings().setJavaScriptEnabled(true);
wvPayment.getSettings().setDomStorageEnabled(true);
wvPayment.clearCache(true);
wvPayment.clearHistory();
wvPayment.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
wvPayment.addJavascriptInterface(iface, "HTMLOUT");
wvPayment.setWebChromeClient(new WebChromeClient());
wvPayment.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if (request.getUrl().toString().contains("mysuuccessurl")) {
try {
String html = URLDecoder.decode(request.getUrl().toString(), "UTF-8").substring(9);
System.out.println("html" + html);
} catch (UnsupportedEncodingException e) {
Log.e("example", "failed to decode source", e);
}
}

return true;
}

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
System.out.println("Start url : " + url);
customProgressDialog.show();
}

@Override
public void onPageFinished(WebView view, String url) {
System.out.println("Finish url : " + url);
if (url.contains(mysuccessurl)) {
wvPayment.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
}
customProgressDialog.dismiss();
}
});
JIFace iface = new JIFace();


class JIFace {
@android.webkit.JavascriptInterface
public void showHTML(String data) {
//want to handle the response here

}
}
}

上面的代码有什么问题。这项工作在 7.0 及以上版本的 android 设备上需要做哪些更改

最佳答案

来自安卓文档

这是 Android N 之前的版本

@Deprecated
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}

这是从 Android N 开始

@return True 如果主机应用程序想要离开当前的 WebView 并自己处理 url,否则返回 false。

@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return true;
}

此方法来自 Android N,因此您仅在 Android N 中遇到此问题。返回 false 应该可以解决您的问题。

关于javascript - Android 7.0 及以上版本的 Javascript 无法运行 Webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49123891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com