Android WebView: ใช้การแทนที่พร็อกซีก่อนการนำทาง
ใช้การตรวจสอบคุณสมบัติและ callback การเสร็จสิ้นของ AndroidX WebKit และคำนึงถึงการแทนที่ที่ WebView ใช้ร่วมกันในโปรเซสเดียว
การนำทางที่ขึ้นอยู่กับการแทนที่พร็อกซีของ WebView ควรเริ่มหลังจากตัวรับฟังการเสร็จสิ้นของการแทนที่ทำงานแล้ว การตั้งค่าแล้วโหลดหน้าทันทีทำให้การดำเนินการแข่งกับการอัปเดตแบบอะซิงโครนัส
- ตรวจสอบ
WebViewFeature.isFeatureSupported(WebViewFeature.PROXY_OVERRIDE)การสนับสนุนขึ้นอยู่กับการใช้งาน WebView และไลบรารี AndroidX WebKit รวมถึงระดับ API ของ Android กำหนดว่าจะเกิดอะไรขึ้นเมื่อไม่มี; การเชื่อมต่อตรงแบบเงียบอาจทำให้คุณสมบัตินี้ไร้ผล - สร้าง
ProxyConfigที่ต้องการด้วยกฎพร็อกซีที่บันทึกไว้แล้ว รูปแบบจุดปลายทาง และพฤติกรรมการข้าม สำหรับการนำทางไปยังไซต์สาธารณะที่ได้รับอนุญาต ให้เลือกผู้สมัครจากรายการพร็อกซีฟรีที่มีโปรโตคอลตรงกับกฎที่การใช้งาน WebView นั้นรองรับ PAC URL, SOCKS URI และโฮสต์เปล่าเป็นอินพุตที่แตกต่างกัน - เรียก
ProxyController.setProxyOverride()ด้วยการกำหนดค่านั้น ตัวดำเนินการ และตัวรับฟังการเสร็จสิ้น เริ่มการนำทางที่ขึ้นต่อกันจากเส้นทางการเสร็จสิ้น - เมื่อการแทนที่ชั่วคราวสิ้นสุดลง ให้ล้างด้วย
clearProxyOverride()และจัดการการเสร็จสิ้นแบบอะซิงโครนัสของมันด้วย
ให้วงจรชีวิตนี้มีเจ้าของเพียงหนึ่งเดียว การตั้งค่านี้ใช้กับ WebView ทั้งหมดในโปรเซสของแอปพลิเคชัน; การเปลี่ยนซ้ำๆ ไม่สามารถให้มุมมองสองอันที่พร้อมกันมีทางออกที่เป็นอิสระได้ โปรเซสอื่นและไลบรารี HTTP มีเส้นทางของตนเอง
อินเทอร์เฟซที่รองรับนี้ออกเลี่ยงการพึ่งพาตัวรับฟังการเปลี่ยนแปลงพร็อกซีแบบส่วนตัวที่แตกต่างกันระหว่างรุ่น Android โดยเลือกเส้นทางการกำหนดเส้นทาง; ข้อมูลรับรองพร็อกซีและความเชื่อถือใบรับรองยังคงใช้กลไกที่รองรับของตน ความล้มเหลวในการพิสูจน์ตัวตนหรือ TLS หลังการเลือกต้องได้รับการวินิจฉัยในขั้นตอนนั้น