Android 2.3 webview loadData 只显示编码字符

标签 android android-webview

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

        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 代码。

最佳答案

这似乎是由 known bug in WebView 引起的,如果您在提供的数据中有任何百分比,数据将被解释为 URL。

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

similar SO post 中建议了另一种似乎工作得很好的解决方法并且还应涵盖可能导致相同问题的任何其他字符:

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

关于Android 2.3 webview loadData 只显示编码字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12792576/

相关文章:

Android - 上传到 Dropbox

android - 在AOSP源代码中添加系统应用程序(通过App源代码/工作AS项目)

Android - 使用外部浏览器在 WebView 中打开目标 _blank 链接

android - 如何从单选组中获取默认选择的单选按钮?

android - 动态加载 Assets 文件夹中的所有图像

android - 查看在其他布局后面的动画

java - 为什么在 Android 9.0 中 webview 中的进度条显示有延迟?

java - Android 应用程序无异常退出

android - 替换 Android Mapview 以使用 WMS 服务

android - WebView 可以在服务内部使用吗?