我有一个自定义ContentProvider
类,我最初在与使用它的应用程序相同的项目文件中开发它。然而,由于这个应用程序只是众多用户之一ContentProvider
,我想将它拆分到不同的项目中。该代码正在 Android PDK 上开发,但未来的客户端可能会在 SDK 上开发(在自定义 SDK 或 SDK 插件等上)。
我面临的问题是关于ContentProvider
类中的常量,例如 CONTENT_URI、列名以及一些用于解释从查询返回的值的常量。这些当然不能从另一个项目访问。在我看来,此时我有 3 个选项:
1) 忽略问题,直接在用户应用程序代码中输入值。然而,这使得访问变得ContentProvider
更加丑陋。我将不得不更改一些列,用字符串而不是整数对一些列进行编码,以保持代码的可维护性。
2) 将常量放在一个单独的类中,并在使用ContentProvider
. 不过,我不喜欢复制代码。在每个目标应用程序中保留此代码的副本,会使某些事情的维护变得更加烦人。
3) 滥用我在 PDK 上开发的事实,并公开一个平台库,如vendor/sample/frameworks/PlatformLibrary
. 但是,平台库没有清单文件,如果我的理解正确,这意味着我不能包含ContentProvider
. 这意味着我需要一个“正常”项目用于ContactProvider
,而另一个单独的项目只是为了公开具有常量值的类。这感觉太不对劲了。
具有多个子表的 ContentProvider的类结构中的答案似乎暗示了选项 (1),这可能是目前最好的选择。
但是,也许我错过了另一种整洁的方式来做到这一点?请记住,我正在 PDK 上进行开发,我当然希望我ContentProvider
能够以与 Google 供应商相同的方式使用。