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
如何让 Flutter 的 webview 处理从本地 html 加载的本地资产?