Как взаимодействовать со сторонним приложением

«Как взаимодействовать со сторонним приложением» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для взаимодействия со сторонними приложениями в Android используются явные и неявные Intent'ы, а также Content Providers или Broadcast Receivers.

Явный Intent (если знаем точный класс):

val intent = Intent(this, OtherActivity::class.java)
startActivity(intent)

Неявный Intent (через action):

val intent = Intent(Intent.ACTION_VIEW).apply {
    data = Uri.parse("https://google.com")
}
startActivity(intent)

Для глубоких ссылок используйте Intent Filters в манифесте:

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:scheme="myapp" android:host="details"/>
</intent-filter>

Для долгосрочного взаимодействия используйте Content Providers (для данных) или Bound Services (для IPC). Всегда проверяйте наличие приложения перед вызовом:

intent.resolveActivity(packageManager)?.let {
    startActivity(intent)
}