Android WebView, как обрабатывать перенаправления в приложении вместо того, чтобы открыть браузер
-
28-09-2019 - |
Вопрос
Поэтому прямо сейчас в моем приложении URL-адрес, который я доступаю в Redirect, и когда это произойдет, WebView откроет новый браузер вместо того, чтобы оставаться в моем приложении. Есть ли способ изменить настройки, чтобы представление будет перенаправлено на URL, как обычно, но остаться в моем приложении вместо того, чтобы открыть новый браузер?
Редактировать:
Я хочу перенаправить URL-адрес, я просто не знаю, как его создать, поэтому единственный способ добраться до этого URL-адреса через тот, который приведет к перенаправлению к тому, кого я хочу.
Например: когда вы идете сюда: http://www.amazon.com/gp/aw/s/ref=is_box_/k=9780735622777. Обратите внимание, как он будет перенаправлять URL-адрес на реальный продукт. В моем приложении, если я открою его в новом браузере, это сделает это просто хорошо, однако, если я буду держать его в моем приложении с веб-просмотром, он покажет, как будто он делает поиск K = 9780735622777, как это: http://www.amazon.com/gp/aw/s/ref=is_s_?k=k%3D9780735622777&x=0&y=0. Отказ Или он откроет представление в браузере и покажет, что уместно. Однако я хочу сохранить все в моем приложении.
Решение
Создайте WebViewClient и переопределите Подоверенник метод.
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 Подоверенник Способ вашего веб-просмотра перед загрузкой 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 без скачивания, в WebView. https://gist.github.com/ashishdas09/014A408f9f37504eb2608d98abf49500.
Создайте класс, который реализует WebViewClient и добавить следующий код, который позволяет SEVVERIND строку 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() {
//
//
}
Пожалуйста, используйте код ниже Kotlin
webview.setWebViewClient(object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
view.loadUrl(url)
return false
}
})
Для получения дополнительной информации нажмите здесь