Esempio n. 1
0
        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;

            }
        }
Esempio n. 2
0
        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;
            }

            
        }