コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        public static Task OpenAsync(Uri uri, BrowserLaunchType launchType)
        {
            if (uri == null)
            {
                throw new ArgumentNullException(nameof(uri));
            }

            return(Windows.System.Launcher.LaunchUriAsync(uri).AsTask());
        }
コード例 #5
0
 public static Task OpenAsync(Uri uri, BrowserLaunchType launchType) =>
 PlatformOpenAsync(EscapeUri(uri), launchType);
コード例 #6
0
 static Task PlatformOpenAsync(Uri uri, BrowserLaunchType launchType) =>
 throw new NotImplementedInReferenceAssemblyException();