使用 webview 显示来自 sdcard 的图像不起作用

Posted

技术标签:

【中文标题】使用 webview 显示来自 sdcard 的图像不起作用【英文标题】:showing image from sdcard with webview not working 【发布时间】:2012-01-06 18:07:17 【问题描述】:

我已经在 sdcard 的根目录中下载了 map750.png 文件,但是当我尝试在带有一些文本的 web 视图中显示它时,只显示文本。你能帮我找出代码中的问题吗?谢谢。

setContentView(R.layout.webview);
    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setAllowFileAccess(true);
    mWebView.getSettings().setjavascriptEnabled(true);
    mWebView.getSettings().setBuiltInZoomControls(true);
    String html = "<html><head></head><body><p>hello</p><img src=\"file://mnt/sdcard/map750.png\" alt=\"alternativo\" /></body></html>";
    mWebView.loadData(html, "text/html","utf-8");

我编辑帖子以添加oneilse14建议的解决方案,谢谢!!

setContentView(R.layout.webview);
    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setAllowFileAccess(true);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setBuiltInZoomControls(true);
    String html = "<html><head></head><body><p>hello</p><img src=\"file://mnt/sdcard/map750.png\" alt=\"alternativo\" /></body></html>";
    mWebView.loadDataWithBaseURL("", html, "text/html", "utf-8", "");

【问题讨论】:

检查我的答案,它肯定会工作。 如何从 sdcard 加载 SVG 图像? 【参考方案1】:

试试这个,

        final String fileName = "file:///mnt/sdcard/1.jpg";
        final String mimeType = "text/html";
        final String encoding = "utf-8";
        final String html = "<img src=\""+fileName+"\">";
        webView.loadDataWithBaseURL("", html, mimeType, encoding, "");

【讨论】:

如何从 sdcard 加载 SVG 图像?【参考方案2】:

查看开发者文档中的 loadDataWithBaseURL()

http://developer.android.com/reference/android/webkit/WebView.html

loadData() 对它可以显示的内容有一定的限制。此方法能够像您尝试的那样显示本地设备文件。

【讨论】:

【参考方案3】:

请注意,由于安全限制,使用 file:// 架构的访问可能会失败。

另一种方法是使用处理本地文件访问的 ContentProvider 的 URI。在 ContentProvider 的子类中为这种方法覆盖 openFile(Uri, String)。

【讨论】:

以上是关于使用 webview 显示来自 sdcard 的图像不起作用的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 sdcard 中的 webview 播放 html 中的视频

在 MarshMallow 的小部件中显示来自 SDCard 的图像

在 webview 中加载保存在 sdcard 中的图像

音乐播放器只会列出来自“/sdcard”的音乐

Android:来自Url的Webview中显示的图像具有高质量损失

怎么用WebView加载本地html