ERR UNKNOWN URL SCHEME — что означает и как исправить?
Некоторые пользователи, обычно — на Android смартфонах сталкиваются с ошибкой ERR UNKNOWN URL SCHEME при нажатии какой-либо кнопки или ссылки в приложении и некоторых других действиях.
В этой статье о том, как переводится и что означает ошибка ERR UNKNOWN URL SCHEME и как её можно исправить.
Что означает ERR UNKNOWN URL SCHEME и в чем причина ошибки
ERR UNKNOWN URL SCHEME можно перевести как «Ошибка. Неизвестная схема URL». Схема URL — это, условно, первая часть адреса ссылки: https://, http://, mailto:// или какая-либо другая, которая сообщает браузеру о том, как именно следует обрабатывать эту ссылку.
Причина обычно заключается в сочетании следующих факторов:
- Компонент WebView по умолчанию способен обрабатывать лишь ограниченное число схем URL — http://, https://, file://, asset://. При запросе других схем, таких как intent://, sms://, tel://, mailto:// или каких-то специфичных схем конкретного приложения, можно получить сообщение о неизвестной схеме URL.
- Разработчиком приложения не добавлены необходимые функции для обработки соответствующих схем URL при попытке открыть соответствующие ссылки в компоненте WebView.
Также есть сообщения, что в некоторых случаях открытие сайтов с переадресациями в WebView также может приводить к появлению указанной ошибки.
Способы исправить ошибку
В зависимости от того разработчик вы или обычный владелец смартфона Android, варианты решения для ошибки ERR UNKNOWN URL SCHEME будут отличаться:
- Добавить обработчики для отличающихся от http и https схем URL при их открытии в WebView в своем приложении, чтобы они вызывали соответствующее приложение, открывали полноценный браузер, либо выводили сообщение о том, что эта ссылка не может быть открыта в рамках вашего приложения. В части обработки ссылок в WebView вам поможет Stack Overflow и другие ресурсы.
- Среди возможных вариантов решения — добавление
target="_blank"
Для рядового пользователя:
- Самым простым решением будет открыть страницу, просматриваемую в приложении и сообщающую об ошибке, в каком-либо браузере, например, Google Chrome, и использовать ссылку уже из него.
- Также может помочь обновление приложения (в котором возникает ошибка), в редких случаях — отключение приложений и инструментов, которые могут влиять на работу сетевого подключения (прокси и другие).
- Если вы можете прочитать текст ссылки в сообщении об ошибке и понять логику её работы (отправка сообщения почты, запуск внешнего приложения для отправки сообщения или аналогичные действия), достаточно выполнить прописанные в ней действия вручную.
- Сообщить разработчику приложения о проблеме в отзывах о нём на Play Маркет или в другом магазине приложений.
Что касается решения со стороны пользователя приложения, обычно ему всё-таки приходится дожидаться, когда проблема будет исправлена со стороны разработчика в следующих обновлениях, так как сделать что-либо самостоятельно в части обработки схем URL он не может.
А вдруг и это будет интересно:
- Лучшие бесплатные программы для Windows
- Chrome открывает поиск вместо сайта — решение
- Как копировать текст с картинки в приложении «Ножницы»
- Слышу себя, говоря в микрофон — причины и решение
- Power supply surges detected — причины и как исправить?
- Как прописать параметры в ярлыке Windows
- Windows 11
- Windows 10
- Android
- Загрузочная флешка
- Лечение вирусов
- Восстановление данных
- Установка с флешки
- Настройка роутера
- Всё про Windows
- В контакте
- Одноклассники
- Живые обои на рабочий стол Windows 11 и Windows 10
- Лучшие бесплатные программы на каждый день
- Как скачать Windows 10 64-бит и 32-бит оригинальный ISO
- Как смотреть ТВ онлайн бесплатно
- Бесплатные программы для восстановления данных
- Лучшие бесплатные антивирусы
- Средства удаления вредоносных программ (которых не видит ваш антивирус)
- Встроенные системные утилиты Windows 10, 8 и 7, о которых многие не знают
- Бесплатные программы удаленного управления компьютером
- Запуск Windows 10 с флешки без установки
- Лучший антивирус для Windows 10
- Бесплатные программы для ремонта флешек
- Что делать, если сильно греется и выключается ноутбук
- Программы для очистки компьютера от ненужных файлов
- Лучший браузер для Windows
- Бесплатный офис для Windows
- Запуск Android игр и программ в Windows (Эмуляторы Android)
- Что делать, если компьютер не видит флешку
- Управление Android с компьютера
- Компьютер не видит внешний диск — как исправить?
- TakeOwnershipEx — получение полного доступа к папкам и файлам и восстановление прав по умолчанию
- Ошибка 0x8007000d в Windows 11 или 10 — как исправить?
- Chrome открывает поиск вместо сайта — решение
- Недопустимая конфигурация приложения в Steam — варианты решения
- Ошибка при запуске приложения 0xc0000006 — как исправить?
- Как удалить драйвер в командной строке
- Экран iPhone может быть слишком близко — как отключить?
- Winget COM Server — что это и что делать, если он грузит процессор
- Как копировать текст с картинки в приложении «Ножницы»
- The AC power adapter wattage and type cannot be determined — причины и решение
- Слышу себя, говоря в микрофон — причины и решение
- Невозможно подключиться к службе RPC в Realtek Audio Console — как исправить?
- Ошибка Application load error 5:0000065434 при запуске игры Steam
- Контакты на случай ЧП на iPhone — как добавить и зачем?
- Windows
- Android
- iPhone, iPad и Mac
- Программы
- Загрузочная флешка
- Лечение вирусов
- Восстановление данных
- Ноутбуки
- Wi-Fi и настройка роутера
- Интернет и браузеры
- Для начинающих
- Безопасность
- Ремонт компьютеров
- Windows
- Android
- iPhone, iPad и Mac
- Программы
- Загрузочная флешка
- Лечение вирусов
- Восстановление данных
- Ноутбуки
- Wi-Fi и настройка роутера
- Интернет и браузеры
- Для начинающих
- Безопасность
- Ремонт компьютеров
Android WebView err_unknown_url_scheme
With the simple below code I can get my url loaded correctly, but, I get «ERR_UNKNOWN_URL_SCHEME» when trying to tap on html links that starts with mailto: whatsapp: and tg: (Telegram). Anyone can help me to fix this please? Unfortunately I do not know Java at all 🙁 Thanks.
import android.app.Activity; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity < private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = (WebView) findViewById(R.id.activity_main_webview); // Force links and redirects to open in the WebView instead of in a browser mWebView.setWebViewClient(new WebViewClient()); // Enable Javascript WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); // Use remote resource mWebView.loadUrl("http://myexample.com"); >>
6,100 11 11 gold badges 58 58 silver badges 95 95 bronze badges
asked Jan 17, 2017 at 9:22
341 1 1 gold badge 3 3 silver badges 6 6 bronze badges
6 Answers 6
You have to set a client in the webview and pass these to an intent
webView.setWebViewClient(new WebViewClient() < @Override public boolean shouldOverrideUrlLoading(WebView view, String url) < if( URLUtil.isNetworkUrl(url) ) < return false; >if (appInstalledOrNot(url)) < Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity( intent ); >else < // do something if app is not installed >return true; > >); >
You can have a method to check if app is installed
private boolean appInstalledOrNot(String uri) < PackageManager pm = getPackageManager(); try < pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES); return true; >catch (PackageManager.NameNotFoundException e) < >return false; >
answered Jan 17, 2017 at 9:27
Chris Gomez Chris Gomez
6,684 4 4 gold badges 18 18 silver badges 39 39 bronze badges
Awesome thanks! This works! Can I ask you one more thing; If there is not WhatsApp or Telegram installed on the device the app crash with: android.content.ActivityNotFoundException: No Activity found to handle Intent < act=android.intent.action.VIEW dat=tg://msg?text=My text to send via Telegram >Would be possible to add a check that if the package isn’t installed show a popup with a warning message?
Jan 19, 2017 at 9:13
Perfect! Thank you very very much @cgomezmendez!
Jan 22, 2017 at 20:32
Seems shouldOverrideUrlLoading of this form is deprecated. Is it worth using the other one instead, when possible ? Also, I think you forgot to convert to Uri.
May 27, 2019 at 6:44
Any idea how to achieve the same in Flutter?
Jun 18, 2020 at 23:36
You need override the method shouldOverrideUrlLoading of WebViewClient in which you can control link transfer by yourself.
Because html links that starts with mailto: whatsapp: and tg: (Telegram). is not common url start with «http://» or «https://», so WebView cannot parse it to right place, we should use intent to redirect the url.
@Override public boolean shouldOverrideUrlLoading(WebView view, String url) < if (url == null || url.startsWith("http://") || url.startsWith("https://")) return false; try < Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); view.getContext().startActivity(intent); return true; >catch (Exception e) < Log.i(TAG, "shouldOverrideUrlLoading Exception:" + e); return true; >>
then setWebViewClient to your WebView, like this:
public class MainActivity extends Activity < private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = (WebView) findViewById(R.id.activity_main_webview); // Force links and redirects to open in the WebView instead of in a browser mWebView.setWebViewClient(new WebViewClient() < @Override public boolean shouldOverrideUrlLoading(WebView view, String url) < if (url == null || url.startsWith("http://") || url.startsWith("https://")) return false; try < Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); view.getContext().startActivity(intent); return true; >catch (Exception e) < Log.i(TAG, "shouldOverrideUrlLoading Exception:" + e); return true; >> >); // Enable Javascript WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); // Use remote resource mWebView.loadUrl("http://myexample.com"); >>
Ошибка сайта Net::ERR_UNKNOWN_URL_SCHEME – как исправить?
Пользователи смартфонов с операционной системой Андроид столкнулись с ошибкой на сайтах «Net::ERR_UNKNOWN_URL_SCHEME». Ошибка появляется когда при клике на активную ссылку, должно запуститься связанное приложение. Например вы хотите присоединится к беседе в Скайпе или к конференции в Зуме, открыть канал в Телеграмме и тп. Вот так ошибка отображается на экране смартфона:
Чаще с данной проблемой сталкиваются пользователи смартфонов линейки Lite от Honor, иногда ошибка выскакивает у пользователей Xiaomi и Huawei. Сегодня расскажем почему такое происходит и как решить проблему.
Содержание скрыть
Причины ошибки Net::ERR_UNKNOWN_URL_SCHEME
- При звонке на номер телефона в приложении или сайте.
- При попытке открыть перенаправляющий URL-адрес(ссылку).
- При нажатии на ссылке, которые должны открываться на новой странице.
- Так же проблема возникает при кликах на ссылки mailto: tel: sms: и geo: внутри iframe(обычно это ссылки с номерами телефонов или имейл адресов, для отправки смс).
- При попытке авторизации на сайте(на этапе открытия страницы или ввода логина, пароля).
Переключаем браузер по умолчанию
Если обновление всех приложений не спасло временно можно переключить браузер по умолчанию.
Браузер по умолчанию – это браузер, который автоматически запускается при клике на любую ссылку. Часто это или встроенный браузер в ваш смартфон или Гугл Хром.
На разных моделях переключить можно разными способами. Для смартфонов Honor пошаговая схема такая:
- Заходим в «Настройки».
- Выбираем пункт «Приложения по умолчанию»
- Далее «Браузер».
- Выбираем Firefox, Opera, UC Browser или любой другой.
Важно! Яндекс.Браузер скорее всего тоже вылетит с ошибкой, т.к. построен на базе chromium. По этому пробуйте во встроенном или смело скачивайте Mozilla Firefox.
Так же, если вы столкнулись с ошибкой Net::ERR_UNKNOWN_URL_SCHEME на смартфоне Xiaomi тут путь такой:
- Заходим в раздел «Настройки», далее «Приложения»;
- Переходим оттуда во «Все приложения»;
- Ищем вручную или через поиск Google Chrome и кликаем на его иконку;
- Откроется меню, где нужно выбрать пункт «Сбросить настройки по умолчанию». Либо деактивировать ползунок напротив строчки «Браузер по умолчанию»;
- Теперь при клике на ссылку, выберите из списка другой браузер и нажмите «Запомнить».
Советы выше помогают избежать ошибки Net::ERR_UNKNOWN_URL_SCHEME на смартфоне. Они помогут обычным пользователям столкнувшимся с проблемой. Если вы являетесь разработчиком и пишете приложения, либо сайты сами, то там есть боле профессиональные решения. В рамках данной статьи мы решили не добавлять эту информацию, что бы не возникло путаницы. По этому, если вам нужно решить ошибку с технической точки зрения – сообщите об этом в комментариях к этой странице. Мы добавим отдельный материал на эту тему.
Евгений Загорский IT специалист. Автор информационных статей на тему Андроид смартфонов и IOS смартфонов. Эксперт в области решения проблем с компьютерами и программами: установка, настройка, обзоры, советы по безопасности ваших устройств. В свободное время занимается дизайном и разработкой сайтов.
- Telegram
Получаю ошибку net :: ERR_UNKNOWN_URL_SCHEME, когда нажимаю на geo ссылку сайта который открывается через webview flutter
Код main.dart
import 'package:flutter/material.dart'; import 'package:flutter/services.dart' ; import 'package:webview_flutter/webview_flutter.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget < @override Widget build(BuildContext context) < SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, ]); return MaterialApp( debugShowCheckedModeBanner: false, home: Scaffold( body: WebView( initialUrl: "http://212.80.206.193/test.project-270.com/", debuggingEnabled: true, onWebViewCreated: (c) < var _webviewController = c; _webviewController.clearCache(); >, javascriptMode: JavascriptMode.unrestricted, ) , ), ); > >
Ссылка geo на сайте
Помогите решить проблему!
Отслеживать
задан 23 сен 2021 в 11:22
Artem Nikolaevich Artem Nikolaevich
109 1 1 золотой знак 1 1 серебряный знак 8 8 бронзовых знаков
Проблема решена, кому нужно, вот рабочий вариант! stackoverflow.com/questions/65880593/…
23 сен 2021 в 12:52
оформите ваш ответ (приложите код и комментарии) и отметьте его как решённым. Это поможет в будущем другим людям которые встретили такую-же проблему получить ответ на решение.
24 сен 2021 в 13:40
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
import 'package:flutter/material.dart'; import 'package:flutter/services.dart' ; import 'package:webview_flutter/webview_flutter.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget < @override Widget build(BuildContext context) < SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, ]); return MaterialApp( debugShowCheckedModeBanner: false, home: Scaffold( body: WebView( initialUrl: "http://212.80.206.193/test.project-270.com/", debuggingEnabled: true, onWebViewCreated: (c) < var _webviewController = c; _webviewController.clearCache(); >, javascriptMode: JavascriptMode.unrestricted, navigationDelegate: (NavigationRequest request) < print(request.url); if (request.url.contains("geo:")) < launch(request.url); return NavigationDecision.prevent; >else < return NavigationDecision.navigate; >>, ) , ), ); > >
Отслеживать
ответ дан 13 окт 2021 в 12:48
Artem Nikolaevich Artem Nikolaevich
109 1 1 золотой знак 1 1 серебряный знак 8 8 бронзовых знаков
пожалуйста, постарайтесь оставлять чуть более развёрнутые ответы. дополнить ответ можно, нажав править