优化WebView错误处理和页面日志记录
This commit is contained in:
Binary file not shown.
@@ -860,6 +860,20 @@ public class MainActivity extends AppCompatActivity {
|
||||
|
||||
boolean hasSignIn = false;
|
||||
|
||||
private boolean isMainPageUrl(String targetUrl) {
|
||||
return !TextUtils.isEmpty(targetUrl) && !TextUtils.isEmpty(url) && targetUrl.startsWith(url);
|
||||
}
|
||||
|
||||
private void logWebViewUrl(String stage, String rawUrl) {
|
||||
if (TextUtils.isEmpty(rawUrl)) {
|
||||
LogUtils.i("WebViewURL[" + stage + "]: empty");
|
||||
return;
|
||||
}
|
||||
Uri uri = Uri.parse(rawUrl);
|
||||
String host = uri.getHost() == null ? "" : uri.getHost();
|
||||
LogUtils.i("WebViewURL[" + stage + "]: " + rawUrl + " | host=" + host + " | scheme=" + uri.getScheme());
|
||||
}
|
||||
|
||||
|
||||
// WebView webViews;
|
||||
WebViewClient webViewClient = new WebViewClient() {
|
||||
@@ -867,12 +881,14 @@ public class MainActivity extends AppCompatActivity {
|
||||
@Override
|
||||
public void onPageStarted(WebView webView, String s, Bitmap bitmap) {
|
||||
super.onPageStarted(webView, s, bitmap);
|
||||
logWebViewUrl("onPageStarted", s);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageFinished(WebView webView, String s) {
|
||||
super.onPageFinished(webView, s);
|
||||
logWebViewUrl("onPageFinished", s);
|
||||
// LogUtils.i("URL是啥加载完成:" + webView.getUrl());
|
||||
if (webView.getUrl().contains("hasSignIn")) {
|
||||
hasSignIn = true;
|
||||
@@ -903,12 +919,15 @@ public class MainActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
public WebResourceResponse shouldInterceptRequest(WebView webView, String s) {
|
||||
|
||||
logWebViewUrl("shouldInterceptRequestLegacy", s);
|
||||
return super.shouldInterceptRequest(webView, s);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WebResourceResponse shouldInterceptRequest(WebView webView, WebResourceRequest webResourceRequest) {
|
||||
if (webResourceRequest != null && webResourceRequest.getUrl() != null) {
|
||||
logWebViewUrl("shouldInterceptRequest", webResourceRequest.getUrl().toString());
|
||||
}
|
||||
return super.shouldInterceptRequest(webView, webResourceRequest);
|
||||
}
|
||||
|
||||
@@ -919,10 +938,9 @@ public class MainActivity extends AppCompatActivity {
|
||||
int errorCode = error.getErrorCode();
|
||||
String errorMessage = error.getDescription().toString();
|
||||
String currentUrl = request.getUrl().toString();
|
||||
if ((errorCode == -2 || errorCode == -6) && currentUrl.contains(url)) {
|
||||
LogUtils.i("WebViewURL[onReceivedError]: url=" + currentUrl + " | code=" + errorCode + " | msg=" + errorMessage);
|
||||
if (isMainPageUrl(currentUrl)) {
|
||||
onShowErrorView(errorMessage);
|
||||
} else {
|
||||
onShowNetView();
|
||||
}
|
||||
}
|
||||
activityMain2Binding.progressbar.setVisibility(View.GONE);
|
||||
@@ -930,6 +948,7 @@ public class MainActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
public void onReceivedSslError(WebView webView, SslErrorHandler sslErrorHandler, SslError sslError) {
|
||||
LogUtils.i("WebViewURL[onReceivedSslError]: url=" + (webView == null ? "" : webView.getUrl()) + " | primaryError=" + sslError.getPrimaryError() + " | urlString=" + sslError.getUrl());
|
||||
sslErrorHandler.proceed();
|
||||
}
|
||||
|
||||
@@ -937,10 +956,9 @@ public class MainActivity extends AppCompatActivity {
|
||||
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
|
||||
super.onReceivedError(view, errorCode, description, failingUrl);
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
|
||||
if ((errorCode == -2 || errorCode == -6) && failingUrl.contains(url)) {
|
||||
LogUtils.i("WebViewURL[onReceivedErrorLegacy]: url=" + failingUrl + " | code=" + errorCode + " | msg=" + description);
|
||||
if (isMainPageUrl(failingUrl)) {
|
||||
onShowErrorView(description);
|
||||
} else {
|
||||
onShowNetView();
|
||||
}
|
||||
}
|
||||
activityMain2Binding.progressbar.setVisibility(View.GONE);
|
||||
@@ -950,6 +968,7 @@ public class MainActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
public boolean shouldOverrideUrlLoading(WebView webView, String url1) {
|
||||
logWebViewUrl("shouldOverrideUrlLoading", url1);
|
||||
|
||||
if (url1.equals(url + "index") || url1.equals(url + "/index")) {
|
||||
isAtGame = false;
|
||||
|
||||
@@ -33,6 +33,20 @@ public class WebViewActivity extends AppCompatActivity {
|
||||
ActivityMain2Binding activityMain2Binding;
|
||||
private String url;
|
||||
|
||||
private boolean isMainPageUrl(String targetUrl) {
|
||||
return targetUrl != null && url != null && !url.isEmpty() && targetUrl.startsWith(url);
|
||||
}
|
||||
|
||||
private void logWebViewUrl(String stage, String rawUrl) {
|
||||
if (rawUrl == null || rawUrl.isEmpty()) {
|
||||
LogUtils.i("WebViewURL[" + stage + "]: empty");
|
||||
return;
|
||||
}
|
||||
Uri uri = Uri.parse(rawUrl);
|
||||
String host = uri.getHost() == null ? "" : uri.getHost();
|
||||
LogUtils.i("WebViewURL[" + stage + "]: " + rawUrl + " | host=" + host + " | scheme=" + uri.getScheme());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
@@ -105,6 +119,7 @@ public class WebViewActivity extends AppCompatActivity {
|
||||
newWebView.setWebViewClient(new WebViewClient() {
|
||||
@Override
|
||||
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
||||
logWebViewUrl("childShouldOverrideUrlLoading", url);
|
||||
activityMain2Binding.progressbar.setVisibility(View.GONE);
|
||||
activityMain2Binding.webview.loadUrl(url);
|
||||
return true;
|
||||
@@ -147,6 +162,7 @@ public class WebViewActivity extends AppCompatActivity {
|
||||
@Override
|
||||
public void onPageFinished(WebView view, String url) {
|
||||
super.onPageFinished(view, url);
|
||||
logWebViewUrl("onPageFinished", url);
|
||||
activityMain2Binding.showTopLy.setVisibility(View.GONE);
|
||||
activityMain2Binding.progressbar.setVisibility(View.GONE);
|
||||
activityMain2Binding.topVvvv.setVisibility(View.VISIBLE);
|
||||
@@ -156,6 +172,7 @@ public class WebViewActivity extends AppCompatActivity {
|
||||
@Override
|
||||
public void onPageStarted(WebView view, String url, Bitmap favicon) {
|
||||
super.onPageStarted(view, url, favicon);
|
||||
logWebViewUrl("onPageStarted", url);
|
||||
activityMain2Binding.progressbar.setVisibility(View.VISIBLE);
|
||||
activityMain2Binding.topVvvv.setVisibility(View.VISIBLE);
|
||||
}
|
||||
@@ -167,11 +184,10 @@ public class WebViewActivity extends AppCompatActivity {
|
||||
int errorCode = error.getErrorCode();
|
||||
String errorMessage = error.getDescription().toString();
|
||||
String currentUrl = request.getUrl().toString();
|
||||
LogUtils.i("WebViewURL[onReceivedError]: url=" + currentUrl + " | code=" + errorCode + " | msg=" + errorMessage);
|
||||
LogUtils.d("onReceivedError2 url==" + url + " errorCode ==" + errorCode);
|
||||
if ((errorCode == -2 || errorCode == -6) && currentUrl.contains(url)) {
|
||||
if (isMainPageUrl(currentUrl)) {
|
||||
onShowErrorView(errorMessage);
|
||||
} else {
|
||||
onShowNetView();
|
||||
}
|
||||
}
|
||||
activityMain2Binding.topVvvv.setVisibility(View.GONE);
|
||||
@@ -182,10 +198,8 @@ public class WebViewActivity extends AppCompatActivity {
|
||||
super.onReceivedError(view, errorCode, description, failingUrl);
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
|
||||
LogUtils.d("onReceivedError2 url==" + failingUrl + " errorCode ==" + errorCode);
|
||||
if ((errorCode == -2 || errorCode == -6) && failingUrl.contains(url)) {
|
||||
if (isMainPageUrl(failingUrl)) {
|
||||
onShowErrorView(description);
|
||||
} else {
|
||||
onShowNetView();
|
||||
}
|
||||
}
|
||||
activityMain2Binding.topVvvv.setVisibility(View.GONE);
|
||||
@@ -203,6 +217,7 @@ public class WebViewActivity extends AppCompatActivity {
|
||||
uri = Uri.parse(request.toString());
|
||||
}
|
||||
String url1 = uri.toString();
|
||||
logWebViewUrl("shouldOverrideUrlLoading", url1);
|
||||
if (url1.equals(url + "index") || url1.equals(url + "/index")) {
|
||||
activityMain2Binding.topVvvv.setVisibility(View.GONE);
|
||||
} else {
|
||||
@@ -241,6 +256,7 @@ public class WebViewActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
public boolean shouldOverrideUrlLoading(WebView view, String url1) {
|
||||
logWebViewUrl("shouldOverrideUrlLoadingLegacy", url1);
|
||||
if (url1.equals(url + "index") || url1.equals(url + "/index")) {
|
||||
activityMain2Binding.topVvvv.setVisibility(View.GONE);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user