4

要加载 HTML 中的资产,我使用的是 URL file:///android_asset/my_image.png。当我在本地加载 HTML 时,它可以工作,例如,使用WebView.loadData()方法。

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

我该如何解决这个问题?

更新:

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

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

UPDATE2: 我需要支持 Android 2.3+。

4

2 回答 2

1

扩展 WebViewClient 并覆盖 shouldInterceptRequest 以在本地加载文件。url 都将显示为远程,但您可以有选择地加载您需要的每个。

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

也在这里回答: webview shouldinterceptrequest example

于 2013-07-25T01:15:24.693 回答
1

您不能从外部页面链接到本地​​资源。那是出于安全原因。

请参阅 Pekka 对类似问题的回答:如何在网页中显示本地图片?

于 2011-06-02T14:57:00.430 回答