如何在Android webview中打开xhtml文件

时间:2014-04-25 14:56:40

标签: android webview xhtml epub

我正在开发一个epub阅读器。我能够从epub中提取文件并在设备sdcard中创建filetree。但是,当我尝试读取.xhtml文件时。它不起作用。我尝试打开一个html文件,但它确实有效。

这是我加载.xhtml

的代码
webView = (WebView) findViewById(R.id.webview);
webView.setWebViewClient(new ReaderWebClient());
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setAllowFileAccess(true);
webView.loadUrl("file:///" + Environment.getExternalStorageDirectory() + "/epub/EPUB/cover.xhtml");

我刚刚首先使用了硬编码的url来尝试是否可以加载页面。

只显示webview,"网页不可用"

我做错了吗?谢谢你的帮助

4 个答案:

答案 0 :(得分:2)

我的解决方案是获取每个项目的数据(.xhtml文件)并将其作为参数传递给loadDataWithBaseUrl()。我只需要确定文件的正确路径,以便正确加载图像和CSS。

String baseUrl = "file:///" + Environment.getExternalStorageDirectory() + "/epub" + bookFilename + "/OPS/";
String data = new String(bookReader.book.getContents().get(2).getData());

webView.loadDataWithBaseURL(baseUrl, data, "application/xhtml+xml", "utf-8", null);

答案 1 :(得分:1)

使用此:

webView.loadUrl("file://" + Environment.getExternalStorageDirectory().getAbsolutePath() + "epub/EPUB/cover.xhtml");

并获取写入清单文件中存储的权限,如下所示:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

答案 2 :(得分:0)

试试这个:

webView.loadUrl("file://" + Environment.getExternalStorageDirectory().getAbsolutePath() + "epub/EPUB/cover.xhtml");

答案 3 :(得分:0)

这是我的工作代码。试试吧。

        if(android.os.Build.VERSION.SDK_INT>=android.os.Build.VERSION_CODES.HONEYCOMB)
        {
            getSettings().setAllowContentAccess(true);
        }
        getSettings().setJavaScriptEnabled(true);
        getSettings().setLayoutAlgorithm(LayoutAlgorithm.NORMAL);
        getSettings().setAllowFileAccess(true);     
        if(android.os.Build.VERSION.SDK_INT>=android.os.Build.VERSION_CODES.JELLY_BEAN)
        {
            getSettings().setAllowUniversalAccessFromFileURLs(true);
        }   
        loadUrl("file://"+Environment.getExternalStorageDirectory()+"/epub/EPUB/cover.xhtml");

一旦交叉检查您的文件路径。