public static Task OpenAsync(Uri uri, BrowserLaunchType launchType) { if (uri == null) { throw new ArgumentNullException(nameof(uri)); } var nativeUrl = new NSUrl(uri.OriginalString); switch (launchType) { case BrowserLaunchType.SystemPreferred: var sfViewController = new SFSafariViewController(nativeUrl, false); var vc = Platform.GetCurrentViewController(); if (sfViewController.PopoverPresentationController != null) { sfViewController.PopoverPresentationController.SourceView = vc.View; } vc.PresentViewController(sfViewController, true, null); break; case BrowserLaunchType.External: UIKit.UIApplication.SharedApplication.OpenUrl(nativeUrl); break; } return(Task.CompletedTask); }
public static Task OpenAsync(Uri uri, BrowserLaunchType launchType) { if (uri == null) { throw new ArgumentNullException(nameof(uri), "Uri cannot be null."); } var nativeUri = AndroidUri.Parse(uri.OriginalString); switch (launchType) { case BrowserLaunchType.SystemPreferred: var tabsBuilder = new CustomTabsIntent.Builder(); var tabsIntent = tabsBuilder.Build(); tabsBuilder.SetShowTitle(true); tabsIntent.LaunchUrl(Platform.CurrentContext, nativeUri); break; case BrowserLaunchType.External: var intent = new Intent(Intent.ActionView, nativeUri); intent.SetFlags(ActivityFlags.ClearTop); intent.SetFlags(ActivityFlags.NewTask); if (!Platform.IsIntentSupported(intent)) { throw new FeatureNotSupportedException(); } Platform.CurrentContext.StartActivity(intent); break; } return(Task.CompletedTask); }
public static Task OpenAsync(string uri, BrowserLaunchType launchType) { if (string.IsNullOrWhiteSpace(uri)) { throw new ArgumentNullException(nameof(uri), $"Uri cannot be empty."); } return(OpenAsync(new Uri(uri), launchType)); }
public static Task OpenAsync(Uri uri, BrowserLaunchType launchType) { if (uri == null) { throw new ArgumentNullException(nameof(uri)); } return(Windows.System.Launcher.LaunchUriAsync(uri).AsTask()); }
public static Task OpenAsync(Uri uri, BrowserLaunchType launchType) => PlatformOpenAsync(EscapeUri(uri), launchType);
static Task PlatformOpenAsync(Uri uri, BrowserLaunchType launchType) => throw new NotImplementedInReferenceAssemblyException();