private void OnLocatorStatusChanged(Geolocator sender, StatusChangedEventArgs args) { switch (args.Status) { case PositionStatus.Ready: case PositionStatus.Initializing: AccessStatus = LocationAccessStatus.Available; break; case PositionStatus.NoData: case PositionStatus.NotAvailable: case PositionStatus.NotInitialized: AccessStatus = LocationAccessStatus.Unavailable; break; default: AccessStatus = LocationAccessStatus.Unknown; break; } }
public override async Task<bool> RequestLocationAccess() { try { var status = await Geolocator.RequestAccessAsync(); switch (status) { case GeolocationAccessStatus.Allowed: return true; default: await BootStrapper.Current.NavigationService.Dispatcher.DispatchAsync(async () => { var dlg = new MessageDialog("Whoops! You haven't granted permission for " + Windows.ApplicationModel.Package.Current.DisplayName + " to access your location. Would you like to go to Settings and do that now?"); dlg.Commands.Add(new UICommand("Yes", async (command) => { var uri = new Uri("ms-settings:privacy-location"); await Launcher.LaunchUriAsync(uri); })); dlg.Commands.Add(new UICommand("No")); dlg.CancelCommandIndex = 1; await dlg.ShowAsync(); } ); return false; } } catch (UnauthorizedAccessException) { AccessStatus = LocationAccessStatus.Unavailable; return false; } }