我的本機應用程序包含WebView,WebView將Web頁面加載到Web上。例如,HTML從訪問WebView中的本地文件
http://dongshengcn.com/test.html
加載它似乎加載(而不是局部)從網站的任何頁面無法加載從本地設備的任何文件。
我的問題是:
是否有可能加載到網頁視圖(如原生應用程序的一部分)到本地設備訪問文件http://dongsheng.com/test.html?
我的本機應用程序包含WebView,WebView將Web頁面加載到Web上。例如,HTML從訪問WebView中的本地文件
http://dongshengcn.com/test.html
加載它似乎加載(而不是局部)從網站的任何頁面無法加載從本地設備的任何文件。
我的問題是:
是否有可能加載到網頁視圖(如原生應用程序的一部分)到本地設備訪問文件http://dongsheng.com/test.html?
這裏有幾件事情嘗試:
要使用你需要將它們放在你的項目的資產文件夾,並使用URL,如文件調用它們的本地文件:/// android_asset /。例如,如果您將mypage.html添加到資產文件夾中,則可以使用file:///android_asset/mypage.html在webview中調用它。
檢查以確保您的Manifest中具有相應的webview權限。對於web視圖正常工作,您需要:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
在Github上,其作爲獎金還修復了幾個錯誤與web視圖在下面的應用程序看看蜂窩和ICS。它是關於如何使用本地文件的網頁視圖一個完整的例子: https://github.com/bricolsoftconsulting/WebViewIssue17535FixDemo
編輯:問題澄清後附錄:
是的,這是可以從網頁加載本地頁面,但您必須使用技巧繞過瀏覽器的安全措施。
替換文件:使用自定義方案的URL // android_asset /部分(例如文件/// android_asset /的mypage.html成爲myscheme:///mypage.html),並在將這些自定義方案的網址您頁。實施WebViewClient的shouldOverrideUrlLoading
,檢查URL是否以自定義方案開頭,如果是,則使用webview.loadUrl重定向到本地頁面。
mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url != null && url.startsWith("myscheme://")) { String newUrl = url.replace("myscheme://", "file://android_asset/"); mWebView.loadUrl(newUrl); return true; } return false; } }
發佈您的代碼並在其中放置文件? –
這可能是一個安全機制。我在一個測試網頁上嘗試了一個file:///mnt/sdcard/some.jpg鏈接,發現它甚至不會在單擊Android設備時嘗試加載。但是,如果我長時間按下鏈接並從彈出式菜單中選擇「打開」,則實際會引用所引用的本地圖像。試用了一個html文件。 –