Navigation, die von einem WebView-Proxy-Override abhängt, sollte erst beginnen, nachdem der Abschluss-Listener des Overrides gelaufen ist. Es zu setzen und sofort eine Seite zu laden, lässt den Vorgang mit einer asynchronen Aktualisierung konkurrieren.

  1. Prüfen Sie WebViewFeature.isFeatureSupported(WebViewFeature.PROXY_OVERRIDE). Die Unterstützung hängt von der WebView-Implementierung und der AndroidX-WebKit-Bibliothek sowie von der API-Ebene von Android ab. Legen Sie fest, was passiert, wenn sie fehlt; ein stilles Direktverbinden kann die Funktion zunichtemachen.
  2. Erstellen Sie die gewünschte ProxyConfig mit ihren dokumentierten Proxy-Regeln, der Endpunkt-Syntax und dem Bypass-Verhalten. Für erlaubte Navigation zu öffentlichen Websites wählen Sie einen Kandidaten aus der Liste kostenloser Proxys, dessen Protokoll zu einer Regel passt, die diese WebView-Implementierung unterstützt. Eine PAC-URL, ein SOCKS-URI und ein bloßer Host sind unterschiedliche Eingaben.
  3. Rufen Sie ProxyController.setProxyOverride() mit dieser Konfiguration, einem Executor und einem Abschluss-Listener auf. Beginnen Sie die abhängige Navigation im Abschluss-Pfad.
  4. Wenn das temporäre Override endet, löschen Sie es mit clearProxyOverride() und behandeln Sie auch dessen asynchronen Abschluss.

Geben Sie diesem Lebenszyklus einen Verantwortlichen. Die Einstellung gilt für WebViews im gesamten Anwendungsprozess; wiederholtes Ändern kann zwei gleichzeitigen Ansichten keine unabhängigen Ausgänge verschaffen. Andere Prozesse und HTTP-Bibliotheken haben ihre eigenen Wege.

Diese unterstützte Schnittstelle vermeidet die Abhängigkeit von privaten Proxy-Change-Listenern, die sich zwischen Android-Versionen unterscheiden. Sie wählt das Routing; Proxy-Anmeldedaten und Zertifikatsvertrauen nutzen weiterhin ihre unterstützten Mechanismen. Ein Authentifizierungs- oder TLS-Fehler nach der Auswahl muss in dieser Phase diagnostiziert werden.

Ähnliche Artikel