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
后續還有更多在進行補充。
書到用時方恨少,紙上得來終覺淺!