Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要共享ContentProvider代码,但需要唯一的内容权限_Java_Android_Android Contentprovider_Android Contentresolver - Fatal编程技术网

Java 需要共享ContentProvider代码,但需要唯一的内容权限

Java 需要共享ContentProvider代码,但需要唯一的内容权限,java,android,android-contentprovider,android-contentresolver,Java,Android,Android Contentprovider,Android Contentresolver,我有一个公共库,它通过ContentProvider提供公共数据存储库。然后,单个应用程序引用库,但有自己独特的数据存储(即,共享数据库模式,但每个应用程序都有自己的数据库) 我的问题是,当我同时安装了两个应用程序时,我遇到了冲突,因为权限是相同的。因此,我需要为每个应用程序设置一个唯一的内容权限,但在代码中找不到引用唯一权限的好方法(配置清单不是问题)。我按照建议在我的每种类型中使用静态内容URI,但这些类型需要为每个应用返回不同的值(引用特定于应用的权限)。恐怕我需要把所有东西都转换成非静态

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


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

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

我没有想到PackageManager;我会尝试一下。PackageManager.getProviderInfo()是在API 9中添加的,但是PackageManager.resolveContentProvider()返回相同的信息。这是我需要的,谢谢!