Załadowałem zewnętrzny adres URL do mojego WebView
. Teraz potrzebuję tego, że kiedy użytkownik kliknie linki na załadowanej stronie, musi działać jak zwykła przeglądarka i otworzyć link w tym samym WebView
. Ale otwiera domyślną przeglądarkę i ładuje tam stronę?
Włączyłem JavaScript. Ale nadal nie działa. Zapomniałem czegoś?
WebViewClient
i nie wymaga ono podklasowania, jeśli to wszystko, co robisz. Sprawiłem, że zadziałałomyWebView.setWebViewClient(new WebViewClient());
w niektórych przypadkach możesz potrzebować zastąpienia onLoadResource, jeśli otrzymasz przekierowanie, które nie wyzwala metody ładowania adresu URL. w tym przypadku próbowałem:
źródło
Oficjalna dokumentacja mówi, że kliknij link w WebView uruchomi aplikację, która obsługuje adresy URL. Musisz zastąpić to domyślne zachowanie
lub jeśli w metodzie nie ma logiki warunkowej, po prostu zrób to
źródło
Dodaj te 2 wiersze do swojego kodu -
źródło
Ta metoda
boolean shouldOverrideUrlLoading(WebView view, String url)
została wycofana z interfejsu API 24. Jeśli wspierasz nowe urządzenia, powinieneś użyćboolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request)
.Możesz użyć obu, robiąc coś takiego:
źródło
Odpowiedź Arulx Z była dokładnie tym, czego szukałem.
Piszę aplikację z Szufladą nawigacji z widokiem recyklera i przeglądarkami internetowymi, aby umożliwić przeglądanie stron internetowych w aplikacji bez względu na kliknięte hiperłącza (nie uruchamiając zewnętrznej przeglądarki internetowej). W tym celu wystarczy wstawić następujące 2 wiersze kodu:
mWebView.setWebChromeClient(new WebChromeClient()); mWebView.setWebViewClient(new WebViewClient());
dokładnie pod wyciągiem WebView.
Oto przykład mojego zaimplementowanego kodu WebView:
w ten sposób każdy link kliknięty w witrynie zostanie załadowany do twojego WebView. (Korzystanie z Android Studio 1.2.2 ze zaktualizowanymi wszystkimi pakietami SDK)
źródło