使用文件预加载 Android 内部存储的方法

Method to preload Android internal storage with files

我正在使用 FileProvider 与其他应用共享文件。我需要将这些文件包含在 apk 中。由于 FileProvider 从内部存储 /data/data/<pkg-name> 获取文件,有没有办法预加载这些文件?到目前为止,我找到的唯一方法是首先将文件包含在 raw/assets 目录中,然后以编程方式将文件移至内部存储。
这是唯一的方法,还是有更好的推荐方法? FileProvider可以从assets目录传文件吗?

您不能使用 FileProvider 从 Asset Directory 传输文件。您将必须实施自己的 ContentProvider.

以下是可以帮助您的类似问题及其答案:

  • Share Assets Using fileprovider
  • android share images from assets folder

您还可以使用 CWAC-Provider,它提供了一个 class 来处理资产:https://github.com/commonsguy/cwac-provider/blob/master/provider/src/main/java/com/commonsware/cwac/provider/StreamProvider.java

另一种方法可能是使用 APK 扩展文件:Expansion Files

它允许您随应用一起发送额外的文件,尤其是当您的 APK 达到 100 MB 限制时。

扩展文件保存在以下路径:<shared-storage>/Android/obb/<package-name>/,可通过getObbDir().

检索