需要共享ContentProvider代码,但需要独特的内容权限

时间:2011-09-01 19:03:36

标签: java android android-contentprovider android-contentresolver

我有一个公共库,它通过ContentProvider提供公共数据存储库。然后,各个应用程序引用该库,但拥有自己唯一的数据存储(即共享数据库模式,但每个应用程序都有自己的数据库)。

我的问题是,当我同时安装了两个应用程序时,我遇到了冲突,因为权限是相同的。因此,我需要为每个应用程序提供唯一的内容权限,但无法找到引用代码中唯一权限的好方法(配置清单不是问题)。我按照建议在每个类型中使用静态CONTENT_URI,但是那些需要为每个应用返回不同的值(引用特定于应用程序的权限)。我担心我需要把所有东西变成非静态访问器,但我真的不想这样做。还有其他一些我缺席的方式;也许我可以在清单中设置一些东西?

1 个答案:

答案 0 :(得分:3)

您需要使用PackageManager.getProviderInfo()检索提供程序的ProviderInfo。 ComponentName可以从提供者所在的Context及其类构造。 ProviderInfo.authority提供权限。 (如果有多个权限,则这些都是该字符串中的包作为逗号分隔列表。)