【问题标题】:How to access local assets from a remote URL in Android WebView?如何从 Android WebView 中的远程 URL 访问本地资产?
【发布时间】:2011-06-02 09:00:52
【问题描述】:

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

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

我该如何解决这个问题?

更新:

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

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

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

【问题讨论】:

  • 找到解决方案了吗??

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


【解决方案1】:

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

查看 Pekka 对类似问题的回答:How to show local picture in web page?

【讨论】:

    【解决方案2】:

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

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

    也在这里回答: webview shouldinterceptrequest example

    【讨论】:

    • 是的,很遗憾,这需要 API 11。
    • 在早期版本中这样做的唯一方法是,如您所说,下载页面并将其作为字符串加载到本地,以便它可以访问本地资源。这是我正在考虑的一个选项,但我选择需要 API 11。API
    猜你喜欢
    • 1970-01-01
    • 2015-08-24
    • 2018-07-29
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    相关资源
    最近更新 更多