WebView加载Facebook个人页报错ERR_UNKNOWN_URL_SCHEME求助
解决WebView加载Facebook页面出现ERR_UNKNOWN_URL_SCHEME的问题
核心问题是Facebook页面会重定向到fb://自定义协议,而WebView无法识别这类非HTTP/HTTPS协议。解决思路是重写WebViewClient的链接拦截方法,对fb://协议做兼容处理:
- 优先尝试打开Facebook客户端(如果用户已安装)
- 未安装客户端则自动跳转到网页版链接
完整代码示例
webView = new WebView(ctx); webView.loadUrl("https://www.facebook.com/Google"); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { String targetUrl = request.getUrl().toString(); // 拦截fb://开头的自定义协议 if (targetUrl.startsWith("fb://")) { try { // 调用系统Intent打开Facebook应用 Intent fbIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(targetUrl)); ctx.startActivity(fbIntent); return true; // 标记该链接已被处理 } catch (ActivityNotFoundException e) { // 没有安装Facebook,转成网页版链接加载 String webVersionUrl = targetUrl.replace("fb://", "https://www.facebook.com/"); view.loadUrl(webVersionUrl); return true; } } // 其他HTTP/HTTPS链接正常用WebView加载 return super.shouldOverrideUrlLoading(view, request); } });
注意事项
- 确保你的AndroidManifest.xml中已经添加了网络权限:
<uses-permission android:name="android.permission.INTERNET" />
- 这种情况是因为Facebook更新了页面的重定向逻辑,之前的WebView默认处理逻辑不再适用,拦截自定义协议是通用的解决方案。
内容的提问来源于stack exchange,提问作者NullPointerException
相关产品推荐
相关产品推荐

