【问题标题】:Exception on getting location in UWP在 UWP 中获取位置的异常
【发布时间】:2019-08-21 13:42:39
【问题描述】:

我有一个Xamarin.Forms application,它使用Xamarin.EssentialsPlugin.Permissions 插件。

permissionStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Location);

UWP中,抛出异常

“服务器执行失败”。

任何想法可能导致它,以及如何解决这个问题?

【问题讨论】:

  • ,如果我在package.appxmanifest中检查Location,我使用Geolocation.GetLocationAsync()我没有发现任何错误,我可以得到纬度和经度。那么您能提供一个可以在此处重现此问题的演示吗?
  • @Cherry Bu 嗯,事情发生了变化,我更新了我原来的问题。
  • ,根据你的代码,你想为你的项目获取位置权限吗?如果是,请看我的回复。

标签: xamarin.forms uwp permissions xamarin.essentials


【解决方案1】:

根据你的代码,我猜你想请求并检查位置权限,如果是,你可以看看下面的代码来请求位置权限。

 try
        {
            var status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Location);
            if (status != PermissionStatus.Granted)
            {
                if(await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Location))
                {
                    await DisplayAlert("Need location", "Gunna need that location", "OK");
                }

                var results = await CrossPermissions.Current.RequestPermissionsAsync(Permission.Location);
                status = results[Permission.Location];
            }

            if (status == PermissionStatus.Granted)
            {
                var results = await CrossGeolocator.Current.GetPositionAsync(TimeSpan.FromSeconds(10));
                LabelGeolocation.Text = "Lat: " + results.Latitude + " Long: " + results.Longitude;
            }
            else if(status != PermissionStatus.Unknown)
            {
                await DisplayAlert("Location Denied", "Can not continue, try again.", "OK");
            }
        }
        catch (Exception ex)
        {

            LabelGeolocation.Text = "Error: " + ex;
        }

请在 package.appxmanifest 之前检查 Location。

【讨论】:

  • 但是我对第一个语句有问题。您可以看到您的代码在那一行与我的代码没有什么不同...而且我确实检查了位置...
  • @David,我不这么认为,因为CrossPermissions.Current.CheckPermissionStatusAsync()方法中的参数类型是Permission,所以如果要获取Location权限,应该是Permission.Location。如果你想获得位置权限,我建议你可以先试试我的代码。
  • 我通过的“权限”实际上设置为Permission.Location。这部分代码只是不包含在我的问题中。
  • @David,现在,我对你的问题感到困惑,你试试我的代码吗?
  • 你的代码的第一行和我的一样。那行会引发异常。没有必要再进一步了,因为执行永远不会通过第一行 (CrossPermissions.Current.CheckPermissionStatusAsync)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 2021-09-13
  • 1970-01-01
  • 2015-08-28
相关资源
最近更新 更多