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

如何在Android WebView中从远程URL访问本地资产?,android,webview,android-webview,assets,android-assets,Android,Webview,Android Webview,Assets,Android Assets,要在HTML中加载资产,我使用URLfile:///android_asset/my_image.png。 它在本地加载HTML时起作用,例如,使用WebView.loadData()方法 但是,我无法从远程网站加载本地资产,例如,当我使用WebView.loadUrl(“http://example.com/my_page.html)。它显示页面,但未加载图像 我如何解决这个问题 更新: 塔克什瓦尔提到,由于安全原因,这是不可能的。我理解,当您在浏览器中打开网页时,您作为用户无法控制该网页正在

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

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

我如何解决这个问题

更新:

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

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

更新2:
我需要支持Android 2.3+。

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


请参阅Pekka的答案以了解类似的问题:

扩展WebViewClient并重写shouldInterceptRequest以在本地加载文件。URL看起来都是远程的,但您可以有选择地加载所需的URL

,java.lang.String)

也在这里回答:

是的,不幸的是,这需要API 11。在早期版本中,唯一的方法是,如您所说,下载页面并将其作为字符串本地加载,以便它可以访问本地资源。这是我在做的事情中考虑的一个选项,但我选择了要求API 11。API中的JavaScript找到了解决方案吗??