问题描述:
提示:Webview 遇到net::ERR_UNKNOWN_URL_SCHEME 错误
mWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return super.shouldOverrideUrlLoading(view, request);
}
});
原因分析:
提示:webView仅支持http://和https://协议,不支持自定义协议
解决方案:
提示:
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
WebView.HitTestResult hit = view.getHitTestResult();
//hit.getExtra()为null或者hit.getType() == 0都表示即将加载的URL会发生重定向,需要做拦截处理
if (TextUtils.isEmpty(hit.getExtra()) || hit.getType() == 0) {
}
//加载的url是http/https协议地址
if (request.getUrl().getScheme().startsWith("http://") || request.getUrl().getScheme().startsWith("https://")){
view.loadUrl(request.getUrl().toString());
return false;
}else{
//加载的url是自定义协议地址
try {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(request.getUrl().toString()));
Main1Activity.this.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
}
});