1

我正在开发一组新颖的应用程序,它们共享它们的基本行为(从数据库中挑选随机单词并将它们组合起来)。因为它们的工作原理基本相同,所以我尝试将代码的基础视为某种模板,但结果好坏参半。

当我正在进行更新时,我想让项目对 MVC 更加友好,并开始研究使用 ContentProvider 而不是直接的 SQLiteOpenHelper。我倾向于这种方式,因为谷歌的文档非常坚持使用它们。我的问题是在命名冲突领域。

TL; DR 跳过这里的问题。

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

我不确定这是否可以通过内容提供者的设置方式实现,这似乎是单一的。我无法想象 Google 没有将此视为潜在问题或所需功能。是的,可能会出现一些复杂性,但我们已经克服了 dll 地狱和其他类似名称的问题……正确地做并不是那么困难。

4

1 回答 1

1

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

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

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

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

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

于 2011-09-20T11:14:51.550 回答