java - 在哪里保存PDF文件以使用外部应用程序打开

标签 java android file pdf-reader

我需要创建一个应用程序,通过外部应用程序打开选定的 PDF 文件。

我已经尝试将所有文​​件放在 Assets 文件夹中,但我没有找到一种方法来创建将从 Assets 文件夹中读取的文件提供程序。 我更喜欢不需要复制文件的解决方案(因此不会占用双倍内存)。我应该把 Pdf 文件放在哪里(在开发阶段)?有没有办法在安装阶段将它们复制到内部/外部存储(这样它们就不会在 Assets 文件夹中)?我该怎么办?

最佳答案

I didn't find a way to create a file-provider that will read from the assets folder

My StreamProvider这样做。

is there a way to copy them to internal/external storage in the installing phase (so they won't be in the assets folder)?

没有。首先,没有普通文件从 APK 复制到文件系统上的文件中。其次,APK 本身在安装时不会被修改——这样做会使数字签名无效。

what should I do?

选项 #1:不要将 PDF 与您的应用打包在一起。相反,下载它。

选项 #2:不使用 PDF,而是使用 HTML/CSS/JS,并使用 WebView 渲染资源

选项 #3:使用我的 StreamProvider

选项 #4:创建您自己的 ContentProvider,它可以直接从 assets 提供服务(this sample app 很粗糙,但说明了技术)

选项 #5:不要担心磁盘空间,将 Assets 复制到内部存储上的文件(例如,getCacheDir()),然后使用 FileProvider

关于java - 在哪里保存PDF文件以使用外部应用程序打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56429314/

相关文章:

java - Java 中的 strictfp

android - 三星 Nexus S 与 HTC - NFC Intent Filter + AAR

Python游戏保存文件

shell - 在 shell 中删除文件每一行的字符

c++ - 如何将文件中的数据存储到具有 vector 成员的结构 vector 中

java - gradle with Java : When does . 在使用 gradle with Java 时创建 m2 文件夹

java - 我应该阻止 Java 中异步 AutoClosable 资源的 close 方法吗?

java - 如何在lucene中使用tf idf相似度对文档进行排名

android - 如何在recyclerview中的线性布局中设置重力?

android - 如何在 ActionBarSherlock 中实现多选和上下文 ActionMode?