net::ERR_UNKNOWN_URL_SCHEME — сообщение «Веб-страница недоступна», которое чаще всего видят в приложениях на Android: нажали кнопку «Позвонить», «Написать в WhatsApp» или «Открыть в приложении» — а вместо этого серый экран с кодом ошибки. Ошибка значит, что движок не знает, как открыть ссылку такого вида, и не передал её другой программе.
Мы разобрали по исходному коду Chromium, кто и когда показывает эту ошибку, и проверили на стенде Chromium 149, что происходит с такими ссылками на компьютере. Ниже — что делать пользователю на телефоне и как исправить ошибку владельцу приложения или сайта.
Что означает ERR_UNKNOWN_URL_SCHEME
Любой адрес начинается со схемы — части до двоеточия. https: и http:
браузер загружает сам. tel:, mailto:, whatsapp:, tg:, intent:,
market: — это не страницы, а команды «открой приложение»: звонилку,
почту, мессенджер, магазин приложений.
В списке ошибок Chromium, файле net_error_list.h, рядом стоят три кода:
| Ошибка | Код | Комментарий в исходниках |
|---|---|---|
| ERR_INVALID_URL | −300 | The URL is invalid — адрес неверен |
| ERR_DISALLOWED_URL_SCHEME | −301 | The scheme of the URL is disallowed — схема запрещена |
| ERR_UNKNOWN_URL_SCHEME | −302 | The scheme of the URL is unknown — схема неизвестна |
Где ставится код, видно в navigation_url_loader_impl.cc. Если для схемы
нет своего загрузчика, браузер спрашивает, может ли он передать адрес
другой программе. Передал — переход завершается кодом ERR_ABORTED, не
смог — ERR_UNKNOWN_URL_SCHEME.
Как выглядит ошибка на смартфоне
Во встроенном браузере приложения ошибка выглядит как простая страница
без оформления. Текст ошибки задан в строках Chromium для Android:
«Webpage not available» — «Веб-страница недоступна», затем «The webpage
at … could not be loaded because:» — «Не удалось загрузить страницу по
адресу …, потому что:» и код net::ERR_UNKNOWN_URL_SCHEME. Вместо
адреса сайта в сообщении находится сама ссылка, например
tel:+79001234567 или whatsapp://send?phone=…. Содержимое страницы,
с которой вы нажали кнопку, при этом пропадает, и вернуться можно
только кнопкой «Назад».
Многие пользователи видят ошибку на мобильных устройствах при попытке позвонить, написать письмо, открыть карту или оплатить заказ через приложение банка. Часто некоторые кнопки в том же приложении работают, а другие нет: обычные ссылки на страницы открываются, а ссылки определённого типа — специфичных для других приложений — вызывают ошибку.
Где эту ошибку показывают на самом деле
В файле net_error_auto_reloader.cc, который решает, перезагружать ли
страницу с ошибкой, есть прямое указание:
// For now, net::ERR_UNKNOWN_URL_SCHEME is only being displayed on // Chrome for Android.
То есть на экран ошибка выходит на Android. И главный источник там — Android WebView, встроенный браузер, на котором работают страницы внутри приложений: банков, магазинов, служб доставки, приложений-обёрток сайтов.
В коде WebView (aw_content_browser_client.cc) поведение описано так:
WebView сам внешние приложения не запускает, а даёт приложению, в котором
он встроен, перехватить запрос и решить, что делать. Если приложение
ссылку не перехватило, WebView пытается загрузить её как страницу и
отдаёт ERR_UNKNOWN_URL_SCHEME. Для разработчика это код
ERROR_UNSUPPORTED_SCHEME = -10 с описанием «Unsupported URI scheme» в
классе WebViewClient.
Стенд: что происходит на компьютере
Проверили в Chromium 149 под Linux, без установленных приложений для этих схем. Результаты:
| Что сделали | Результат |
|---|---|
Переход на foo://x, whatsapp://send, tel:, mailto:, intent://, market:// | ERR_ABORTED за 6–30 мс, страница не сменилась |
Переход на адрес с опечаткой htps://example.com/ | ERR_ABORTED, экрана ошибки нет |
| Нажатие на такие ссылки на странице | страница осталась на месте, ошибки нет |
Переадресация сервера 302 на foo://, htps://, tel: | ERR_ABORTED |
Картинка hhttps://…, стиль htps://…, скрипт htp://…, фон url('htps://…') | в консоли «Failed to load resource: net::ERR_UNKNOWN_URL_SCHEME» |
fetch('foo://x') | TypeError: Failed to fetch, в консоли «URL scheme "foo" is not supported» |
Рамка <iframe src="foo://x"> без нажатия | ERR_ABORTED, «Not allowed to launch 'foo://x' because a user gesture is required» |
Вывод: на компьютере Chrome любую незнакомую схему считает внешней и отдаёт системе — та либо откроет приложение, либо ничего не сделает. Экрана с ERR_UNKNOWN_URL_SCHEME при этом нет. Зато код появляется в консоли разработчика, если на сайте есть картинки, стили или скрипты с опечаткой в начале адреса.
Почему возникает ошибка: частые причины
- Приложение на WebView не обрабатывает ссылки. Кнопки «Позвонить»
(
tel:), «Написать» (mailto:), ссылки на WhatsApp, Telegram, Viber, карты и банковские приложения внутри приложения ведут на ошибку. - Ссылка
intent://открыта не в Chrome. Такие ссылки понимает Chrome на Android, а встроенный браузер чужого приложения — не всегда. - Нужное приложение не установлено, а страница не предусмотрела запасной адрес.
- Опечатка в адресе:
htps://,hhttps://,http//без двоеточия,ttps://— в ссылке, картинке или скрипте. - Устаревшая версия приложения, в которой обработка ссылок ещё не была исправлена.
Как исправить ошибку на телефоне: способы для пользователя
Самым простым решением является первый способ — его и следует попробовать сначала. Остальные шаги нужны, если ошибка повторяется.
1. Откройте страницу в обычном браузере
Во многих приложениях в меню страницы есть пункт «Открыть в браузере»
— три точки в углу экрана. Chrome и Яндекс Браузер передают ссылки
tel:, whatsapp: и intent: нужному приложению. Если такого пункта
нет, скопируйте адрес страницы и вставьте его в браузер.
2. Обновите приложение
Откройте Google Play, найдите приложение и нажмите «Обновить». Разработчики исправляют обработку ссылок, и проблема может уйти после обновления. Заодно обновите «Android System WebView» и Chrome — это отдельные приложения в Google Play.
3. Очистите кэш и данные приложения
После очистки данных приложение заново загрузит свои файлы. Если ошибку вызывали повреждённые файлы кэша, это поможет; если приложение просто не обрабатывает такие ссылки — нет.
«Настройки» → «Приложения» → выберите приложение → «Хранилище» → «Очистить кэш». Если не помогло — «Очистить данные»; учтите, что после этого придётся снова войти в аккаунт приложения.
4. Установите приложение, на которое ведёт ссылка
Если кнопка открывает WhatsApp, Telegram или приложение банка, а его на телефоне нет, ссылке некуда вести. Установите приложение или воспользуйтесь веб-версией сервиса.
5. Напишите в поддержку разработчика
Если ошибка повторяется на одной и той же кнопке, это недоработка приложения, и исправить её может только разработчик. Опишите, какую кнопку нажимали, и приложите снимок экрана с адресом из сообщения об ошибке.
6. Проверьте, какое приложение открывает ссылки
На Android можно вручную выбрать, какое приложение открывает ссылки определённого сайта: «Настройки» → «Приложения» → выберите приложение → «Открывать по умолчанию». Если там включено открытие поддерживаемых ссылок в приложении, которое с ними не справляется, отключение этой функции может помочь: ссылка откроется в браузере. Названия пунктов на разных устройствах могут отличаться.
Что не поможет
- Переустановка браузера. Ошибка возникает внутри приложения, а не в Chrome, поэтому удаление и установка браузера ничего не изменят.
- Отключение автоматического определения прокси, сброс сети и смена
DNS. Ссылка
tel:илиwhatsapp:не идёт в интернет, до сети дело не доходит. - Повторные нажатия. Попытка за попыткой будет приводить к той же ошибке. Однако иногда помогает долгое нажатие на кнопку: в меню появляется пункт «Копировать ссылку», и номер или адрес можно вставить вручную.
Образец письма в службу поддержки
Если вы не можете обойти ошибку сами, сообщить о ней разработчику проще всего так:
Здравствуйте! В приложении на экране «Контакты» при нажатии кнопки «Позвонить» появляется ошибка net::ERR_UNKNOWN_URL_SCHEME, совершение звонка невозможно. Телефон — Android 14, приложение последней версии. Пожалуйста, помогите исправить. Снимок экрана прилагаю.
Такое письмо помогает получить ответ быстрее: разработчику не нужно ничего уточнять, а описание ошибки сразу указывает на её решение.
Как исправить ошибку на компьютере
На экране ERR_UNKNOWN_URL_SCHEME на компьютере почти не встречается. Если
ссылка вида tel: или whatsapp:// ничего не открывает, проверьте, какая
программа назначена для неё: в Windows — «Параметры» → «Приложения» →
«Приложения по умолчанию» → «Выбрать значения по умолчанию по типу
ссылки» (в Windows 10 — «Выбор стандартных приложений для протоколов»). В Chrome можно посмотреть разрешения сайтов на открытие
приложений: «Настройки» → «Конфиденциальность и безопасность» →
«Настройки сайтов» → «Дополнительные разрешения» → «Обработчики
протоколов».
Если же вы видите код в консоли разработчика (F12 → «Консоль»), это ошибка на сайте: какой-то файл подключён с неправильной схемой. Обычный посетитель её не заметит, кроме того, что не загрузится картинка или стиль.
Что делать владельцу приложения
Правило зафиксировано в документации класса WebViewClient: если
WebViewClient задан, ответ true из shouldOverrideUrlLoading отменяет
загрузку адреса в WebView, а false — продолжает её «as usual», то есть
как страницу. Без WebViewClient WebView сам просит систему выбрать
обработчик. Поэтому ошибка появляется именно у приложений, которые задали
свой WebViewClient, но обрабатывают в нём только веб-адреса.
Исправление — передавать системе всё, что не начинается с http и
https:
override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean {
val uri = request.url
if (uri.scheme == "http" || uri.scheme == "https") return false
return try {
val intent = if (uri.scheme == "intent")
Intent.parseUri(uri.toString(), Intent.URI_INTENT_SCHEME)
else Intent(Intent.ACTION_VIEW, uri)
view.context.startActivity(intent)
true
} catch (e: ActivityNotFoundException) {
true // приложения нет — не загружать адрес в WebView
}
}
Возможно, ваше приложение уже переопределяет shouldOverrideUrlLoading
для своих задач — тогда достаточно добавить ветку для не-веб схем в
начало метода. Проверить работу помогут инструменты разработчика: в
Chrome на компьютере откройте chrome://inspect, подключите телефон по
USB и посмотрите консоль страницы внутри WebView — для этого в приложении
должна быть включена отладка WebView.
Для ссылок intent:// стоит дополнительно открыть запасной адрес из
параметра S.browser_fallback_url, если приложения нет. В документации
Chrome для Android сказано: «When an intent isn't resolved or an external
application doesn't launch, the user can be redirected to the fallback
URL». Важно и ограничение из той же документации: Chrome не запускает
приложение, если ссылку пытается открыть таймер JavaScript без нажатия
пользователя.
Что делать владельцу сайта
- Проверьте адреса картинок, стилей и скриптов: начало
htps://,hhttps://илиhtp://даёт ERR_UNKNOWN_URL_SCHEME в консоли. Найти их можно поиском по коду страницы или в журнале консоли. - Ссылки на мессенджеры давайте с запасным веб-адресом:
https://wa.me/…иhttps://t.me/…вместоwhatsapp://иtg://. Веб-адрес откроется в любом браузере, в том числе внутри чужого приложения, а на телефоне с установленным мессенджером обычно ведёт в него. - Если сайт часто открывают из приложений, проверьте кнопки «Позвонить» и «Написать» на телефоне внутри популярных приложений, откуда к вам приходят посетители.
Источники
- Chromium, net/base/net_error_list.h — коды −300, −301, −302
- Chromium, content/browser/loader/navigation_url_loader_impl.cc — когда ставится ERR_ABORTED, а когда ERR_UNKNOWN_URL_SCHEME
- Chromium, components/error_page/content/browser/net_error_auto_reloader.cc — ошибка показывается в Chrome для Android
- Chromium, android_webview/browser/aw_content_browser_client.cc — WebView сам не запускает внешние приложения
- Android, WebViewClient.java — shouldOverrideUrlLoading и ERROR_UNSUPPORTED_SCHEME
- developer.chrome.com/docs/android/intents — ссылки intent:// и browser_fallback_url
Похожие ошибки
- ERR_FAILED — общая ошибка загрузки без уточнения причины.
- ERR_CACHE_MISS — браузеру нужны данные формы, которых нет в кэше.
- ERR_TOO_MANY_REDIRECTS — переадресации сайта зациклились.
- ERR_TUNNEL_CONNECTION_FAILED — прокси не открыл туннель к сайту.
- ERR_FILE_NOT_FOUND — браузер не нашёл локальный файл или файл расширения.
- ERR_CLEARTEXT_NOT_PERMITTED — приложение на WebView запретило себе адреса с http.
Границы замера
Стенд — Chromium 149 под Linux, 18.10.2026, без приложений, назначенных для схем tel:, whatsapp: и других. Android WebView и Chrome для Android на стенде не запускали: их поведение описано по исходному коду Chromium и документации Android. Если для схемы на компьютере есть программа, Chrome показывает окно «Открыть приложение?» — этот случай мы не проверяли.
Коротко
ERR_UNKNOWN_URL_SCHEME — движок не знает, как открыть ссылку вида tel:, whatsapp:// или intent://, и не передал её другой программе. На экране ошибка бывает почти только на Android, чаще всего во встроенном браузере приложений. Пользователю — открыть страницу в Chrome или Яндекс Браузере, обновить приложение и очистить его кэш. Разработчику — обрабатывать не-веб схемы в shouldOverrideUrlLoading. На компьютере тот же код в консоли означает опечатку в адресе файла на сайте.
