Интенты используются для старта базовых компонентов. Система понимает какой компонент стартовать по атрибутам объекта
Intent.
Explicit intent явно содержит информацию о классе компонента. Это может быть объект
Class, переданный в конструкторе
Intent(context: Context, cls: Class<*>) или методом
setClass(context: Context, cls: Class<*>), или объект класса
ComponentName, переданный методом
setComponent(componentName: ComponentName).
Явные интенты часто используются для старта компонентов внутри приложения, т.к. имена классов известны.
Например
startActivity(Intent(context, MyHomeActivity::class.java)) – это старт активити с явным интентом.
Implicit intent не содержит информацию о конкретном компоненте. Система использует косвенные атрибуты, такие как
action,
type и
category для выбора стартуемого компонента. Механизм поиска компонента по атрибутам неявного интента называется
Intent Resolution и будет разобран в следующем посте.
Неявные интенты часто используются для старта компонентов других приложений.
Например
startActivity(Intent(Intent.ACTION_CALL, Uri.parse("tel:$number"))) – неявный интент, стартующий активити, которая выполнит звонок по заданному номеру.