Расскажите про intent resolution неявных интентов

Посмотреть в Telegram: @AndroidSobes/48
Механизм поиска компонента по неявному интенту называется Intent Resolution. Intent resolution сводится к тому, что система проверяет интент фильтры всех компонентов, которые прописаны в андроид манифестах установленных приложений, и интент фильтры броадкаст ресиверов, зарегистрированных динамически.

Для поиска компонента проверяется совпадение по заданным в интенте атрибутам action, category и data.

🔘 Если в интент добавлен action, то этот же action должен быть объявлен в intent-filter компонента. Если фильтр компонента не содержит никакой action, то этот компонент сможет обрабатывать только интенты без action.

🔘 Если интент содержит категории (атрибут category), то интент фильтр компонента должен иметь все заданные категории.

🔘 Data в интенте – это URI. При проверке совпадения по data сравнивается data type и data scheme+authority+path. Type может быть добавлен в интент явно методом setType() или разрешен по схеме (scheme) объекта data.

Примеры разрешения интентов можно найти в документации.