Skip to content

Commit 2557712

Browse files
committed
add 增加 onPageStarted() 和 onReceivedSslError()
1 parent 7677d27 commit 2557712

File tree

3 files changed

+58
-17
lines changed

3 files changed

+58
-17
lines changed

ByWebView/src/main/java/me/jingbin/web/ByWebViewClient.java

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.app.Activity;
44
import android.content.DialogInterface;
5+
import android.graphics.Bitmap;
56
import android.net.http.SslError;
67
import android.os.Build;
78
import android.support.annotation.RequiresApi;
@@ -75,6 +76,13 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
7576
}
7677
}
7778

79+
@Override
80+
public void onPageStarted(WebView view, String url, Bitmap favicon) {
81+
if (onByWebClientCallback != null) {
82+
onByWebClientCallback.onPageStarted(view, url, favicon);
83+
}
84+
super.onPageStarted(view, url, favicon);
85+
}
7886

7987
@Override
8088
public void onPageFinished(WebView view, String url) {
@@ -127,22 +135,26 @@ public void onReceivedError(WebView view, WebResourceRequest request, WebResourc
127135
*/
128136
@Override
129137
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
130-
AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
131-
builder.setMessage("SSL认证失败,是否继续访问?");
132-
builder.setPositiveButton("继续", new DialogInterface.OnClickListener() {
133-
@Override
134-
public void onClick(DialogInterface dialog, int which) {
135-
handler.proceed();
136-
}
137-
});
138-
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
139-
@Override
140-
public void onClick(DialogInterface dialog, int which) {
141-
handler.cancel();
142-
}
143-
});
144-
AlertDialog dialog = builder.create();
145-
dialog.show();
138+
if (onByWebClientCallback == null || !onByWebClientCallback.onReceivedSslError(view, handler, error)) {
139+
AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
140+
builder.setMessage("SSL认证失败,是否继续访问?");
141+
builder.setPositiveButton("继续", new DialogInterface.OnClickListener() {
142+
@Override
143+
public void onClick(DialogInterface dialog, int which) {
144+
handler.proceed();
145+
}
146+
});
147+
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
148+
@Override
149+
public void onClick(DialogInterface dialog, int which) {
150+
handler.cancel();
151+
}
152+
});
153+
AlertDialog dialog = builder.create();
154+
dialog.show();
155+
} else {
156+
onByWebClientCallback.onReceivedSslError(view, handler, error);
157+
}
146158
}
147159

148160
/**
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,31 @@
11
package me.jingbin.web;
22

3+
import android.graphics.Bitmap;
4+
import android.net.http.SslError;
5+
import android.webkit.SslErrorHandler;
36
import android.webkit.WebView;
47

58
/**
69
* Created by jingbin on 2020/6/30.
710
*/
811
public abstract class OnByWebClientCallback {
912

13+
public void onPageStarted(WebView view, String url, Bitmap favicon) {
14+
15+
}
16+
1017
public void onPageFinished(WebView view, String url) {
1118

1219
}
1320

1421
public boolean isOpenThirdApp(String url) {
1522
return !url.startsWith("http:") && !url.startsWith("https:");
1623
}
24+
25+
/**
26+
* @return true 表示是自己处理的
27+
*/
28+
public boolean onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
29+
return false;
30+
}
1731
}

app/src/main/java/com/example/jingbin/webviewstudy/ui/ByWebViewActivity.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import android.content.Context;
44
import android.content.Intent;
5+
import android.graphics.Bitmap;
56
import android.net.Uri;
7+
import android.net.http.SslError;
68
import android.os.Bundle;
79
import android.support.v4.content.ContextCompat;
810
import android.support.v7.app.ActionBar;
@@ -12,6 +14,7 @@
1214
import android.view.KeyEvent;
1315
import android.view.Menu;
1416
import android.view.MenuItem;
17+
import android.webkit.SslErrorHandler;
1518
import android.webkit.WebView;
1619
import android.widget.LinearLayout;
1720
import android.widget.TextView;
@@ -25,8 +28,8 @@
2528

2629
import me.jingbin.web.ByWebTools;
2730
import me.jingbin.web.ByWebView;
28-
import me.jingbin.web.OnTitleProgressCallback;
2931
import me.jingbin.web.OnByWebClientCallback;
32+
import me.jingbin.web.OnTitleProgressCallback;
3033

3134
/**
3235
* 网页可以处理:
@@ -114,6 +117,18 @@ public void onReceivedTitle(String title) {
114117
};
115118

116119
private OnByWebClientCallback onByWebClientCallback = new OnByWebClientCallback() {
120+
121+
@Override
122+
public void onPageStarted(WebView view, String url, Bitmap favicon) {
123+
Log.e("---onPageStarted", url);
124+
}
125+
126+
@Override
127+
public boolean onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
128+
// 如果自己处理,需要返回true
129+
return super.onReceivedSslError(view, handler, error);
130+
}
131+
117132
@Override
118133
public void onPageFinished(WebView view, String url) {
119134
// 网页加载完成后的回调

0 commit comments

Comments
 (0)