C# UWP 地理定位,访问被拒绝

C# UWP Geolocation, access denied

大家。

我正在尝试获取当前用户在 C# UWP 应用程序中的位置。

var geoLocator = new Geolocator();
geoLocator.DesiredAccuracy = PositionAccuracy.High;
var accessStatus = await Geolocator.RequestAccessAsync();
var pos = await geoLocator.GetGeopositionAsync();
var latitude = pos.Coordinate.Point.Position.Latitude;
var longitude = pos.Coordinate.Point.Position.Longitude;

但我收到错误消息:

'System.UnauthorizedAccessException' 类型的异常发生在 mscorlib.ni.dll 但未在用户代码中处理 WinRT 信息:您的应用没有访问位置数据的权限。确保您已在应用程序清单中定义 ID_CAP_LOCATION,并且在您的 phone 上,您已通过选中“设置”>“位置”打开位置。 附加信息:访问被拒绝。

在 Package.appxmanifest 我检查了这些项目: 互联网(客户端和服务器) - 选中, 互联网(客户端) - 检查, 位置 - 选中。

如何在本地机器上设置权限?

我解决了这个问题。在 Windows 10 中,在位置隐私设置中,我的位置服务未打开。所以我打开它,现在它正在工作。

您需要检查是否允许您访问定位服务? 您可以在 UWP 中使用 RequestAccessAsync() method of GeoLocater Class 处理此问题。

        Geolocator geoLocator = new Geolocator();
        GeolocationAccessStatus accessStatus = await Geolocator.RequestAccessAsync();

        if ( accessStatus == GeolocationAccessStatus.Allowed)
        {
            // Put all your Code here to access location services
            Geoposition geoposition = await geoLocator.GetGeopositionAsync();
            var position = geoposition.Coordinate.Point.Position;
            var latlong = string.Format("lat:{0}, long:{1}", position.Latitude, position.Longitude);
        }
        else if (accessStatus == GeolocationAccessStatus.Denied)
        {
               // No Accesss
        }
        else
        {
        }