WebView在应用中还是很常见的,比如我们的注册协议、常见问题等
但是实际开发中总是会遇到一些问题,net:err_unknown_url_scheme
1、解决方法:以”http”,”https”开头的url在本页用webview进行加载,其他链接进行跳转
2、解决方法:以微信、支付宝、拨号 三种跳转方式,其他类型等进行分类
mWebView.setWebViewClient(new WebViewClient() {
//重写此方法,查看浏览器内部跳转
public boolean shouldOverrideUrlLoading(WebView v, String u) {
String urlStr = u;
Log.i(String.valueOf(DetailsActivity.this), urlStr);
if (u == null) {
return false;
}
try {
/*|| url.startsWith("http:") || url.startsWith("https:")*/
if (u.startsWith("weixin://") || u.startsWith("alipays://") || u.startsWith("tel://")) {
//类型我目前用到的是微信、支付宝、拨号 三种跳转方式,其他类型自加
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
} catch (Exception e) {
return false;
}
v.loadUrl(u);
return true;
}
@Override
public void onPageStarted(WebView view, String u, Bitmap favicon) {
super.onPageStarted(view, u, favicon);
loadingWindow.show();
}
@Override
public void onPageFinished(WebView view, String u) {
super.onPageFinished(view, url);
loadingWindow.dismiss();
}
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.cancel(); //默认的处理方式,WebView变成空白页
// handler.process();//接受证书
// handleMessage(Message msg);// 其他处理
}
});
if (url != null) {
mWebView.loadUrl(url);
}
}
应用中重写shouldOverrideUrlLoading这个方法设置相应的webview中连接的指定跳转方式即可。
net:err_unknown_url_scheme这个问题正是在网页中有 其他协议的连接。
还有Android 9.0的坑请移步 net::ERR_CLEARTEXT_NOT_PERMITTED Android9.0无法加载url
Android 9.0 WebView无法加载页面报错 net:ERR_CLEARTEXT_NOT_PERMITTED
后续还有更多在进行补充。
书到用时方恨少,纸上得来终觉浅!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115037.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...