Java 从资产中打开pdf

Java 从资产中打开pdf,java,android,dynamic-delivery,Java,Android,Dynamic Delivery,我目前正在尝试使用dynamic delivery下载和安装一些pdf文件,并使用barteksc的pdf查看器打开它们(com.github.barteksc:android pdf viewer:2.8.2) 当我把pdf文件放在我的apk中时,一切都很好,但是现在我下载它们并通过动态交付安装它们,当我试图打开它们时,就会出现这个错误 E/PDFView:加载pdf错误 java.io.FileNotFoundException:Example.pdf 位于android.content.r

我目前正在尝试使用dynamic delivery下载和安装一些pdf文件,并使用barteksc的pdf查看器打开它们(
com.github.barteksc:android pdf viewer:2.8.2

当我把pdf文件放在我的apk中时,一切都很好,但是现在我下载它们并通过动态交付安装它们,当我试图打开它们时,就会出现这个错误

E/PDFView:加载pdf错误 java.io.FileNotFoundException:Example.pdf 位于android.content.res.AssetManager.nativeOpenAsset(本机方法) 位于android.content.res.AssetManager.open(AssetManager.java:744) 位于android.content.res.AssetManager.open(AssetManager.java:721) 位于com.github.barteksc.pdfviewer.util.FileUtils.fileFromAsset(FileUtils.java:37) 位于com.github.barteksc.pdfviewer.source.AssetSource.createDocument(AssetSource.java:39) 位于com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:53) 位于com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:25) 位于android.os.AsyncTask$2.call(AsyncTask.java:333) 在java.util.concurrent.FutureTask.run(FutureTask.java:266)处 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 运行(Thread.java:764)

这将返回“已安装”

我正在从另一个类安装该模块,如果这有什么不同的话,我在谷歌文档中看到了一些关于更新上下文的内容,但我无法理解

我还补充说

com.google.android.play.core.splitcompat.SplitCompatApplication
正如文件所说,仍然没有运气

这是我用来查看Pdf文件的方法。当Pdf文件位于基础应用程序的资产文件夹中时,它工作得很好,但现在Pdf文件位于动态交付模块的资产文件夹中,它不工作了

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未指向资产文件夹

您需要提供文件的相对路径。 对于资产文件夹,您可以像giv一样

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

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

Example.pdf未指向资产文件夹

您需要提供文件的相对路径。 对于资产文件夹,您可以像giv一样

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

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

您可以获取更多日志吗?请确保下载的pdf路径。这是不匹配的。用整个错误日志更新了我的问题。关于下载路径,我在资产文件夹中安装了一个带有PDF的动态交付模块,我不确定它应该如何工作,但我猜该模块与原始APK合并了?也许我使用的库不兼容?你能抓取更多日志吗?确保下载的pdf路径。这是不匹配的。用整个错误日志更新了我的问题。关于下载路径,我在资产文件夹中安装了一个带有PDF的动态交付模块,我不确定它应该如何工作,但我猜该模块与原始APK合并了?可能与我使用的库不兼容?我用查看pdf的实际方法更新了我的问题。这是pdf查看器库的基本方法。我用查看pdf的实际方法更新了我的问题。这是pdf查看器库的基本方法。