diff --git a/src/App/Platforms/Android/Services/DeviceActionService.cs b/src/App/Platforms/Android/Services/DeviceActionService.cs index 102f1de80d0..0a3498114cc 100644 --- a/src/App/Platforms/Android/Services/DeviceActionService.cs +++ b/src/App/Platforms/Android/Services/DeviceActionService.cs @@ -72,17 +72,28 @@ public void Toast(string text, bool longDuration = false) public bool LaunchApp(string appName) { - if ((int)Build.VERSION.SdkInt < 33) + try + { + if ((int)Build.VERSION.SdkInt < 33) + { + // API 33 required to avoid using wildcard app visibility or dangerous permissions + // https://developer.android.com/reference/android/content/pm/PackageManager#getLaunchIntentSenderForPackage(java.lang.String) + return false; + } + var activity = Microsoft.Maui.ApplicationModel.Platform.CurrentActivity; + appName = appName.Replace("androidapp://", string.Empty); + var launchIntentSender = activity?.PackageManager?.GetLaunchIntentSenderForPackage(appName); + launchIntentSender?.SendIntent(activity, Result.Ok, null, null, null); + return launchIntentSender != null; + } + catch (IntentSender.SendIntentException) + { + return false; + } + catch (Android.Util.AndroidException) { - // API 33 required to avoid using wildcard app visibility or dangerous permissions - // https://developer.android.com/reference/android/content/pm/PackageManager#getLaunchIntentSenderForPackage(java.lang.String) return false; } - var activity = Microsoft.Maui.ApplicationModel.Platform.CurrentActivity; - appName = appName.Replace("androidapp://", string.Empty); - var launchIntentSender = activity?.PackageManager?.GetLaunchIntentSenderForPackage(appName); - launchIntentSender?.SendIntent(activity, Result.Ok, null, null, null); - return launchIntentSender != null; } public async Task ShowLoadingAsync(string text)