我的本机应用程序包含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文件。 –