From 4eb61544eaf8996bf89e599a8a81f64eb81aa4e5 Mon Sep 17 00:00:00 2001 From: Michal Thomka Date: Sun, 17 Dec 2017 14:17:41 +0200 Subject: [PATCH 1/6] Fixed the bug with wrong webviewOffset. The offset should be calculated as height of the toolbar PLUS the height of the status bar. Prevents the negative offset of webview (hiding behind the toolbar). --- src/ios/CDVThemeableBrowser.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ios/CDVThemeableBrowser.m b/src/ios/CDVThemeableBrowser.m index ce09b20ce..2169ea7ab 100644 --- a/src/ios/CDVThemeableBrowser.m +++ b/src/ios/CDVThemeableBrowser.m @@ -1336,11 +1336,13 @@ - (float) getStatusBarOffset { - (void) rePositionViews { CGFloat toolbarHeight = [self getFloatFromDict:_browserOptions.toolbar withKey:kThemeableBrowserPropHeight withDefault:TOOLBAR_DEF_HEIGHT]; - CGFloat webviewOffset = _browserOptions.fullscreen ? 0.0 : toolbarHeight; + CGFloat statusBarOffset = [self getStatusBarOffset]; + CGFloat webviewOffset = _browserOptions.fullscreen ? 0.0 : toolbarHeight + statusBarOffset; + if ([_browserOptions.toolbarposition isEqualToString:kThemeableBrowserToolbarBarPositionTop]) { [self.webView setFrame:CGRectMake(self.webView.frame.origin.x, webviewOffset, self.webView.frame.size.width, self.webView.frame.size.height)]; - [self.toolbar setFrame:CGRectMake(self.toolbar.frame.origin.x, [self getStatusBarOffset], self.toolbar.frame.size.width, self.toolbar.frame.size.height)]; + [self.toolbar setFrame:CGRectMake(self.toolbar.frame.origin.x, statusBarOffset, self.toolbar.frame.size.width, self.toolbar.frame.size.height)]; } CGFloat screenWidth = CGRectGetWidth(self.view.frame); From d3f30591aa1ed38acf09a2abffd9c0df7f38c57f Mon Sep 17 00:00:00 2001 From: Michal Thomka Date: Tue, 20 Nov 2018 13:23:40 +0200 Subject: [PATCH 2/6] Allowing custom url scheme opening --- src/android/ThemeableBrowser.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/android/ThemeableBrowser.java b/src/android/ThemeableBrowser.java index 673e0d828..88404f9f6 100644 --- a/src/android/ThemeableBrowser.java +++ b/src/android/ThemeableBrowser.java @@ -1213,7 +1213,15 @@ public ThemeableBrowserClient(CordovaWebView webView, */ @Override public boolean shouldOverrideUrlLoading(WebView webView, String url) { - if (url.startsWith(WebView.SCHEME_TEL)) { + // handle back to application redirect without processing url by webView + final Intent customSchemeIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); + final PackageManager packageManager = cordova.getActivity().getApplicationContext().getPackageManager(); + final List resolvedActivities = packageManager.queryIntentActivities(customSchemeIntent, 0); + + String newloc = ""; + if (url.startsWith("http:") || url.startsWith("https:") || url.startsWith("file:")) { + newloc = url; + } else if (url.startsWith(WebView.SCHEME_TEL)) { try { Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse(url)); @@ -1262,6 +1270,10 @@ else if (url.startsWith("sms:")) { } catch (android.content.ActivityNotFoundException e) { Log.e(LOG_TAG, "Error sending sms " + url + ":" + e.toString()); } + } else if(resolvedActivities.size() > 0) { + cordova.getActivity().startActivity(customSchemeIntent); + closeDialog(); + return true; } return false; } From ade64dc854305cab08d3fc4f47f0de7f14a251de Mon Sep 17 00:00:00 2001 From: Michal Thomka Date: Tue, 20 Nov 2018 13:31:46 +0200 Subject: [PATCH 3/6] Allowing custom url scheme opening --- src/android/ThemeableBrowser.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/android/ThemeableBrowser.java b/src/android/ThemeableBrowser.java index 88404f9f6..4337d6e6a 100644 --- a/src/android/ThemeableBrowser.java +++ b/src/android/ThemeableBrowser.java @@ -33,6 +33,8 @@ Licensed to the Apache Software Foundation (ASF) under one import android.os.Build; import android.os.Bundle; import android.provider.Browser; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.text.InputType; import android.text.TextUtils; import android.util.DisplayMetrics; @@ -77,6 +79,7 @@ Licensed to the Apache Software Foundation (ASF) under one import java.io.InputStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.List; @SuppressLint("SetJavaScriptEnabled") public class ThemeableBrowser extends CordovaPlugin { From 7acb525435aa03e08645d54931413f197641b2c7 Mon Sep 17 00:00:00 2001 From: Michal Thomka Date: Tue, 20 Nov 2018 13:54:25 +0200 Subject: [PATCH 4/6] Allowing custom url scheme opening --- src/android/ThemeableBrowser.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/android/ThemeableBrowser.java b/src/android/ThemeableBrowser.java index 4337d6e6a..a9ece0e83 100644 --- a/src/android/ThemeableBrowser.java +++ b/src/android/ThemeableBrowser.java @@ -1274,6 +1274,8 @@ else if (url.startsWith("sms:")) { Log.e(LOG_TAG, "Error sending sms " + url + ":" + e.toString()); } } else if(resolvedActivities.size() > 0) { + customSchemeIntent.setFlags(Intent.URI_INTENT_SCHEME); + customSchemeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); cordova.getActivity().startActivity(customSchemeIntent); closeDialog(); return true; From 2f63d657c980608f859f1b9588be788a95dd4ddd Mon Sep 17 00:00:00 2001 From: Michal Thomka Date: Tue, 20 Nov 2018 14:22:00 +0200 Subject: [PATCH 5/6] Allowing custom url scheme opening --- src/android/ThemeableBrowser.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/android/ThemeableBrowser.java b/src/android/ThemeableBrowser.java index a9ece0e83..18052e733 100644 --- a/src/android/ThemeableBrowser.java +++ b/src/android/ThemeableBrowser.java @@ -1274,10 +1274,16 @@ else if (url.startsWith("sms:")) { Log.e(LOG_TAG, "Error sending sms " + url + ":" + e.toString()); } } else if(resolvedActivities.size() > 0) { - customSchemeIntent.setFlags(Intent.URI_INTENT_SCHEME); - customSchemeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - cordova.getActivity().startActivity(customSchemeIntent); - closeDialog(); + Log.e(LOG_TAG, "Starting custom intent: " + url); + + try{ + customSchemeIntent.setFlags(Intent.URI_INTENT_SCHEME); + customSchemeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + cordova.getActivity().startActivity(customSchemeIntent); + closeDialog(); + } catch (Exception e) { + Log.e(LOG_TAG, "Custom scheme exception: " + e.toString()); + } return true; } return false; From cb528dee6701cf0d6a193e4c0aae2960e54f69cc Mon Sep 17 00:00:00 2001 From: Michal Thomka Date: Tue, 20 Nov 2018 15:10:54 +0200 Subject: [PATCH 6/6] Allowing custom url scheme opening --- src/android/ThemeableBrowser.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/android/ThemeableBrowser.java b/src/android/ThemeableBrowser.java index 18052e733..063e7db28 100644 --- a/src/android/ThemeableBrowser.java +++ b/src/android/ThemeableBrowser.java @@ -376,6 +376,7 @@ public String openExternal(String url) { this.cordova.getActivity().startActivity(intent); return ""; } catch (android.content.ActivityNotFoundException e) { + emitLog( LOAD_ERROR_EVENT, EVT_ERR, String.format("Error loading %s: %s", url, e.toString())); Log.d(LOG_TAG, "ThemeableBrowser: Error loading url "+url+":"+ e.toString()); return e.toString(); }