Подтвердить что ты не робот

Зачем использовать ContentProvider.getType() для получения типа MIME?

Глядя на контент-провайдеров, я не совсем чист от типичного использования метода getType(). В документе API говорится о реализации этого метода, который

Это позволяет [приложениям] извлекать MIME тип для URI при отправке намерения.

Может ли кто-нибудь описать типичный случай, когда его использование было бы особенно полезно?

4b9b3361

Ответ 1

Например, вы пишете контент-провайдера для галереи изображений. Вы должны указать в методе getType(), который вы предоставляете изображениями - jpg или png. Итак, когда вы запустите галерею изображений, она сможет отображать встроенные изображения и изображения, предоставленные вашим поставщиком контента.

В псевдокоде пользователь contentProvider делает что-то вроде:

List contentProviders = getProviders();
List resultProviders;
final Type type = Type.JPG;
for (ContentProvider provider : contentProviders) {
  if (type == provider.getType()) {
     resultProviders.add(provider);
  }
}

Это псевдокод, но я надеюсь, что у вас возникнет эта идея.

Ответ 2

Как я понимаю, использование может быть следующим:

В приложении А содержится поставщик контента. Приложение B использует этого поставщика контента для извлечения всех элементов данных из приложения A. Затем пользователь выбирает один из них (в приложении B), после чего следует активировать действие в приложении A для показа/редактирования/удаления выбранного элемента данных. Таким образом, приложение B создает намерение, и чтобы убедиться, что действие в приложении A обрабатывает его, вам нужно установить тип (mime-) намерения на тип mime uri (действия show/edit/delete в App A добавила этот тип mime в свои фильтры намерения).