2011-06-02 71 views
4

要使用HTML加载资源,我正在使用URL file:///android_asset/my_image.png。 它适用于本地加载HTML,例如,使用WebView.loadData()方法。如何从Android WebView中的远程URL访问本地资产?

但是,我无法从远程网站加载本地资产,例如,当我使用WebView.loadUrl("http://example.com/my_page.html")加载页面时。它显示页面,但图像未加载。

我该如何解决这个问题?

UPDATE:

tarkeshwar提及的是,由于安全原因不可能的。我明白当你在浏览器中打开网页时,你作为用户无法控制网页正在访问什么。当您可能读取用户的敏感数据时,访问本地文件系统也有点不同。在这里我只想访问应用程序资产。

解决方法是使用loadData()方法下载页面并将其加载到WebView。但可能有一些安全开关允许WebView访问本地资产。

UPDATE2: 我需要支持Android 2.3+。

+0

曾经发现一个解决方案? – 2017-03-23 08:52:31

回答

1

扩展WebViewClient并覆盖shouldInterceptRequest本地加载文件。这些网址都显得很遥远,但你可以有选择地加载你所需要的。

http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldInterceptRequest(android.webkit.WebView,java.lang.String中)

这里还回答: webview shouldinterceptrequest example

+0

是的,不幸的是这需要API 11. – 2013-08-06 08:24:42

+0

在早期版本中执行此操作的唯一方法是,像您所说的那样,下载页面并将其作为字符串本地加载,以便它可以访问本地资源。这是我考虑的一个选项,但是我选择了API 11. API <11中的JavaScript缺少关键函数。 – dres 2013-08-24 13:50:52