Класс ContentResolver
поддерживает отображение из Полномочий контента в ContentProvider
классы.Данные для этого сопоставления поступают из элементов <provider>
файлов AndroidManifest.xml различных установленных приложений.ContentResolver использует это сопоставление, чтобы определить, какой класс Provider является правильным для использования для данного входящего URI. Думайте о ContentResolver как о подобном DNS.Он определяет, какой сервер (поставщик) является правильным для ответа на ваш запрос.
Только один ContentProvider будет соответствовать, потому что contentAuthorities (часть содержимого «тип имени домена»: тип uri) должны быть уникальными,Они не иерархические.Рассматривайте их как уникальную строку, которая должна точно соответствовать.Причина, по которой они выглядят иерархически, заключается в том, что они позволяют легко гарантировать уникальность, аналогично тому, как имена пакетов Java гарантируются уникальными.
Согласно разделу «Описание:» для документации тега :
Система Android определяет поставщиков контента по авторитетной части контента: URI. ДляНапример, предположим, что следующий Content URI передан ContentResolver.query ():
content://com.example.project.healthcareprovider/nurses/rn
Схема content: идентифицирует данные как принадлежащие поставщику контента и органу (com.example.project.healthcareprovider) идентифицирует конкретного поставщика. Таким образом, полномочия должны быть уникальными. Как правило, как в этом примере, это полное имя подкласса ContentProvider. Часть пути URI может использоваться поставщиком содержимого для идентификацииопределенные подмножества данных, но эти пути не объявлены в манифесте
Что касается того, что происходит, когда вы делаете провайдера с contentAuthority, который идентичен другому ... Ну, вещи ломаются.откажется от установки любого пакета, который идет в секунду, говоря:
WARN / PackageManager: Не удается установить, поскольку имя провайдера com.xxx.Provider (в пакете com.xxx) уже используется com.zzz
Так что ... Не делайте этого.
Нет способа проверить, работает ли ContentProvider.Он запускается и останавливается автоматически ContentResolver по мере необходимости.Когда вы начнете делать запросы для определенного contentAuthority, будет запущен связанный поставщик, если он еще не запущен.Он будет автоматически остановлен ContentResolver, через некоторое время после простоя и, похоже, какое-то время может не понадобиться.