public static Task OpenAsync(string uri, BrowserLaunchOptions options) { if (string.IsNullOrWhiteSpace(uri)) { throw new ArgumentNullException(nameof(uri), $"Uri cannot be empty."); } return(OpenAsync(new Uri(uri), options)); }
static async Task <bool> PlatformOpenAsync(Uri uri, BrowserLaunchOptions options) { switch (options.LaunchMode) { case BrowserLaunchMode.SystemPreferred: var nativeUrl = new NSUrl(uri.AbsoluteUri); var sfViewController = new SFSafariViewController(nativeUrl, false); var vc = Platform.GetCurrentViewController(); if (options.PreferredToolbarColor != null) { sfViewController.PreferredBarTintColor = options.PreferredToolbarColor.AsUIColor(); } if (options.PreferredControlColor != null) { sfViewController.PreferredControlTintColor = options.PreferredControlColor.AsUIColor(); } if (sfViewController.PopoverPresentationController != null) { sfViewController.PopoverPresentationController.SourceView = vc.View; } if (options.HasFlag(BrowserLaunchFlags.PresentAsFormSheet)) { sfViewController.ModalPresentationStyle = UIModalPresentationStyle.FormSheet; } else if (options.HasFlag(BrowserLaunchFlags.PresentAsPageSheet)) { sfViewController.ModalPresentationStyle = UIModalPresentationStyle.PageSheet; } await vc.PresentViewControllerAsync(sfViewController, true); break; case BrowserLaunchMode.External: return(await Launcher.PlatformOpenAsync(uri)); } return(true); }
static Task <bool> PlatformOpenAsync(Uri uri, BrowserLaunchOptions launchMode) { if (uri == null) { throw new ArgumentNullException(nameof(uri)); } Permissions.EnsureDeclared <Permissions.LaunchApp>(); var appControl = new AppControl { Operation = AppControlOperations.View, Uri = uri.AbsoluteUri }; var hasMatches = AppControl.GetMatchedApplicationIds(appControl).Any(); if (hasMatches) { AppControl.SendLaunchRequest(appControl); } return(Task.FromResult(hasMatches)); }
public static Task <bool> OpenAsync(Uri uri, BrowserLaunchOptions options) => PlatformOpenAsync(EscapeUri(uri), options);
static Task <bool> PlatformOpenAsync(Uri uri, BrowserLaunchOptions options) { var nativeUri = AndroidUri.Parse(uri.AbsoluteUri); switch (options.LaunchMode) { case BrowserLaunchMode.SystemPreferred: var tabsBuilder = new CustomTabsIntent.Builder(); tabsBuilder.SetShowTitle(true); if (options.PreferredToolbarColor.HasValue) #pragma warning disable CS0618 // Type or member is obsolete { tabsBuilder.SetToolbarColor(options.PreferredToolbarColor.Value.ToInt()); } #pragma warning restore CS0618 // Type or member is obsolete if (options.TitleMode != BrowserTitleMode.Default) { tabsBuilder.SetShowTitle(options.TitleMode == BrowserTitleMode.Show); } var tabsIntent = tabsBuilder.Build(); ActivityFlags?tabsFlags = null; Context context = Platform.GetCurrentActivity(false); if (context == null) { context = Platform.AppContext; // If using ApplicationContext we need to set ClearTop/NewTask (See #225) tabsFlags = ActivityFlags.ClearTop | ActivityFlags.NewTask; } #if __ANDROID_24__ if (Platform.HasApiLevelN && options.HasFlag(BrowserLaunchFlags.LaunchAdjacent)) { if (tabsFlags.HasValue) { tabsFlags |= ActivityFlags.LaunchAdjacent | ActivityFlags.NewTask; } else { tabsFlags = ActivityFlags.LaunchAdjacent | ActivityFlags.NewTask; } } #endif // Check if there's flags specified to use if (tabsFlags.HasValue) { tabsIntent.Intent.SetFlags(tabsFlags.Value); } tabsIntent.LaunchUrl(context, nativeUri); break; case BrowserLaunchMode.External: var intent = new Intent(Intent.ActionView, nativeUri); var flags = ActivityFlags.ClearTop | ActivityFlags.NewTask; #if __ANDROID_24__ if (Platform.HasApiLevelN && options.HasFlag(BrowserLaunchFlags.LaunchAdjacent)) { flags |= ActivityFlags.LaunchAdjacent; } #endif intent.SetFlags(flags); if (!Platform.IsIntentSupported(intent)) { throw new FeatureNotSupportedException(); } Platform.AppContext.StartActivity(intent); break; } return(Task.FromResult(true)); }
static Task <bool> PlatformOpenAsync(Uri uri, BrowserLaunchOptions options) => global::Windows.System.Launcher.LaunchUriAsync(uri).AsTask();
static Task <bool> PlatformOpenAsync(Uri uri, BrowserLaunchOptions options) => throw ExceptionUtils.NotSupportedOrImplementedException;
/// <include file="../../docs/Microsoft.Maui.Essentials/Browser.xml" path="//Member[@MemberName='OpenAsync'][5]/Docs" /> public static Task <bool> OpenAsync(Uri uri, BrowserLaunchOptions options) => Current.OpenAsync(EscapeUri(uri), options);
static Task <bool> PlatformOpenAsync(Uri uri, BrowserLaunchOptions options) => Task.FromResult(NSWorkspace.SharedWorkspace.OpenUrl(new NSUrl(uri.AbsoluteUri)));