大家好,我尝试使用 epublib 显示 epub 的内容。这是我的代码
File f = new File(Environment.getExternalStorageDirectory() + "/documents/cindersilly.epub");
String path = f.getPath();
FileInputStream epubInputStream = new FileInputStream(f);
Book book = new EpubReader().readEpub(epubInputStream);
wvTest.loadDataWithBaseURL(f.getAbsolutePath(), book.getContents().get(0).getData().toString(), "text/html", "UTF-8", null);
我得到结果:
[B@41408d8
什么?以及如何解决这个问题,以便内容显示在 Web 视图上?谢谢
您尚未发布足够的代码来查看所有详细信息,但您的getData()
方法返回byte[]
。当您在对象上调用toString()
时,它会尝试将其转换为String
;但是数组没有返回任何特别有用的toString()
。你得到的是一个标头([B
(,告诉你它的类型(字节数组(,以及一个地址,说明它在JVM内存中的存储位置。
如果您希望能够看到数组的内容,可以使用Arrays.toString()
将其转换为更有用的内容。你传递你得到的byte[]
(在本例中,getData()
的输出(,它为你构造String
表示。您的代码如下所示:
wvTest.loadDataWithBaseURL(f.getAbsolutePath(), Arrays.toString(book.getContents().get(0).getData()), "text/html", "UTF-8", null);
也有可能你根本不打算让它返回一个byte[]
,在这种情况下,你的问题在你的代码中更远