การนำทางที่ขึ้นอยู่กับการแทนที่พร็อกซีของ WebView ควรเริ่มหลังจากตัวรับฟังการเสร็จสิ้นของการแทนที่ทำงานแล้ว การตั้งค่าแล้วโหลดหน้าทันทีทำให้การดำเนินการแข่งกับการอัปเดตแบบอะซิงโครนัส

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

ให้วงจรชีวิตนี้มีเจ้าของเพียงหนึ่งเดียว การตั้งค่านี้ใช้กับ WebView ทั้งหมดในโปรเซสของแอปพลิเคชัน; การเปลี่ยนซ้ำๆ ไม่สามารถให้มุมมองสองอันที่พร้อมกันมีทางออกที่เป็นอิสระได้ โปรเซสอื่นและไลบรารี HTTP มีเส้นทางของตนเอง

อินเทอร์เฟซที่รองรับนี้ออกเลี่ยงการพึ่งพาตัวรับฟังการเปลี่ยนแปลงพร็อกซีแบบส่วนตัวที่แตกต่างกันระหว่างรุ่น Android โดยเลือกเส้นทางการกำหนดเส้นทาง; ข้อมูลรับรองพร็อกซีและความเชื่อถือใบรับรองยังคงใช้กลไกที่รองรับของตน ความล้มเหลวในการพิสูจน์ตัวตนหรือ TLS หลังการเลือกต้องได้รับการวินิจฉัยในขั้นตอนนั้น

บทความที่เกี่ยวข้อง