我正在开发一项功能,我的应用程序将从服务器下载文件,然后允许用户在外部第三方应用程序中打开这些文件(假设用户安装了可以查看文件类型的应用程序)。
文件被下载并存储为字节数组,其中包含一些包含MIME类型和文件扩展名的元数据。
自定义ContentProvider
似乎是明显的方法,因为我的应用需要保持对下载文件的控制 - 即其他应用的访问应该是只读的,我的应用应控制是否/何时文件被删除。
在实现我的自定义ContentProvider
时,我不清楚一些事情。我看过的教程似乎只关心在两个
openFile()
并实施query()
,insert()
等作为“不执行任何操作”存根方法是否足够?openFile()
是可行的方法,我如何从字节数组中创建ParcelFileDescriptor
?注意:如果可能的话,我需要一直支持API级别3(Cupcake)。
答案 0 :(得分:2)
我做了更多的挖掘工作,最后遇到this source用于Open Android AttachmentProvider
实施(针对他们的电子邮件客户端)。
所以,回答我自己的问题:
openFile()
,getType()
和query()
。他们的query()
实现提供了对显示名称,uri,文件大小和“_ID”列(as recommended by the dev guide)的列的访问权限。ParcelFileDescriptor
s专门用于处理File
(我猜名称中的线索!)所以唯一的方法是将字节数组写入文件系统,然后创建该ParcelFileDescriptor
的{{1}}。幸运的是,似乎我可以写入应用程序的私人文件夹,以防止其他应用程序弄乱我的文件。