无论如何,我可以做这样的事情
所有数据I / O函数都写在库包中
数据只能在具有此库的应用程序之间共享(可选)
使用此库的每个应用都可以在第一时间启动“数据库”,之后安装的应用可以访问相同的“数据库”
我认为ContentProvider对我来说是一个完美的解决方案,但似乎条件3是不可能的。
任何建议PLZ?
答案 0 :(得分:1)
所有数据I / O函数都写在库包中
行。
数据只能在具有此库的应用程序之间共享(可选)
对您的提供商(signature)的适当权限非常好。
每个使用此库的应用程序都可以在第一时间启动“数据库”,以后安装的应用程序可以访问相同的“数据库”
我认为ContentProvider对我来说是一个完美的解决方案,但似乎条件3是不可能的。
由您来编码数据的基础结构。由于您已经假定提供程序属于专用库包,因此可能的解决方案是:
com.mysuite.library
中实施您的提供商。com.mysuite.library
,就要求您的用户下载此库包。但是,如果您不想提供中央软件包,我相信您需要在每个自己的应用程序中为提供者提供服务,具有不同的权限(以避免CONFLICTING_PROVIDER错误)。在初始化每个客户端时,首先检查命名空间中是否有另一个提供者(com.mysuite.provider *),假设您在搜索时知道要创建的所有可能的权限和/或在它们之间进行迭代(com.mysuite。 provider1,2等。)。
但是,这个提议可能会产生自定义备份问题(例如,如果只备份其中一个客户端),这将迫使重新创建数据。它肯定有警告,肯定更复杂(丑陋,恕我直言),但可以使其工作。
就个人而言,我坚持使用选项1(库包)。在下载应用程序所需的库包时,我没有看到用户抱怨。
这只是一个架构决定,真的。
答案 1 :(得分:0)
维护共享数据的方法只有四种:
一旦您选择了您希望数据驻留的位置,您就可以通过任意数量的机制进行传输。
如果您不将数据存储在SD卡或服务器上, ContentProvider
是一个不错的选择,但您希望能够使用{{1将数据传输到不知道它存在的应用程序} URI。
如果您不需要与特定应用程序套件之外的任何人共享任何此类数据,并且您的数据不是数据库结构,那么您可能更喜欢更简单的传输。