嗨,我正在使用编译'com.github.delight-im:Android-AdvancedWebView:v3.0.0'来显示html5,我的目标文件存储在我的手机存储路径中是“ file:/// storage / sdcard0 / DcLms / Conjunction /index.html”。当我使用普通的android Webview时没有问题。但是尝试上述库我得到网页不可用的问题。
String targetPath = "file:///storage/sdcard0/DcLms/Conjunction/index.html";
AdvancedWebView webView = (AdvancedWebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setDomStorageEnabled(true);
webView.setWebViewClient(new HelloWebViewClient());
webView.loadUrl(targetPath);
WebView basicView = (WebView) findViewById(R.id.basicView);
webView.setWebViewClient(new HelloWebViewClient());
basicView.getSettings().setJavaScriptEnabled(true);
basicView.setWebChromeClient(new WebChromeClient());
basicView.getSettings().setDomStorageEnabled(true);
basicView.loadUrl(targetPath);
basicView.setWebViewClient(new HelloWebViewClient());
最佳答案
首先,AdvancedWebView
在实例化时自动配置所有设置。查看源here。
问题是默认情况下AdvancedWebView
禁止使用file://
方案进行访问:
...
final WebSettings webSettings = getSettings();
webSettings.setAllowFileAccess(false);
setAllowAccessFromFileUrls(webSettings, false);
webSettings.setBuiltInZoomControls(false);
...
因此,在创建
AdvancedWebView
之后,您需要添加以下行: AdvancedWebView webView = (AdvancedWebView) findViewById(R.id.webView);
webView.getSettings().setAllowFileAccess(true);
if (Build.VERSION.SDK_INT >= 16) {
webView.getSettings().setAllowFileAccessFromFileURLs(true);
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
}
注意:
AdvancedWebView
只是子类WebView
,所以不会有任何区别-唯一的区别是它为您配置设置并处理一些事件。关于android - AdvancedWebView从电话存储问题加载html,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42504994/