嗨,我正在使用编译'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/

10-10 23:08