我正在开发一个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,"网页不可用"
我做错了吗?谢谢你的帮助
答案 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");
一旦交叉检查您的文件路径。