Android将ContentProvider分发为与app捆绑在一起的库

时间:2011-09-20 08:39:27

标签: android android-contentprovider sqliteopenhelper

我正在研究一组新颖的应用程序,这些应用程序分享它们的基本行为(从数据库中挑选随机单词并将它们组合起来)。因为它们都基本相同,所以我试图将代码的基础视为某种模板,结果不一致。

当我正在进行更新时,我想让项目更加友好,并且开始考虑使用ContentProvider而不是直接使用SQLiteOpenHelper。我倾向于这种方式,因为Google的文档 INCREDIBLY 坚持使用它们。我的问题在于命名冲突。

TL; DR跳过这里查询问题。

如果两个第三方Android应用程序(由同一个开发人员制作)都希望使用相同的ContentProvider,但不依赖于正在安装的另一个应用程序,那么它们是否都包含ContentProvider的副本(具有相同的权限和所有内容)并允许同时安装(使用最高版本的ContentProvider)?

我不确定内容提供商的设置方式是否可行,这似乎是单一的。我无法想象Google并未将此视为潜在问题或所需功能。是的,可能会出现一些复杂问题,但我们已经克服了地狱和其他类似命名的问题......做起来并不是那么困难。

1 个答案:

答案 0 :(得分:1)

  

我倾向于这种方式,因为谷歌的文档非常坚定地使用它们。

并非所有Google员工都同意这一立场,更不用说像我这样的其他笨蛋了。我只使用ContentProvider在进程之间共享数据。

  

如果两个第三方Android应用程序(由同一个开发人员制作)都希望使用相同的ContentProvider,但不依赖于正在安装的另一个应用程序,那么它们是否都包含ContentProvider的副本(具有相同的权限和所有内容)并允许同时安装(使用最高版本的ContentProvider)?

AFAIK,第一个注册的ContentProvider会赢,而不是最高版本。事实上,如果第二个应用尝试重新定义现有的ContentProvider,我不确定第二个应用会安装。

此外,如果用户卸载了当前的ContentProvider,则另一个应用程序被搞砸了,因为它的数据现在变成了“poof”。