gpt4 book ai didi

java - 在使用 loadData 加载 html 文本的情况下,WebView 超链接单击不起作用

转载 作者:行者123 更新时间:2023-11-30 00:08:04 27 4
gpt4 key购买 nike

如果我使用 loadData 加载 html 文本,

WebView 超链接点击不起作用。

代码如下:

WebView webview = new WebView(context);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webview.getSettings().setDisplayZoomControls(false);
webview.setWebChromeClient(new WebChromeClient());
webview.getSettings().setSupportMultipleWindows(true);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setDefaultTextEncodingName("utf-8");
if (Build.VERSION.SDK_INT >= 21) {
webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
webview.setWebViewClient(new CustomWebViewClient());
webview.loadData(st, "text/html", "UTF-8");
mHolder.webview.removeAllViews();
mHolder.webview.addView(webview);

显示 CustomWebViewClient 类无效。

  private class CustomWebViewClient extends WebViewClient {

@Override
public boolean shouldOverrideUrlLoading(WebView wv, String url) {
if (wv.getHitTestResult().getType() > 0) {
wv.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
} else {
return false;
}
}
}

请给出原因和解决方法。

最佳答案

使用 'loadDataWithBaseURL' 方法加载 html 文本

webview.loadDataWithBaseURL(null, st, "text/html", "utf-8", null);

代替

 webview.loadData(st, "text/html", "UTF-8");

public class CustomWebViewClient extends WebViewClient
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if(request.getUrl().toString().contains("about:blank"))
return true;
if (view.getHitTestResult().getType() > 0) {
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(request.getUrl()))));
return true;
} else {
return false;
}
}
public boolean shouldOverrideUrlLoading(WebView view, String request) {
if(request.contains("about:blank"))
return true;
if (view.getHitTestResult().getType() > 0) {
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(request))));
return true;
} else {
return false;
}
}
}

关于java - 在使用 loadData 加载 html 文本的情况下,WebView 超链接单击不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48637061/

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