Открытие приложения по ссылке в 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:// и кастомные схемы.

Практический чеклист для внедрения

  1. Решите стратегию: App Links (лучше), кастомная схема (простая) или intent:// (для браузер‑переходов).
  2. В AndroidManifest.xml: добавьте intent‑filter с action=VIEW, category=BROWSABLE|DEFAULT и data (scheme, host, pathPattern).
  3. Обработайте Uri в Activity: parse Uri, валидируйте параметры, не ломайтесь при отсутствии полей.
  4. Реализуйте fallback: открытие страницы в браузере или редирект в магазин (Play Market), если приложение не установлено.
  5. Протестируйте на нескольких браузерах и версиях 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 для ваших конкретных экранов.