如何解决当允许使用 GPS 时,是否有办法修复,必须在 Xamarin iOS 上再次按下代码执行按钮
我正在尝试制作一个按钮,从当前位置获取坐标,从 API 调用城市并在搜索栏中返回城市名称。
在按下按钮的那一刻,它首先请求 GPS 许可,但一旦启用它,它就会停止执行逻辑。
获得许可后,您需要再次按相同的按钮才能更改搜索引擎中的城市名称。有没有办法允许用户使用他的位置来执行代码而无需第二次按下。
代码:
async void OnGetGPSLocation(System.Object sender,System.EventArgs e)
{
var status = await Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>();
if (status == PermissionStatus.Denied && status == PermissionStatus.disabled)
{
_ = await Permissions.RequestAsync<Permissions.LocationWhenInUse>();
}
else
{
try
{
var location = await Geolocation.GetLastKNownLocationAsync();
if (location != null)
{
WeatherForecast16DaysCoordinates weatherBindingData = await _restServiceForecastCoords.GetCity(GenerateRequestUriForecast3(ConstantsForecast16DaysCoords.WeatherbitEndPoint3,location));
var cityCoord = weatherBindingData.CityName;
_cityEntry.Text = cityCoord;
}
}
catch (FeatureNotSupportedException fnsEx)
{
await displayAlert("Alert" + Environment.NewLine + "Something is wrong.","You have some errors: " + Environment.NewLine + fnsEx.ToString(),"OK");
}
catch (FeatureNotEnabledException fneEx)
{
await displayAlert("Alert" + Environment.NewLine + "Something is wrong.","You have some errors: " + Environment.NewLine + fneEx.ToString(),"OK");
}
catch (PermissionException pEx)
{
await displayAlert("Alert" + Environment.NewLine + "Something is wrong.","You have some errors: " + Environment.NewLine + pEx.ToString(),"OK");
}
catch (Exception ex)
{
await displayAlert("Alert" + Environment.NewLine + "Something is wrong.","You have some errors: " + Environment.NewLine + ex.ToString(),"OK");
}
}
}
我的 GPS 的第二个问题是 GPS 与用户设备的连接断开。如何直接转发到设置激活。
解决方法
当 GPS 与用户的设备断开连接时。如何直接转发到设置激活。
如果您想在用户拒绝时再次允许该权限,您可以检查以下代码。
var bundleId = NSBundle.MainBundle.BundleIdentifier;
var url = new NSUrl(UIApplication.OpenSettingsUrlString + "&path=LOCATION/" + bundleId);
if(UIApplication.SharedApplication.CanOpenUrl(url))
{
UIApplication.SharedApplication.OpenUrl(url);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。