我写过2个应用程序,其数据是从互联网上下载的。
由于这些数据(大约40Mb,在几个zip文件中)是相同的,我想在2个应用程序之间共享它,以便它为用户消耗更少的带宽和更少的存储空间。
目前,我还没有找到一个好的解决方案:
所以,我可以忘记一个简单的FileProvider,因为我需要一个File来获取ZipFile以解压缩我的数据
此外,也许可以构建一个ZipFileProvider,我的文件将放在一个大的ZipResourceFile中,其部分将通过内容提供者提供,就像这个库一样:
https://github.com/jarondl/android-zipfileprovider/blob/master/src/net/jarondl/zipfileprovider/ZipFileProvider.java
但是,如果我通过这样的ZipFileContentProvider得到一些mmaped ByteBuffer,它能够拥有长寿和安全的生命吗? (我应该使用服务吗?) 如果服务它的ZipFileContentProvider的进程死了怎么办? 记忆消耗怎么样?有什么警告? 是不是应该以短命的方式使用ContentProvider?
有更好的解决方案吗?
更新:
知道android无法共享同一个开发者(和其他人)中的几个应用程序的目录。或者有可能吗?
UPDATE2:
我考虑过将文件存储在getExternalFilesDir()上,但是下面的官方警告让我非常紧张(写作怎么样?):
注意虽然getExternalFilesDir()和。提供的目录 MediaStore内容无法访问getExternalFilesDirs() 提供者,具有READ_EXTERNAL_STORAGE权限的其他应用程序可以 访问外部存储上的所有文件,包括这些文件。如果你需要 要完全限制对文件的访问,您应该写 您的文件到内部存储。
答案 0 :(得分:1)
Android确实无法共享来自同一开发人员的几个应用程序的目录。或者有可能吗?
你之前说明它可能,但你试图避免它
原来,我将数据保存在公共下载目录中。这是一个简单的解决方案,但它需要读取权限,我想避免这种情况。
使用读取权限没有任何问题。或写入该事项的许可。您有什么特别的理由想避免它吗?
在适当的情况下为您的两个应用添加读/写权限,并访问您自己的重用文件夹结构。它不必是公共下载目录。例如<com.MyCompanyNamespace>/Data
然后你可以:
使用读/写perimssions没有任何问题。你可以在应用程序商店或应用程序中说明为什么需要权限,以减轻他们的想法。
我知道你有更多的问题,但希望这个简单的答案消除了这个需要。