From 84440876feb8a0b4bc5bc2309dc7a9315d1f91ef Mon Sep 17 00:00:00 2001 From: Prabu Devarrajan Date: Tue, 3 Jan 2023 18:38:33 -0800 Subject: [PATCH] fix(android): WebView url and event handling (#10147) (#10148) closes https://github.com/NativeScript/NativeScript/issues/10147 --- packages/core/ui/web-view/index.android.ts | 3 +-- packages/core/utils/index.android.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/core/ui/web-view/index.android.ts b/packages/core/ui/web-view/index.android.ts index ec18b3dc3..b302d837d 100644 --- a/packages/core/ui/web-view/index.android.ts +++ b/packages/core/ui/web-view/index.android.ts @@ -29,8 +29,7 @@ function initializeWebViewClient(): void { // Handle schemes like mailto, tel, etc if (!android.webkit.URLUtil.isNetworkUrl(url)) { - openUrl(url); - return true; + return openUrl(url); } return false; diff --git a/packages/core/utils/index.android.ts b/packages/core/utils/index.android.ts index a34815a87..5cd1b0710 100644 --- a/packages/core/utils/index.android.ts +++ b/packages/core/utils/index.android.ts @@ -22,8 +22,16 @@ export function openUrl(location: string): boolean { const context = ad.getApplicationContext(); try { const intent = new android.content.Intent(android.content.Intent.ACTION_VIEW, android.net.Uri.parse(location.trim())); + const packageManager = context.getPackageManager(); + intent.addFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK); + // Handle schemes like mailto, tel, etc + if (intent.resolveActivity(packageManager) == null) { + Trace.write('Unable to open ' + location + '. Make sure to add queries element(https://developer.android.com/guide/topics/manifest/queries-element) matching the scheme to the AndroidManifest.xml file.', Trace.categories.Error, Trace.messageType.error); + return false; + } + context.startActivity(intent); } catch (e) { // We Don't do anything with an error. We just output it