
Facebook 视频链接(如 https://www.facebook.com/watch/?v=...)在 Android WebView 中常因默认 User-Agent 触发跳转至 fb:// 自定义协议而报错 ERR_UNKNOWN_URL_SCHEME;通过显式设置兼容性更强的桌面级 User-Agent 可强制 Facebook 返回网页版视频播放页,从而正常加载。
facebook 视频链接(如 `https://www.facebook.com/watch/?v=...`)在 android webview 中常因默认 user-agent 触发跳转至 `fb://` 自定义协议而报错 `err_unknown_url_scheme`;通过显式设置兼容性更强的桌面级 user-agent 可强制 facebook 返回网页版视频播放页,从而正常加载。
在 Android 应用中使用 WebView 加载 Facebook 视频页面时,看似标准的配置(启用 JavaScript、DOM Storage、允许跨域等)仍可能失败——根本原因在于 Facebook 服务端会根据 User-Agent(UA)字符串 判断客户端类型:若识别为移动设备(尤其是 Android WebView 默认 UA),Facebook 会重定向至 fb://fullscreen_video/... 这类自定义 URL Scheme,而 WebView 默认不处理 fb:// 协议,直接抛出 net::ERR_UNKNOWN_URL_SCHEME 错误。
✅ 正确解决方案是:主动覆盖 WebView 的 User-Agent,伪装成主流桌面浏览器(如 Chrome on Windows),从而让 Facebook 服务器返回完整的 HTML5 视频网页,而非 App 深度链接。
✅ 推荐 UA 设置(适配 Facebook Web 版本)
WebSettings webSettings = page.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setDomStorageEnabled(true); webSettings.setAllowUniversalAccessFromFileURLs(true); webSettings.setJavaScriptCanOpenWindowsAutomatically(true); // ? 关键:设置兼容性 UA,避免被重定向到 fb:// 协议 String desktopUA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"; webSettings.setUserAgentString(desktopUA);
? 提示:你提供的 UA
"Mozilla/5.0 (Windows Phone 8.0)..."亦有效,但更推荐使用现代桌面 Chrome UA(如上),因其更稳定且兼容最新 Facebook 前端逻辑。避免使用过时或语义模糊的 UA(如含WebView或Android字样)。
⚠️ 注意事项与补充建议
-
必须在
loadUrl()之前设置 UA:UA 属于 WebSettings 配置项,需在page.loadUrl(url)调用前完成设置,否则无效。 -
无需修改
shouldOverrideUrlLoading:该错误本质是服务端重定向导致,并非 WebView 主动跳转;因此拦截fb://协议(如调用Intent处理)治标不治本,且可能引发权限或安装检测问题。 -
禁用
WebViewClient.shouldInterceptRequest中的误判:确保你的广告拦截逻辑不会意外屏蔽 Facebook 视频资源(如*.facebook.com/video/*或*.fbcdn.net/域名),否则可能导致视频无法加载。 -
测试验证方式:在
onLoadResource()或shouldOverrideUrlLoading()中打印request.getUrl().toString(),确认最终加载的 URL 是否为https://www.facebook.com/watch/...或https://www.facebook.com/v/...等合法 HTTP(S) 地址,而非fb://开头链接。
✅ 总结
Facebook 视频在 WebView 中“打不开”,表象是协议错误,根源是服务端 UA 劫持。只需一行 setUserAgentString(),即可绕过移动端重定向逻辑,获得可渲染的网页版视频页。这是轻量、可靠且符合 WebView 最佳实践的解决方案——无需引入 Facebook SDK、不依赖用户已安装 App、完全在 Web 层面解决。











