Java 需要共享ContentProvider代码,但需要唯一的内容权限
我有一个公共库,它通过ContentProvider提供公共数据存储库。然后,单个应用程序引用库,但有自己独特的数据存储(即,共享数据库模式,但每个应用程序都有自己的数据库)Java 需要共享ContentProvider代码,但需要唯一的内容权限,java,android,android-contentprovider,android-contentresolver,Java,Android,Android Contentprovider,Android Contentresolver,我有一个公共库,它通过ContentProvider提供公共数据存储库。然后,单个应用程序引用库,但有自己独特的数据存储(即,共享数据库模式,但每个应用程序都有自己的数据库) 我的问题是,当我同时安装了两个应用程序时,我遇到了冲突,因为权限是相同的。因此,我需要为每个应用程序设置一个唯一的内容权限,但在代码中找不到引用唯一权限的好方法(配置清单不是问题)。我按照建议在我的每种类型中使用静态内容URI,但这些类型需要为每个应用返回不同的值(引用特定于应用的权限)。恐怕我需要把所有东西都转换成非静态
我的问题是,当我同时安装了两个应用程序时,我遇到了冲突,因为权限是相同的。因此,我需要为每个应用程序设置一个唯一的内容权限,但在代码中找不到引用唯一权限的好方法(配置清单不是问题)。我按照建议在我的每种类型中使用静态内容URI,但这些类型需要为每个应用返回不同的值(引用特定于应用的权限)。恐怕我需要把所有东西都转换成非静态访问器,但我真的不想这样做。有没有其他我错过的方式;也许我可以在清单中设置一些内容?您需要使用PackageManager.getProviderInfo()检索提供程序的ProviderInfo。ComponentName可以从提供程序所在的上下文及其类中构造。ProviderInfo.authority提供权限。(如果有多个权限,则这些权限都以逗号分隔的列表形式包含在该字符串中。)我没有想到PackageManager;我会尝试一下。PackageManager.getProviderInfo()是在API 9中添加的,但是PackageManager.resolveContentProvider()返回相同的信息。这是我需要的,谢谢!