gpt4 book ai didi

java - 从 Assets 中打开 pdf

转载 作者:行者123 更新时间:2023-11-30 05:02:16 26 4
gpt4 key购买 nike

我目前正在尝试使用动态交付来下载和安装一些 pdf 文件并使用 barteksc 的 pdf 查看器打开它们 (com.github.barteksc:android-pdf-viewer:2.8.2) .

当我的 apk 中有 pdf 文件时,一切正常,但现在我下载它们并通过动态交付安装它们,当我尝试打开它们时出现此错误

E/PDFView: load pdf error java.io.FileNotFoundException: Example.pdf at android.content.res.AssetManager.nativeOpenAsset(Native Method) at android.content.res.AssetManager.open(AssetManager.java:744) at android.content.res.AssetManager.open(AssetManager.java:721) at com.github.barteksc.pdfviewer.util.FileUtils.fileFromAsset(FileUtils.java:37) at com.github.barteksc.pdfviewer.source.AssetSource.createDocument(AssetSource.java:39) at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:53) at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:25) at android.os.AsyncTask$2.call(AsyncTask.java:333) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:764)

这将返回“已安装”

if (manager.getInstalledModules().contains("dynamicfeature")) {
statusText.setText("Installed");
} else {
statusText.setText("Feature not yet installed");
}

我正在安装来自不同类的模块,如果这会有所不同,我在 Google 文档中看到了一些关于更新上下文的信息,但我无法弄明白。

我也加了

com.google.android.play.core.splitcompat.SplitCompatApplication

如文档所述,仍然没有运气。

这是我用来查看 Pdf 文件的方法。当 pdf 位于基本应用程序的 Assets 文件夹中时,它工作得很好,但它现在不起作用,因为 pdf 位于动态交付模块的 Assets 文件夹中.

private void displayFromAsset(String assetFileName) {
String SAMPLE_FILE = getIntent().getStringExtra("PDF INTENT");
pdfFileName = assetFileName;

pdfView.fromAsset(SAMPLE_FILE)
.defaultPage(pageNumber)
.enableSwipe(true)

.swipeHorizontal(false)
.onPageChange(this)
.enableAnnotationRendering(true)
.onLoad(this)
.scrollHandle(new DefaultScrollHandle(this))
.load();

最佳答案

Example.pdf 未指向 Assets 文件夹。

您需要提供文件的相对路径。对于 Assets 文件夹,你可以像

Uri resUri= Uri.fromFile(new File("//android_asset/image.png"));

对于下载的 pdf 文件,您可以通过 contentprovider 查询并从查询结果中获取 uri。

关于java - 从 Assets 中打开 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58060558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com