Приведите пример вызова неявного Intent в Android
Что проверяют
Понимаете ли вы, что неявный Intent это описание намерения, а не ссылка на класс, и знаете ли современные ограничения платформы. Вопрос простой на вид, но по деталям сразу видно, писал ли кандидат под свежие версии системы.
Как отвечать
Неявный Intent не указывает компонент. Вы задаёте действие, данные и категорию, а система по фильтрам намерений подбирает, кто это откроет. Минимальный пример на открытие ссылки и на отправку текста:
val view = Intent(Intent.ACTION_VIEW, Uri.parse("https://example.org"))
try {
startActivity(view)
} catch (e: ActivityNotFoundException) {
showMessage()
}
val share = Intent(Intent.ACTION_SEND).apply {
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, "текст")
}
startActivity(Intent.createChooser(share, "Поделиться"))Отдельно скажите про видимость пакетов: начиная с Android 11 приложение не видит список установленных программ, поэтому resolveActivity возвращает null даже там, где обработчик есть. Либо вы объявляете нужные намерения в блоке queries манифеста, либо просто ловите ActivityNotFoundException. Второй путь надёжнее и короче.
Если ждёте ответ от чужого экрана, упомяните Activity Result API: registerForActivityResult с готовым контрактом вместо старой пары методов. Хорошо звучит и пример с типом без данных: для выбора файла берут ACTION_OPEN_DOCUMENT, когда нужен долгий доступ к содержимому.
Где спотыкаются
Проверяют наличие обработчика через resolveActivity и считают это безопасным. Без объявленных запросов в манифесте проверка на новых версиях врёт, и пользователь получает сообщение об отсутствии приложения при установленном браузере.
Второе: показывают startActivityForResult с кодом запроса. Метод устарел, и на собеседовании по Android это читается как опыт, остановившийся несколько лет назад.
Третье: забывают, что результат неявного вызова непредсказуем. Обработчиков может быть несколько, выбор делает пользователь, а данные уходят в чужой процесс, поэтому класть в дополнительные поля чувствительное нельзя.