Могут ли несколько ContentProvider обслуживать один и тот же URI? - PullRequest
3 голосов
/ 12 апреля 2011

При запросе ContentProvider на Android можно указать интересующий ContentProvider, указав «URI контента» для этого ContentProvider.Что происходит, когда несколько ContentProvider'ов обслуживают один и тот же URI, либо намеренно?или злонамеренно?

При попытке открыть картинку на моем телефоне я видел подсказку с приложениями, которые могут "обрабатывать" изображение.Произойдет ли подобное здесь?

1 Ответ

6 голосов
/ 12 апреля 2011

Несколько ContentProviders не могут этого сделать.Первое приложение, которое регистрирует контент-провайдера, используя элемент в его манифесте, имеет контроль над шаблоном URI.Я уверен, что вы получите ошибку установки, если попытаетесь добавить другого поставщика, который использует тот же шаблон URI.Android отслеживает поставщиков и URI.

Когда вы видите приглашение с несколькими приложениями для обработки файла или ситуации, это потому, что приложения указали с дочерним элементом, который включает android.intent.category.CATEGORY_ALTERNATIVE или android.intent-category.CATEGORY_SELECTED_ALTERNATVE.По сути, приложение или приложения объявляют себя альтернативой действию, указанному в дочернем элементе.Это позволяет пользователю иметь несколько вариантов обработки типа данных.

Имеет смысл предоставить альтернативы: пользователь может захотеть отредактировать изображение, поделиться им через Twitter или отправить по электронной почте.

Обратите внимание, что два провайдера контента могут делать одно и то же, но они не могут использовать один и тот же URI.Приложение должно сделать осознанный выбор, какой из них использовать, или предоставить какой-то механизм выбора между ними.

...