Android:共享下载的文件

时间:2012-04-03 14:02:06

标签: android file android-contentprovider

我正在开发一项功能,我的应用程序将从服务器下载文件,然后允许用户在外部第三方应用程序中打开这些文件(假设用户安装了可以查看文件类型的应用程序)。

文件被下载并存储为字节数组,其中包含一些包含MIME类型和文件扩展名的元数据。

自定义ContentProvider似乎是明显的方法,因为我的应用需要保持对下载文件的控制 - 即其他应用的访问应该是只读的,我的应用应控制是否/何时文件被删除。

在实现我的自定义ContentProvider时,我不清楚一些事情。我看过的教程似乎只关心在两个

之间共享数据
  1. 仅仅覆盖并实施openFile()并实施query()insert()等作为“不执行任何操作”存根方法是否足够?
  2. 假设实现openFile()是可行的方法,我如何从字节数组中创建ParcelFileDescriptor
  3. 注意:如果可能的话,我需要一直支持API级别3(Cupcake)。

1 个答案:

答案 0 :(得分:2)

我做了更多的挖掘工作,最后遇到this source用于Open Android AttachmentProvider实施(针对他们的电子邮件客户端)。

所以,回答我自己的问题:

  1. 看起来我需要实施openFile()getType()query()。他们的query()实现提供了对显示名称,uri,文件大小和“_ID”列(as recommended by the dev guide)的列的访问权限。
  2. ParcelFileDescriptor s专门用于处理File(我猜名称中的线索!)所以唯一的方法是将字节数组写入文件系统,然后创建该ParcelFileDescriptor的{​​{1}}。幸运的是,似乎我可以写入应用程序的私人文件夹,以防止其他应用程序弄乱我的文件。