我遇到了一个问题,当我试图获取位置信息时,系统会抛出TaskCancel异常。当时,我试着在不连接互联网的情况下打开谷歌地图(有人回答可以通过打开谷歌地图来解决),然后返回应用程序再次尝试获取位置。结果仍然是将异常返回给我。然后,我让智能手机连接到互联网,然后再次打开谷歌地图,然后再回到应用程序中获取位置。我现在可以获取位置信息了!
无法获得gps定位的问题并不是在每一部智能手机中都会发生,而是在装有Android11的Vivo V2050中发生。
有人知道这个问题吗?如何修复它?
try
{
var locator=CrossGeolocator.Current;
var position = await locator.GetPositionAsync(timeoutMillseconds: 10000);
var long=position.Longitude;
}
catch (TaskCancelException ex)
{
}发布于 2021-10-06 06:34:26
根据您提供的代码,您将使用Xam.Plugin.Geolocator。
现在,我们建议改用Xamarin.Essentials。
在请求权限并在清单文件中声明硬件功能后,您可以使用以下代码来获取当前位置。
CancellationTokenSource cts;
async Task GetCurrentLocation()
{
try
{
var request = new GeolocationRequest(GeolocationAccuracy.Medium, TimeSpan.FromSeconds(10));
cts = new CancellationTokenSource();
var location = await Geolocation.GetLocationAsync(request, cts.Token);
if (location != null)
{
Console.WriteLine($"Latitude: {location.Latitude}, Longitude: {location.Longitude}, Altitude: {location.Altitude}");
}
}
catch (FeatureNotSupportedException fnsEx)
{
// Handle not supported on device exception
}
catch (FeatureNotEnabledException fneEx)
{
// Handle not enabled on device exception
}
catch (PermissionException pEx)
{
// Handle permission exception
}
catch (Exception ex)
{
// Unable to get location
}
}
protected override void OnDisappearing()
{
if (cts != null && !cts.IsCancellationRequested)
cts.Cancel();
base.OnDisappearing();
}有关更多详细信息,您可以查看MS文档。https://docs.microsoft.com/en-us/xamarin/essentials/geolocation?tabs=android
https://stackoverflow.com/questions/69450717
复制相似问题