Android WebView: tillämpa proxy-överstyrningen före navigering
Använd funktionskontrollen och slutförandecallbacken i AndroidX WebKit och ta hänsyn till den överstyrning som WebView delar i en process.
Navigering som beror på en proxy-överstyrning i WebView bör starta efter att överstyrningens slutförandelyssnare har körts. Att sätta den och direkt läsa in en sida låter åtgärden tävla med en asynkron uppdatering.
- Kontrollera
WebViewFeature.isFeatureSupported(WebViewFeature.PROXY_OVERRIDE). Stödet beror på WebView-implementeringen och AndroidX WebKit-biblioteket samt Androids API-nivå. Definiera vad som händer när den saknas; att gå direkt i tysthet kan omintetgöra funktionen. - Bygg den avsedda
ProxyConfigmed dess dokumenterade proxyregler, endpoint-syntax och kringgående beteende. För tillåten navigering till offentliga webbplatser, välj en kandidat från listan över gratis proxyservrar vars protokoll matchar en regel som den WebView-implementeringen stöder. En PAC-URL, SOCKS-URI och bar värd är olika indata. - Anropa
ProxyController.setProxyOverride()med den konfigurationen, en exekutor och en slutförandelyssnare. Börja beroende navigering från slutförandevägen. - När den tillfälliga överstyrningen upphör, rensa den med
clearProxyOverride()och hantera även dess asynkrona slutförande.
Ge den livscykeln en enda ägare. Inställningen gäller för WebView i hela applikationsprocessen; upprepade ändringar kan inte ge två samtidiga vyer oberoende utgångar. Andra processer och HTTP-bibliotek har sina egna rutter.
Detta stödda gränssnitt undviker beroende av privata proxyändringslyssnare som varierar mellan Android-versioner. Det väljer routing; proxyuppgifter och certifikatförtroende använder fortfarande sina stödda mekanismer. Ett autentiserings- eller TLS-fel efter valet måste diagnostiseras i det skedet.