2
我正在研究一个功能,其中我的应用程序将从服务器下载文件,然后允许用户在外部第三方应用程序中打开这些文件(假设用户安装了可以查看文件的应用程序类型)。Android:共享下载的文件
文件被下载并存储为字节数组,其中包含一些伴随的元数据,其中包括MIME类型和文件扩展名。
自定义ContentProvider
似乎是明显的方式,因为我的应用程序需要保留对下载文件的控制 - 即其他应用程序的访问应该是只读的,并且我的应用程序应该控制是否/当文件被删除。
说到实施我的自定义ContentProvider
,我不清楚几件事情。我看只有教程似乎在两个
- 之间,共享数据所关心的是它不够的,只是重写和实现
openFile()
和实施query()
,insert()
等为“什么也不做”存根的方法呢? - 假设执行
openFile()
是要走的路,我该如何处理从字节数组创建ParcelFileDescriptor
?
注意:如果可能的话,我需要一直支持API级别3(Cupcake)。
另一种可能是使用MemoryFile。我现在正在研究这个解决方案,希望性能比普通文件更快。 – Georgie 2013-03-10 23:23:54
关于我上面的评论,我尝试了在内容提供者openFile()实现中使用MemoryFile,但没有成功。原因之一是支持与MemoryFile相关的ParcelFileDescriptor在最近的Android版本中已经消失。甚至在此之前它需要反射技巧才能访问。 – Georgie 2013-03-15 03:09:27
有什么方法可以将字节数组传递给'ParcelFileDescriptor'吗?出于安全原因,我无法在手机上保存PDF文件。 – 2015-06-15 20:29:45