我在尝试将HTML代码作为字符串加载到WebView的loadData()
中。但是这种方法没有产生任何效果,而在SDK 29以下的版本中,同样的方法却能正常工作。
webview.loadData(html_code,"text/html",null);
注意:这里我没有对字符串进行任何编码或解码操作,我只是将其作为字符串传递给上述方法。
我在尝试将HTML代码作为字符串加载到WebView的loadData()
中。但是这种方法没有产生任何效果,而在SDK 29以下的版本中,同样的方法却能正常工作。
webview.loadData(html_code,"text/html",null);
使用这段代码,它会起作用。
String newhtml_code = Base64.encodeToString(html_code.getBytes(), Base64.NO_PADDING);
testWebView.loadData(newhtml_code,"text/html", "base64");
String encodedHtml = Base64.encodeToString(html_code.getBytes(), Base64.NO_PADDING);
webview.getSettings().setJavaScriptEnabled(true);
之前
webview.loadData(encodedHtml , "text/html", "base64");
如下所示
String html_code= "<html><body>Your Actualtext.</body></html>";
String encodedHtml = Base64.encodeToString(html_code.getBytes(), Base64.NO_PADDING);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadData(encodedHtml , "text/html", "base64");
更多细节请参考此链接
我用loadDataWithBaseURL提出了另一种解决方案。
例如:
webView.loadDataWithBaseURL(null, html, "text/html", null, null)
它应该使用更少的CPU和内存资源,因为不需要进行Base64计算和存储。
manifest file in
android:usesCleartextTraffic="true"
and
WebSettings settings = wb_webview.getSettings();
settings.setJavaScriptEnabled(true);
settings.setSupportZoom(true);
settings.setBuiltInZoomControls(true);
String html_code = "html code";
wb_webview.loadData(Base64.encodeToString(html_code.getBytes(), Base64.NO_PADDING) , "text/html", "base64");
我遇到了同样的问题,并通过使用loadDataWithBaseURL()方法而不是loadData()方法来解决它。
mWebView.loadData(mHtml, "text/html", "UTF-8");
mWebView.loadDataWithBaseURL(null,mHtml,"text/html", "UTF-8", null);