#android #android-contentprovider
#Android #android-contentprovider
Вопрос:
При запросе ContentProvider на Android пользователь указывает интересующий его ContentProvider, предоставляя «content URI» для этого ContentProvider. Что происходит, когда несколько ContentProvider обслуживают один и тот же URI, либо намеренно? или злонамеренно?
При попытке открыть изображение на моем телефоне я видел, что он выдает запрос с приложениями, которые могут «обрабатывать» изображение. Произойдет ли здесь то же самое?
Ответ №1:
Несколько поставщиков контента не могут этого сделать. Первое приложение, которое регистрирует поставщика контента, используя элемент в своем манифесте, имеет контроль над шаблоном URI. Я почти уверен, что вы получите сообщение об ошибке установки, если попытаетесь добавить другого поставщика, который использует тот же шаблон URI. Android отслеживает поставщиков и URI.
Когда вы видите приглашение с несколькими приложениями для обработки файла или ситуации, это потому, что приложения указали дочерний элемент with, который включает android.intent.category.CATEGORY_ALTERNATIVE или android.intent-категория.КАТЕГОРИЯ_ВЫБРАННАЯ_АЛЬТЕРНАТИВНАЯ. По сути, приложение или приложения объявляют себя альтернативами действию, указанному в дочернем элементе. Это позволяет пользователю иметь несколько вариантов обработки того или иного типа данных.
Имеет смысл предоставить альтернативные варианты: пользователь может захотеть отредактировать картинку, поделиться ею через Twitter или отправить по электронной почте.
Обратите внимание, что два поставщика контента могут делать одно и то же, но они не могут использовать один и тот же URI. Приложение должно делать сознательный выбор, какое из них использовать, или предоставлять какой-то механизм выбора между ними.
Комментарии:
1. Да, я проверил, фактически попытавшись зарегистрировать ContentProvider, используя URI «content://contacts». Я получил сообщение об ошибке установки при попытке установить APK.