问题描述
我有一个 Xamarin Forms 应用程序,我正在尝试使用 Xamarin Essentials 获取手机的位置。应用面向 Android 版本 11 (API 30)。我已经在清单文件中提供了所有位置权限。它在 Android 11 以下运行良好,但在 Android 11 上有问题。
对 var location = await Geolocation.GetLocationAsync(new GeolocationRequest(GeolocationAccuracy.Medium));
的每个请求都返回 null。
以下是请求权限和位置的代码:
private async Task locationPermission()
{
try
{
PermissionStatus whenInUsePermission = await Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>();
if (whenInUsePermission != PermissionStatus.Granted)
{
whenInUsePermission = await Permissions.RequestAsync<Permissions.LocationWhenInUse>();
}
PermissionStatus locationAlwaysPermission = await Permissions.CheckStatusAsync<Permissions.LocationAlways>();
if (locationAlwaysPermission != PermissionStatus.Granted)
{
locationAlwaysPermission = await Permissions.RequestAsync<Permissions.LocationAlways>();
}
if (whenInUsePermission == PermissionStatus.Granted || locationAlwaysPermission == PermissionStatus.Granted)
{
// do something
await GetDeviceLocation();
}
}
catch (Exception ex)
{
}
}
public async Task GetDeviceLocation()
{
try
{
PermissionStatus status = await Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>();
if (status != PermissionStatus.Granted)
{
PermissionStatus results = await Permissions.RequestAsync<Permissions.LocationWhenInUse>();
}
if (status == PermissionStatus.Granted)
{
var location = await Geolocation.GetLocationAsync(new GeolocationRequest(GeolocationAccuracy.Medium));
}
}
catch (Exception ex)
{
}
}
我已在清单文件中授予以下权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.location.network" android:required="false" />
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)