void HandleItemTapped(object sender, ItemTappedEventArgs e) { Device.BeginInvokeOnMainThread(async() => { if (sender is ListView listView && e?.Item is StoryModel storyTapped) { if (string.IsNullOrWhiteSpace(storyTapped.Url)) { await DisplayAlert("No Website", "Ask HN articles do not contain a URL", "OK"); } else { listView.SelectedItem = null; var browserOptions = new BrowserLaunchOptions { PreferredControlColor = ColorConstants.BrowserNavigationBarTextColor, PreferredToolbarColor = ColorConstants.BrowserNavigationBarBackgroundColor }; await Browser.OpenAsync(storyTapped.Url, browserOptions); } } }); }
public static void LaunchBrowser(this Uri uri, BrowserLaunchOptions options) { if (options == null) { Browser.OpenAsync(uri); } else { Browser.OpenAsync(uri, options); } }
public WelcomePage(GitHubAuthenticationService gitHubAuthenticationService, AnalyticsService analyticsService, WelcomeViewModel welcomeViewModel) : base(welcomeViewModel, analyticsService, shouldUseSafeArea: true) { RemoveDynamicResource(BackgroundColorProperty); On <iOS>().SetModalPresentationStyle(UIModalPresentationStyle.OverFullScreen); var pageBackgroundColor = Color.FromHex(BaseTheme.LightTealColorHex); BackgroundColor = pageBackgroundColor; gitHubAuthenticationService.DemoUserActivated += HandleDemoUserActivated; gitHubAuthenticationService.AuthorizeSessionCompleted += HandleAuthorizeSessionCompleted; var browserLaunchOptions = new BrowserLaunchOptions { PreferredToolbarColor = pageBackgroundColor.MultiplyAlpha(0.75), PreferredControlColor = Color.White, Flags = BrowserLaunchFlags.PresentAsFormSheet }; Content = new Grid { RowSpacing = 24, RowDefinitions = Rows.Define( (Row.WelcomeLabel, StarGridLength(2)), (Row.Image, StarGridLength(4)), (Row.GitHubButton, StarGridLength(2)), (Row.DemoButton, StarGridLength(1)), (Row.VersionLabel, StarGridLength(1))), Children = { new WelcomeLabel() .Row(Row.WelcomeLabel), new Image { Source = "WelcomeImage" }.Center() .Row(Row.Image), new ConnectToGitHubButton(_connectToGitHubCancellationTokenSource.Token, browserLaunchOptions) .Row(Row.GitHubButton), new DemoLabel() .Row(Row.DemoButton), new ConnectToGitHubActivityIndicator() .Row(Row.DemoButton), new VersionNumberLabel() .Row(Row.VersionLabel) } }; }
void HandleItemTapped(object sender, ItemTappedEventArgs e) { if (sender is ListView listView && e?.Item is StoryModel storyTapped) { Device.BeginInvokeOnMainThread(async() => { listView.SelectedItem = null; var browserOptions = new BrowserLaunchOptions { PreferredControlColor = ColorConstants.BrowserNavigationBarTextColor, PreferredToolbarColor = ColorConstants.BrowserNavigationBarBackgroundColor }; await Browser.OpenAsync(storyTapped.Url, browserOptions); }); } }
public async Task <bool> OpenAsync(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); }
public 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 ConnectToGitHubButton(CancellationToken cancellationToken, BrowserLaunchOptions browserLaunchOptions) : base(WelcomePageAutomationIds.ConnectToGitHubButton, cancellationToken, browserLaunchOptions) { HorizontalOptions = LayoutOptions.Center; VerticalOptions = LayoutOptions.End; }
public Task OpenAsync(string uri, BrowserLaunchOptions options) { return(OpenAsync(new Uri(uri), options)); }
public Task <bool> OpenAsync(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 != null) #pragma warning disable CS0618 // Type or member is obsolete { tabsBuilder.SetToolbarColor(options.PreferredToolbarColor.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)); }
public Task <bool> OpenAsync(Uri uri, BrowserLaunchOptions options) => Task.FromResult(true);
public async Task <bool> OpenAsync(Uri uri, BrowserLaunchOptions options) { return(await DispatcherRunTaskAsync(CoreDispatcherPriority.Normal, async() => await _innerBrowser.OpenAsync(uri, options))); }
public async Task OpenAsync(string uri, BrowserLaunchOptions options) { await DispatcherRunTaskAsync(CoreDispatcherPriority.Normal, () => _innerBrowser.OpenAsync(new Uri(uri), options)); }
public Task <bool> OpenAsync(Uri uri, BrowserLaunchOptions options) => throw ExceptionUtils.NotSupportedOrImplementedException;
public Task <bool> OpenAsync(Uri uri, BrowserLaunchOptions options) => global::Windows.System.Launcher.LaunchUriAsync(uri).AsTask();
static Task <bool> OpenAsync(Uri uri, BrowserLaunchOptions options) => Task.FromResult(NSWorkspace.SharedWorkspace.OpenUrl(new NSUrl(uri.AbsoluteUri)));
/// <inheritdoc /> public IObservable <bool> Open(Uri uri, BrowserLaunchOptions launchOptions) => Observable.FromAsync(() => Browser.OpenAsync(uri, launchOptions));
public Task OpenAsync(string uri, BrowserLaunchOptions options) => OpenAsync(new Uri(uri), options);