如何从Android WebView中的远程URL访问本地资产?

时间:2011-06-02 09:00:52

标签: android webview android-webview assets android-assets

要在HTML中加载资源,我使用的是网址file:///android_asset/my_image.png。 它在我本地加载HTML时有效,例如,使用WebView.loadData()方法。

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

如何解决此问题?

更新

塔克什瓦尔提到,由于安全原因,这是不可能的。我知道当您在浏览器中打开网页时,您作为用户无法控制网页访问的内容。当您可以读取用户的敏感数据时,访问本地文件系统也有所不同。在这里,我只想访问应用程序资产。

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

UPDATE2: 我需要支持Android 2.3 +。

2 个答案:

答案 0 :(得分:1)

您无法从外部网页链接到本地​​资源。这是出于安全原因。

请参阅Pekka对类似问题的回答:How to show local picture in web page?

答案 1 :(得分:1)

扩展WebViewClient并覆盖shouldInterceptRequest以在本地加载文件。网址都会显示为远程,但您可以根据需要有选择地加载。

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

这里也回答: webview shouldinterceptrequest example