Android 2.3 网页视图加载数据仅显示编码字符



我正在尝试使用带有 loadData 的 Web 视图来显示图像:

        String data = "<html><head><title>Photo</title></head>";
        data = data + "<body><center><img width="100%" src="" + imageUrl + "" /></center></body></html>";
        imageWebView.getSettings().setLoadWithOverviewMode(true);
        imageWebView.getSettings().setUseWideViewPort(true);
        imageWebView.getSettings().setBuiltInZoomControls(true);
        imageWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        imageWebView.setScrollbarFadingEnabled(false);
        imageWebView.loadData(data, "text/html", "UTF-8");
        imageWebView.setBackgroundColor(0x00000000);

在 4.1 模拟器中,这工作正常,我可以看到图像。 在 2.3 中,它只显示编码的 html 代码。

这似乎是由 WebView 中的一个已知错误引起的,如果提供的数据中有任何百分比,则数据将被解释为 URL。

如错误报告中所述,已知的解决方法是将所有%替换为 &#37;

在类似的SO帖子中提出了另一种似乎效果很好的解决方法,并且还应该涵盖可能导致相同问题的任何其他字符:

mWebView.loadData(URLEncoder.encode(data,"utf-8").replaceAll("\+"," "), "text/html", "utf-8");

最新更新