Intereting Posts
Java MimetypesFileTypeMap всегда возвращает приложение / октет-поток на эмулятор Android OnCreateOptionsMenu никогда не называется Внедрить безопасность на уровне подписки на услуги Android с более чем одной разрешенной подписью Предотвращение декомпиляции андроида apk Как проверить, существует ли таблица в базе данных Android SQLite? Запуск Google Maps Directions через намерение Android Youtube встраивает видео, не работающее в веб-браузере. Что случилось с этим кодом? Ошибка градиента – выполнение выполнено для задачи: app: dexDebug ' Android Studio / Intellij Idea: «Оглавление» для класса Android: плотность устройства возвращается с нуля на некоторых устройствах Отправка данных на сервер через почту при возврате интернет-соединения Android Galaxy S4 – активность, которая видна на экране блокировки Что такое целочисленное значение, которое дает приоритету широковещательного приемника? Фрагмент уже активен – при попытке setArguments Как удалить код «+» и код страны с номера телефона?

Android WebView, как обрабатывать перенаправления в приложении, а не открывать браузер

Так что прямо сейчас в моем приложении URL-адрес, к которому я обращаюсь, имеет перенаправление, и когда это произойдет, WebView откроет новый браузер вместо того, чтобы оставаться в моем приложении. Есть ли способ изменить настройки, чтобы View перенаправлял URL-адрес, как обычно, но оставался в моем приложении, а не открывал новый браузер?

Редактировать:

Я хочу перенаправлять URL-адрес, я просто не знаю, как его создать, поэтому единственный способ добраться до этого URL-адреса – через один, который приведет к перенаправлению на тот, который я хочу.

Например: когда вы перейдете сюда: http://www.amazon.com/gp/aw/s/ref=is_box_/k=9780735622777 узнайте, как перенаправить URL-адрес на фактический продукт. В моем приложении, если я открою его в новом браузере, он будет делать это просто отлично, однако, если я сохраню его в своем приложении с помощью WebView, он появится, как будто он выполняет поиск по k = 9780735622777, например: Http://www.amazon.com/gp/aw/s/ref=is_s_?k=k%3D9780735622777&x=0&y=0 . ИЛИ, он откроет представление в браузере и покажет, что подходит. Тем не менее, я хочу сохранить все в своем приложении.

Solutions Collecting From Web of "Android WebView, как обрабатывать перенаправления в приложении, а не открывать браузер"

Создайте WebViewClient и переопределите метод shouldOverrideUrlLoading .

webview.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url){ // do your handling codes here, which url is the requested url // probably you need to open that url rather than redirect: view.loadUrl(url); return false; // then it is not handled by default action } }); 

Согласно официальной документации , щелчок по любой ссылке в WebView запускает приложение, которое обрабатывает URL-адреса, которые по умолчанию являются браузером. Вы должны переопределить поведение по умолчанию, подобное этому

  myWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } }); 

Просто добавьте стандартный WebViewClient по умолчанию. Это заставляет WebView обрабатывать любые загруженные URL-адреса.

 mWebView.setWebViewClient(new WebViewClient()); 

Создайте класс, который реализует webviewclient, и добавьте следующий код, который позволяет ovveriding строку url, как показано ниже. Вы можете увидеть этот пример

 public class myWebClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } 

На вашем конструкторе создайте объект webview, как показано ниже.

  web = new WebView(this); web.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); 

Затем добавьте следующий код для выполнения загрузки URL-адресов внутри вашего приложения.

  WebSettings settings=web.getSettings(); settings.setJavaScriptEnabled(true); web.loadUrl("http://www.facebook.com"); web.setWebViewClient(new myWebClient()); web.setWebChromeClient(new WebChromeClient() { // // } 

Скачать демоверсию

Вам нужно будет настроить свой собственный WebviewClient, переопределяя метод toOverrideUrlLoading для вашего веб-просмотра перед загрузкой URL-адреса.

 mWebView.setWebViewClient(new WebViewClient() { @SuppressWarnings("deprecation") @Override public boolean shouldOverrideUrlLoading(WebView webView, String url) { return shouldOverrideUrlLoading(url); } @TargetApi(Build.VERSION_CODES.N) @Override public boolean shouldOverrideUrlLoading(WebView webView, WebResourceRequest request) { Uri uri = request.getUrl(); return shouldOverrideUrlLoading(uri.toString()); } private boolean shouldOverrideUrlLoading(final String url) { Log.i(TAG, "shouldOverrideUrlLoading() URL : " + url); // Here put your code return true; // Returning True means that application wants to leave the current WebView and handle the url itself, otherwise return false. } }); 

Ознакомьтесь с примером кода для обработки URL-адресов перенаправления и открытия PDF-файла без загрузки в веб-просмотре. https://gist.github.com/ashishdas09/014a408f9f37504eb2608d98abf49500