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")))
– неявный интент, стартующий активити, которая выполнит звонок по заданному номеру.