WebView调用tel协议出现未知URL Scheme错误,请求排查解决
WebView调用ACTION_DIAL出现unknown_url_scheme错误的解决方法
问题核心:你当前的代码在处理tel协议的URL后返回了false,这会让WebView继续尝试加载该URL,但WebView本身不支持tel协议,因此弹出unknown_url_scheme错误页面,之后才会启动拨号Intent。
修改方案:在处理tel协议的分支内返回true,告知WebView无需继续加载该URL;其他URL保持默认处理逻辑即可。
修改后的Android代码:
webview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(@NotNull WebView view, @NotNull WebResourceRequest request) { Uri uri = request.getUrl(); if (uri.getScheme().equals("tel")){ try { Intent intent = new Intent(Intent.ACTION_DIAL, uri); startActivity(intent); return true; // 告知WebView无需加载该URL } catch (Exception ex) { ex.printStackTrace(); } } return super.shouldOverrideUrlLoading(view, request); // 其他URL按默认逻辑处理 } });
补充说明:
- 返回
true表示由App自行处理该URL,WebView不再尝试加载 - 其他非
tel协议的URL,交给super.shouldOverrideUrlLoading处理,保持WebView的默认跳转逻辑
内容的提问来源于stack exchange,提问作者Donghun Lee
相关产品推荐
相关产品推荐

