2011-06-02 59 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