Skip to content

Commit 16c41da

Browse files
feat: error handling to webview
1 parent 5e052a6 commit 16c41da

File tree

3 files changed

+31
-4
lines changed

3 files changed

+31
-4
lines changed

sdk/src/main/java/ly/count/android/sdk/CountlyWebViewClient.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package ly.count.android.sdk;
22

3+
import android.os.Build;
34
import android.util.Log;
5+
import android.webkit.WebResourceError;
46
import android.webkit.WebResourceRequest;
7+
import android.webkit.WebResourceResponse;
58
import android.webkit.WebView;
69
import android.webkit.WebViewClient;
710
import java.net.URLDecoder;
@@ -44,7 +47,6 @@ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request
4447
@Override
4548
public void onPageFinished(WebView view, String url) {
4649
Log.v(Countly.TAG, "[CountlyWebViewClient] onPageFinished, url: [" + url + "]");
47-
super.onPageFinished(view, url);
4850
if (afterPageFinished != null) {
4951
pageLoadTime = System.currentTimeMillis() - pageLoadTime;
5052
boolean timeOut = (pageLoadTime / 1000L) >= 60;
@@ -55,6 +57,31 @@ public void onPageFinished(WebView view, String url) {
5557
}
5658
}
5759

60+
@Override
61+
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
62+
if (request.isForMainFrame() && afterPageFinished != null) {
63+
String errorString;
64+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
65+
errorString = error.getDescription() + " (code: " + error.getErrorCode() + ")";
66+
} else {
67+
errorString = error.toString();
68+
}
69+
Log.v(Countly.TAG, "[CountlyWebViewClient] onReceivedError, error: [" + errorString + "]");
70+
71+
afterPageFinished.onPageLoaded(true);
72+
afterPageFinished = null;
73+
}
74+
}
75+
76+
@Override
77+
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
78+
if (request.isForMainFrame() && afterPageFinished != null) {
79+
Log.v(Countly.TAG, "[CountlyWebViewClient] onReceivedHttpError, errorResponseCode: [" + errorResponse.getStatusCode() + "]");
80+
afterPageFinished.onPageLoaded(true);
81+
afterPageFinished = null;
82+
}
83+
}
84+
5885
public void registerWebViewUrlListener(WebViewUrlListener listener) {
5986
this.listeners.add(listener);
6087
}

sdk/src/main/java/ly/count/android/sdk/TransparentActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -554,8 +554,8 @@ private WebView createWebView(TransparentActivityConfig config) {
554554
}
555555
});
556556
client.afterPageFinished = new WebViewPageLoadedListener() {
557-
@Override public void onPageLoaded(boolean timedOut) {
558-
if (timedOut) {
557+
@Override public void onPageLoaded(boolean failed) {
558+
if (failed) {
559559
close(new HashMap<>());
560560

561561
if (Countly.sharedInstance().isInitialized()) {

sdk/src/main/java/ly/count/android/sdk/WebViewPageLoadedListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22

33
public interface WebViewPageLoadedListener {
44

5-
void onPageLoaded(boolean timedOut);
5+
void onPageLoaded(boolean failed);
66
}

0 commit comments

Comments
 (0)