Java 如果使用loadData加载html文本,则WebView超链接单击不起作用

Java 如果使用loadData加载html文本,则WebView超链接单击不起作用,java,android,android-webview,Java,Android,Android Webview,WebView如果我使用loadData加载html文本,则超链接单击不起作用 代码如下: WebView webview = new WebView(context); webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); webview.getSettings().setDisplayZoomControls(false); webview.setWebChr

WebView
如果我使用
loadData
加载html文本,则超链接单击不起作用

代码如下:

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);
show
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;
          }
      }
  }

我找到了解决办法。已删除webview.getSettings().setSupportMultipleWindows(true);和webview.setWebChromeClient(新的WebChromeClient());