|
14 | 14 | import android.os.Bundle; |
15 | 15 |
|
16 | 16 | import androidx.appcompat.widget.Toolbar; |
| 17 | +import androidx.browser.customtabs.CustomTabColorSchemeParams; |
| 18 | +import androidx.browser.customtabs.CustomTabsIntent; |
17 | 19 |
|
18 | 20 | import android.text.TextUtils; |
19 | 21 | import android.view.View; |
20 | 22 | import android.webkit.CookieManager; |
21 | | -import android.webkit.DownloadListener; |
22 | 23 | import android.webkit.URLUtil; |
| 24 | +import android.webkit.WebResourceRequest; |
23 | 25 | import android.webkit.WebSettings; |
24 | 26 | import android.webkit.WebView; |
25 | 27 | import android.webkit.WebViewClient; |
@@ -231,13 +233,29 @@ public void loadUrl(String url) { |
231 | 233 |
|
232 | 234 | @Override |
233 | 235 | public boolean shouldOverrideUrlLoading(WebView view, String url) { |
| 236 | + if (isRedirectingFromHelpCenter(Uri.parse(url))) { |
| 237 | + openUrlInBrowser(Uri.parse(url)); |
| 238 | + return true; |
| 239 | + } |
234 | 240 | if (loadingProgressBar != null) { |
235 | 241 | loadingProgressBar.setVisibility(View.VISIBLE); |
236 | 242 | } |
237 | 243 | view.loadUrl(url); |
238 | 244 | return true; |
239 | 245 | } |
240 | 246 |
|
| 247 | + @Override |
| 248 | + public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { |
| 249 | + if (isRedirectingFromHelpCenter(request.getUrl())) { |
| 250 | + openUrlInBrowser(request.getUrl()); |
| 251 | + return true; |
| 252 | + } |
| 253 | + if (loadingProgressBar != null) { |
| 254 | + loadingProgressBar.setVisibility(View.VISIBLE); |
| 255 | + } |
| 256 | + return super.shouldOverrideUrlLoading(view, request); |
| 257 | + } |
| 258 | + |
241 | 259 | @Override |
242 | 260 | public void onPageFinished(WebView view, final String url) { |
243 | 261 | webView.setVisibility(View.VISIBLE); |
@@ -287,4 +305,21 @@ public void onPageFinished(WebView view, String url) { |
287 | 305 | webView.getSettings().setLoadWithOverviewMode(false); |
288 | 306 | webView.addJavascriptInterface(new KmWebViewJsInterface(KmWebViewActivity.this), JS_INTERFACE_NAME); |
289 | 307 | } |
| 308 | + |
| 309 | + private boolean isRedirectingFromHelpCenter(Uri url) { |
| 310 | + String helpCenterURL = "helpcenter.kommunicate.io"; |
| 311 | + return webView.getUrl() != null && webView.getUrl().contains(helpCenterURL) && url.getHost() != null && !url.getHost().equals(helpCenterURL); |
| 312 | + } |
| 313 | + |
| 314 | + private void openUrlInBrowser(Uri url) { |
| 315 | + KmThemeHelper themeHelper = KmThemeHelper.getInstance(this, alCustomizationSettings); |
| 316 | + CustomTabsIntent intent = new CustomTabsIntent.Builder() |
| 317 | + .setDefaultColorSchemeParams(new CustomTabColorSchemeParams.Builder() |
| 318 | + .setToolbarColor(themeHelper.getToolbarColor()) |
| 319 | + .build()) |
| 320 | + .setStartAnimations(this, android.R.anim.slide_in_left, android.R.anim.slide_out_right) |
| 321 | + .setExitAnimations(this, android.R.anim.slide_in_left, android.R.anim.slide_out_right) |
| 322 | + .build(); |
| 323 | + intent.launchUrl(this, url); |
| 324 | + } |
290 | 325 | } |
0 commit comments