Ich habe eine externe URL in meine geladen WebView
. Was ich jetzt brauche, ist, dass wenn der Benutzer auf die Links auf der geladenen Seite klickt, es wie ein normaler Browser funktionieren und den Link in demselben öffnen muss WebView
. Aber es öffnet den Standardbrowser und lädt die Seite dort?
Ich habe JavaScript aktiviert. Aber es funktioniert immer noch nicht. Habe ich etwas vergessen
WebViewClient
und keine Unterklassen erforderlich sind, wenn dies alles ist, was Sie tun. Ich habe das zum Laufen gebracht, indem ich es getan habemyWebView.setWebViewClient(new WebViewClient());
In einigen Fällen benötigen Sie möglicherweise eine Überschreibung von onLoadResource, wenn Sie eine Umleitung erhalten, die die URL-Lademethode nicht auslöst. In diesem Fall habe ich Folgendes versucht:
quelle
Laut offizieller Dokumentation wird durch Klicken auf einen Link in einer WebView eine Anwendung gestartet, die URLs verarbeitet. Sie müssen dieses Standardverhalten überschreiben
oder wenn die Methode keine bedingte Logik enthält, tun Sie dies einfach
quelle
Fügen Sie diese 2 Zeilen in Ihren Code ein -
quelle
Die Methode
boolean shouldOverrideUrlLoading(WebView view, String url)
wurde in API 24 nicht mehr unterstützt. Wenn Sie neue Geräte unterstützen, sollten Sie diese verwendenboolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request)
.Sie können beides verwenden, indem Sie Folgendes tun:
quelle
Die Antwort von Arulx Z war genau das, wonach ich gesucht hatte.
Ich schreibe eine App mit Navigation Drawer mit Recyclerview und Webviews, damit das Surfen im Internet innerhalb der App bleibt, unabhängig davon, auf welche Hyperlinks geklickt wird (wodurch der externe Webbrowser nicht gestartet wird). Dafür reicht es aus, die folgenden 2 Codezeilen einzufügen:
mWebView.setWebChromeClient(new WebChromeClient()); mWebView.setWebViewClient(new WebViewClient());
genau unter Ihrer WebView-Anweisung.
Hier ist ein Beispiel für meinen implementierten WebView-Code:
Auf diese Weise wird jeder auf der Website angeklickte Link in Ihre WebView geladen. (Verwenden von Android Studio 1.2.2 mit allen aktualisierten SDKs)
quelle