2015-09-01 14 views
6

API mới cho vị trí địa lý trong Windows Universal (ứng dụng Windows 10) có một cách mới để cho phép truy cập vào vị trí của người dùng.API định vị địa lý Windows Universal (UWP) Permissions

Bắt đầu từ Windows 10, hãy gọi phương thức RequestAccessAsync trước khi truy cập vị trí của người dùng. Vào thời điểm đó, ứng dụng của bạn phải ở nền trước và RequestAccessAsync phải được gọi từ chuỗi giao diện người dùng.

Tôi đang chạy một số mã rất đơn giản cho Vị trí địa lý, trên chuỗi giao diện người dùng như được hiển thị bên dưới, nhưng tôi nhận được quyền vị trí "bị từ chối" mọi lúc và không được phép cho phép vị trí. Đã có người khác chạy vào trong này? Làm cách nào để nhận lời nhắc cho phép quyền vị trí cho vị trí địa lý trong ứng dụng Windows 10?

phương pháp Định vị

private async Task<ForecastRequest> GetPositionAsync() 
    { 
     try 
     { 

      // Request permission to access location 
      var accessStatus = await Geolocator.RequestAccessAsync(); 

      if (accessStatus == GeolocationAccessStatus.Allowed) 
      { 
       // Get cancellation token 
       _cts = new CancellationTokenSource(); 
       CancellationToken token = _cts.Token; 

       // If DesiredAccuracy or DesiredAccuracyInMeters are not set (or value is 0), DesiredAccuracy.Default is used. 
       Geolocator geolocator = new Geolocator { DesiredAccuracyInMeters = _desireAccuracyInMetersValue }; 

       // Carry out the operation 
       _pos = await geolocator.GetGeopositionAsync().AsTask(token); 

       return new ForecastRequest() 
       { 
        Lat = (float)_pos.Coordinate.Point.Position.Latitude, 
        Lon = (float)_pos.Coordinate.Point.Position.Longitude, 
        Unit = Common.Unit.us 
       }; 
      } 
      else 
       throw new Exception("Problem with location permissions or access"); 

     } 
     catch (TaskCanceledException tce) 
     { 
      throw new Exception("Task cancelled" + tce.Message); 
     } 
     finally 
     { 
      _cts = null; 
     } 
    } 

đâu nó được gọi là:

protected async override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 

     ForecastViewModel vm = await ForecastViewModel.BuildViewModelAsync(await GetPositionAsync()); 
     DataContext = vm.Forecast; 

     uxForecastList.Visibility = Visibility.Visible; 
    } 
+1

Bạn đã thêm "Location" là khả năng trong tệp kê khai ứng dụng? –

Trả lời

Các vấn đề liên quan