【问题标题】:Can ParcelFileDescriptor represent a database column?ParcelFileDescriptor 可以代表数据库列吗?
【发布时间】:2013-07-23 14:48:07
【问题描述】:

我的内容提供者将数据存储在 SQLite 数据库中。一列是一个字符串。我想将此字符串作为文件附件附加到电子邮件中。

我通过实现ParcelFileDescriptor openFile(Uri uri, String mode) 得到了这个工作。实现

  1. 从数据库中查询列值
  2. 将返回值存储在文件中
  3. 返回ParcelFileDescriptor.open(file,ParcelFileDescriptor.MODE_READ_ONLY)的结果

是否可以通过直接表示记录的列值的ParcelFileDescriptor 来避免这些步骤和重复?

(我可以将字符串值存储在文件中以避免重复,但我想继续使用 SQLite 提供的 FTS3 工具)

感谢您的帮助!

【问题讨论】:

    标签: android android-contentprovider


    【解决方案1】:

    是的,我使用 public ParcelFileDescriptor simpleQueryForBlobFileDescriptor() 让它工作了

    我不敢相信我错过了这条宝贵的信息:)

    编辑:如果需要在返回客户端之前转换数据库列值,还有另一种方法ParcelFileDescriptor[] createPipe() 更有用。

    can be found here方法的使用示例。

    【讨论】:

    • 哇,我的立场是正确的。从 api 级别 11 开始,有一个内置函数可以创建与数据库 blob 对应的内存映射文件。干得好。
    • 谢谢j__m! MMF 仍然是某种重复,但比手动创建临时文件要好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多