Ist das Standardverhalten von Android WebView geändert, um intern alle Links zu öffnen?

Ich habe festgestellt, dass mit der letzten Aktualisierung von Google System WebView alle Links in meinen WebViews in der Ansicht selbst geöffnet sind. Aber nach der Dokumentation von google:

Public boolean shouldOverrideUrlLoading (WebView-Ansicht, String-URL) Auf API-Ebene 1 hinzugefügt

  • Ursache der DurchführungTraversals Rekursion, lange egl Puffer Swap Zeiten
  • RuntimeException: Fehler beim Aufblasen von Klassenfragmenten
  • Android HttpClient OOM auf 4G / LTE (HTC Thunderbolt)
  • Wie kann ich meine Anwendung bei jeder Öffnung wieder auf das gleiche Bluetooth-Niedrigenergiegerät anschließen?
  • Verwenden von Google Guava mit Android 1.6
  • Make a SurfaceView transparent ohne setZOrderOnTop (true)
  • Geben Sie der Host-Anwendung eine Chance, die Kontrolle zu übernehmen, wenn eine neue URL in die aktuelle WebView geladen wird. Wenn WebViewClient nicht bereitgestellt wird, fordert WebView standardmäßig den Aktivitätsmanager auf, den richtigen Handler für die URL auszuwählen . Wenn WebViewClient zur Verfügung gestellt wird, bedeutet true, dass die Host-Anwendung die URL verarbeitet, während return false bedeutet, dass die aktuelle WebView die URL verarbeitet. Diese Methode wird nicht für Anfragen mit der POST-Methode aufgerufen.

    Ich habe keinen benutzerdefinierten WebViewClient bereitgestellt.

    HINWEIS: Das Gerät, das ich das Problem bemerkte, war HTC One mit dem neuesten Google System WebView vom 8. Juni 2015

  • Wie kann ich eine Kalender-Benutzeroberfläche in einer Android-Anwendung anzeigen?
  • Hintergrundbild nicht wiederholen in Android-Layout
  • Dynamisch hinzufügen Elemente zur Listenansicht mit benutzerdefinierten Adapter für Android App
  • So aktivieren Sie nur eine Instanz meiner Anwendung
  • Protokollierung von HTTP-Anfragen / Antworten mit Fiddler auf Android-Emulator
  • Fehler beim Kompilieren com.squareup.retrofit: converter-simplexml: 2.0.0-beta2
  • 2 Solutions collect form web for “Ist das Standardverhalten von Android WebView geändert, um intern alle Links zu öffnen?”

    Ich kann die Erkenntnisse reproduzieren. Android System WebView 43.0.2357.121 zeigt das Verhalten, das Sie beschreiben, während die Version, die ich hatte, bevor es ein Upgrade auf es nicht.

    Ich habe hier einen Fehlerbericht eingereicht und muss nun mehr testen und die Welt warnen.

    Vielen Dank für das Zeigen!

    AKTUALISIEREN

    Hier ist ein Blog-Post , den ich zu diesem Thema geschrieben habe. Zitat von mir:

    Meine Empfehlung im Moment ist:

    • WebViewClient Ihrem WebView immer einen WebViewClient WebView

    • shouldOverrideUrlLoading() immer an shouldOverrideUrlLoading() auf dem WebViewClient

    • Setzen Sie immer true um anzuzeigen, dass Sie das Ereignis behandeln

    • Immer tun, was Ihre App getan haben muss, ob das die URL in die WebView oder einen Browser auf der URL startet (anstatt false und sich auf das Lagerverhalten zu verlassen)

    Etwas wie diese statische innere Klasse scheint den Trick zu machen – eine Instanz zu erstellen und an setWebViewClient() auf deinem WebView :

     private static class URLHandler extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (shouldKeepInWebView(url)) { view.loadUrl(url); } else { Intent i=new Intent(Intent.ACTION_VIEW, Uri.parse(url)) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); view.getContext().startActivity(i); } return(true); } private boolean shouldKeepInWebView(String url) { return(true); // or false, or use regex, or whatever } } 

    (Wo Sie Ihre Geschäftslogik in shouldKeepInWebView() um festzustellen, ob eine gegebene URL im WebView bleiben oder einen Browser starten soll)

    Scheint mir dieses Problem wurde in 44.0.240.54 gelöst.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.