【问题标题】:Android ContentProvider with JSON files带有 JSON 文件的 Android ContentProvider
【发布时间】:2013-07-03 23:42:11
【问题描述】:

如何使用 JSON 文件实现 ContentProvider?我的目标是希望将一个应用程序中的 json 文件(或文件本身)的内容传输到另一个应用程序。 Android 文档说它可以用 BLOB 来完成,但我不知道这意味着什么,而且他们的所有示例都指的是我的应用程序不使用的 SQL 数据库(所有数据都存储在一个 JSON 文件中)。

【问题讨论】:

    标签: android json blob android-contentprovider file-transfer


    【解决方案1】:

    我的目标是希望将一个应用程序中的 json 文件(或文件本身)的内容传输到另一个应用程序。

    要真正做到这一点,请在ContentProvider 端使用openFile(),在ContentResolver(客户端)端使用openInputStream()/openOutputStream()

    但是,我怀疑这不是一个特别好的主意。 JSON 不是一种可以与多个同时访问者一起工作的数据存储模型。 IOW,当两个应用程序同时尝试使用 JSON 时,谁赢谁输?

    另外,如果托管 JSON 文件的应用程序被卸载,会发生什么情况?现在其他应用无法再访问数据了。

    【讨论】:

    • 我主要需要将数据从我的应用程序的免费版本传输到完全付费版本。 JSON 文件保留了一个自定义对象的数组列表,我希望我的应用程序的付费版本继承这个数组列表。这只会是一次性的。
    • @StackOverflowMaster:好的。这是一个示例项目,显示通过 ContentProvider 在内部存储上提供 PDF 文件:github.com/commonsguy/cw-omnibus/tree/master/ContentProvider/…
    • 我查看了您的代码。澄清一下,您的示例项目复制了一个 PDF 文件,但它是从一个应用程序的文件目录到另一个应用程序的文件目录吗?
    • @StackOverflowMaster:你说你想要一个ContentProvider 来提供文件。我的ContentProvider 提供一个文件。它恰好是从资产中复制出来的 PDF,以简化示例,因为文件需要来自某个地方。而且,我的示例恰好是针对启动一个活动来查看文件。但是,完全欢迎您使用 openFile() 来提供您从任何您想要的任何内容创建的 JSON 文件,并且欢迎您在其他应用程序中使用 ContentResolveropenInputStream() 来读取该 JSON 文件,就像 PDF观众会阅读我提供的 PDF 文件。
    • 好的,所以 App A 提供了我需要在其中打开流以将文件复制到 App B 的文件目录的文件。我的问题是,我将如何在接收应用程序 B 中实现它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多