Android WebView: Proxy-Override vor der Navigation anwenden
Nutzen Sie die Funktionsprüfung und den Abschluss-Callback von AndroidX WebKit und berücksichtigen Sie das Override, das sich WebViews in einem Prozess teilen.
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.
- 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. - Erstellen Sie die gewünschte
ProxyConfigmit 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. - Rufen Sie
ProxyController.setProxyOverride()mit dieser Konfiguration, einem Executor und einem Abschluss-Listener auf. Beginnen Sie die abhängige Navigation im Abschluss-Pfad. - 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.