Открытие приложения по ссылке в Android — кратко и по делу
Чтобы открыть приложение по ссылке, используйте один из трёх подходов: HTTPS App Links (рекомендовано для связанного домена), кастомные URL‑схемы (myapp://) или intent:// строки из браузера. Выбор зависит от наличия сайта, требуемого UX и поведения при отсутствии приложения.
Виды ссылок и как они работают
- Кастомная схема (mycompany.appname://path?param=1). В манифесте объявляете intent‑filter с data scheme="mycompany.appname". При клике Android найдёт ваше приложение и передаст Uri в Activity.
- intent://...#Intent;…;end; — строка, которую браузер передаёт системе: она формирует Intent с data = указанной scheme, package = optional и extras (S., i., B. префиксы).
- App Links (https://your.domain/...) — обычные HTTPS‑ссылки с верификацией через Digital Asset Links. Лучший вариант для связки веба и приложения — пользовательский опыт более предсказуем и безопасен.
Пример intent://: intent://product/123#Intent;scheme=mycompany.appname;package=com.example.app;S.screen=product;i.productId=123;end
При клике Android либо запустит указанное приложение (если установлено и может обработать Intent), либо покажет fallback/диалог.
Если у вас есть веб‑версия — делайте App Links. Для интеграций из сторонних приложений или тестовых задач удобно использовать intent:// и кастомные схемы.
Практический чеклист для внедрения
- Решите стратегию: App Links (лучше), кастомная схема (простая) или intent:// (для браузер‑переходов).
- В AndroidManifest.xml: добавьте intent‑filter с action=VIEW, category=BROWSABLE|DEFAULT и data (scheme, host, pathPattern).
- Обработайте Uri в Activity: parse Uri, валидируйте параметры, не ломайтесь при отсутствии полей.
- Реализуйте fallback: открытие страницы в браузере или редирект в магазин (Play Market), если приложение не установлено.
- Протестируйте на нескольких браузерах и версиях Android — поведение может отличаться.
Не рассчитывайте на одинаковое поведение всех браузеров: некоторые блокируют незнакомые схемы или по‑разному обрабатывают intent://. Тестируйте.
Что учесть при сборке intent:// и схем
- Убедитесь, что scheme в intent:// совпадает с тем, что ожидается в манифесте.
- Если указываете package=, Android попытается открыть именно это приложение; без package система выберет любое подходящее.
- Для передачи extras используйте префиксы S. (String), i. (int), B. (boolean).
- Не создавайте пересекающиеся intent‑filter внутри одного приложения — это приведёт к неоднозначности навигации.
Частые ошибки
- Несоответствие scheme между ссылкой и манифестом.
- Отсутствие fallback и плохой UX, когда приложение не установлено.
- Непроверенные параметры — краши при парсинге Uri.
- Использование общей короткой схемы (app://), приводящее к конфликтам с другими приложениями.
- Ожидание одинакового поведения в Chrome, Firefox, Samsung Browser и WebView.
FAQ
- Как открыть Play Market, если приложения нет?
Добавьте в логику проверку наличия приложения по package; если нет — открывайте market://details?id=com.example.app или https://play.google.com/store/apps/details?id=... - Почему intent:// не срабатывает в некоторых браузерах?
Браузеры могут блокировать или не поддерживать прямой перевод в Intent; также поведение зависит от версии Android и настроек безопасности. - Чем App Links лучше кастомных схем?
App Links используют HTTPS и верификацию домена, позволяя надёжно связывать веб и приложение и избегать захватов схем.
Если нужно, могу подготовить готовые фрагменты AndroidManifest.xml и примеры обработки Uri на Kotlin/Java для ваших конкретных экранов.