From d88b61033e132dd5f2c90f256eed11c18f97f3c1 Mon Sep 17 00:00:00 2001 From: knight9999 Date: Thu, 12 Aug 2021 17:10:56 +0900 Subject: [PATCH] fix: dirty fix SystemWebViewEngine by using history.back instead of goBack for SDK30 --- .../cordova/engine/SystemWebViewEngine.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/framework/src/org/apache/cordova/engine/SystemWebViewEngine.java b/framework/src/org/apache/cordova/engine/SystemWebViewEngine.java index 71fa33dd1c..e449246e78 100755 --- a/framework/src/org/apache/cordova/engine/SystemWebViewEngine.java +++ b/framework/src/org/apache/cordova/engine/SystemWebViewEngine.java @@ -29,6 +29,7 @@ Licensed to the Apache Software Foundation (ASF) under one import android.os.Build; import android.view.View; import android.webkit.ValueCallback; +import android.webkit.WebBackForwardList; import android.webkit.WebSettings; import android.webkit.WebSettings.LayoutAlgorithm; import android.webkit.WebView; @@ -278,11 +279,20 @@ public boolean canGoBack() { public boolean goBack() { // Check webview first to see if there is a history // This is needed to support curPage#diffLink, since they are added to parentEngine's history, but not our history url array (JQMobile behavior) - if (webView.canGoBack()) { - webView.goBack(); - return true; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + WebBackForwardList list = webView.copyBackForwardList(); + if (list.getCurrentIndex() > 0) { + parentWebView.sendJavascript("history.back();"); + return true; + } + return false; + } else { + if (webView.canGoBack()) { + webView.goBack(); + return true; + } + return false; } - return false; } @Override