addUrlInterceptor

abstract fun addUrlInterceptor(interceptor: (request: WebResourceRequest) -> Boolean): Long

添加 URL 加载拦截器,用于控制 WebView 是否应该加载特定的 URL。

addOnWebResourceRequestListener 不同,此方法不仅能监听请求,还能通过返回布尔值来阻止接管 WebView 的加载行为。 它通常对应于 Android 原生 WebViewClient.shouldOverrideUrlLoading 的逻辑。

拦截逻辑说明interceptor 函数接收一个 WebResourceRequest 对象,并需要返回一个 Boolean 值:

  • 返回 true:表示当前脚本已拦截并处理了该请求(或者决定阻止该请求)。WebView 不会继续加载该 URL。

  • 返回 false:表示当前脚本不拦截该请求。WebView 将按照默认逻辑继续加载该 URL。

注意事项

  1. 同步执行:拦截器会在 WebView 的加载流程中同步执行(通常在 UI 线程)。因此,拦截器内部的逻辑必须非常快速,不能包含耗时操作(如网络请求、大量计算),否则会阻塞 UI 或导致 ANR。

  2. 执行时机:通常在用户点击链接或脚本触发页面跳转时触发。

Return

Long 拦截器的唯一 ID,用于后续通过 removeUrlInterceptor 移除。

Parameters

interceptor

拦截器函数。参数为请求详情,返回值为是否拦截的布尔标识。