Android:使用 Webview 从资产加载大图像

Posted

技术标签:

【中文标题】Android:使用 Webview 从资产加载大图像【英文标题】:Android: Load Large Image from Assets Using Webview 【发布时间】:2013-07-29 12:28:30 【问题描述】:

我需要使用 webview 从资产中加载大图像(大约 3500 x 3500 像素)。

我在这里对 *** 进行了大量研究,但没有一个答案对我有用。我认为这可能是 android 4.0+ 使用资产的问题。

我当前的代码如下:

WebView webView = (WebView)findViewById(R.id.myWebView);
webView.loadUrl("file:///android_asset/test.html");

test.html 看起来像:

<html>

  <table>

    <tr>

      <td>

        <img src="testimage.png"  >

      </td>

    </tr>

  </table>

</html>

testimage.png 和 test.html 都在资产中。在我的物理 Android 设备上进行测试后,我得到:

网页不可用 位于 file:///android_asset/test.html 的网页可能暂时关闭,或者它可能已永久移动到新网址。

根据要求提供 Logcat:

I/webclipboard: clipservice:       android.sec.clipboard.ClipboardExManager@43ac41b0
V/webkit: BrowserFrame constructor:  this=Handler (android.webkit.BrowserFrame) 43ac3dc8
D/WebView: loadUrlImpl: called
D/webcore: CORE loadUrl: called
D/webkit: Firewall not null
D/webkit: euler: isUrlBlocked = false
D/chromium: Unknown chromium error: -6
I/GATE: <GATE-M>DEV_ACTION_ERROR</GATE-M>
V/webkit: reportError errorCode(-1) desc(There was a network error)
I/GATE: <GATE-M>DEV_ACTION_COMPLETED</GATE-M>
I/Adreno200-EGLSUB: <ConfigWindowMatch:2136>: Format RGBA_8888.
D/WebView: onSizeChanged - w:480 h:0
D/WebView: onSizeChanged - w:480 h:446

【问题讨论】:

你能在这里发布logcat吗 @Stacks28 我已按要求更新了我的问题。 嘿,你给的路径正确吗?再次检查拼写? @Stacks28 很多很多次...我做了一些研究,以确保我可以正确访问 Android 资产。 【参考方案1】:

从这里找到答案:

https://***.com/a/7480245/2060140

webview.getSettings().setBuiltInZoomControls(true);
webview.loadDataWithBaseURL("file:///android_asset/", "<img src='file:///android_res/drawable/example.png' />", "text/html", "utf-8", null);

【讨论】:

这行得通!很高兴能够动态生成 HTML 并包含本地图像。【参考方案2】:

另一种方法: 如果您能够使用 KitKat API 级别 19,并且您可以控制 Webview,则无需担心安全问题...

然后: webSettings.setDomStorageEnabled(true);

webSettings.setAllowFileAccessFromFileURLs(true); webSettings.setAllowUniversalAccessFromFileURLs(true);

通过这些设置,我能够加载信息(由浏览器启动 - javascript) 从 android_asset 文件夹和 SD 卡中获取文件信息。 还可以将信息保存到 SDCard。

如果有人知道如何在 V17 中实现同样的功能,那太好了!?

【讨论】:

以上是关于Android:使用 Webview 从资产加载大图像的主要内容,如果未能解决你的问题,请参考以下文章

Android SDK Webview加载不在资产文件夹中的本地文件

来自资产的 Android WebView JavaScript

Webview 从资产目录加载 html

如何让 Flutter 的 webview 处理从本地 html 加载的本地资产?

Android——PhoneGap/WebView 忽略视口元标记?

Android webview,在资产文件夹中加载javascript文件