我使用FileProvider
与其他应用共享文件。我需要在apk中包含这些文件。由于FileProvider
从内部存储/data/data/<pkg-name>
获取文件,有没有办法预加载这些文件?到目前为止,我找到的唯一方法是首先将文件包含在raw / assets目录中,然后以编程方式将文件移动到内部存储器。
这是唯一的方法,还是有更好的推荐方法? FileProvider可以从assets目录传输文件吗?
答案 0 :(得分:2)
您无法使用FileProvider
从资产目录传输文件。您必须实现自己的ContentProvider
。
以下是类似的问题以及可以帮助您的答案:
您还可以使用 CWAC-Provider ,它提供了一个处理资产的类:https://github.com/commonsguy/cwac-provider/blob/master/provider/src/main/java/com/commonsware/cwac/provider/StreamProvider.java
答案 1 :(得分:0)
另一种方法可能是使用APK扩展文件:Expansion Files
它允许您随应用程序一起发送其他文件,尤其是当您的APK达到100 MB限制时。
扩展文件保存在以下路径中:<shared-storage>/Android/obb/<package-name>/
,可以通过getObbDir()检索。