.NET MAUI调用Android原生获取MSL海拔报错:未设置平均海平面高度
.NET MAUI调用Android原生接口获取MSL海拔失败问题
我尝试通过.NET MAUI调用Android原生接口获取某位置的平均海平面(MSL)海拔,首先使用GetLastKnownLocation方法:
Permissions.RequestAsync<Permissions.LocationWhenInUse>().Wait(); var locationManager = (LocationManager)MauiApplication.Current .GetSystemService(Context.LocationService)!; var location = locationManager.GetLastKnownLocation(LocationManager.GpsProvider); var mslLocation = location.MslAltitudeMeters;
运行时抛出异常:
Java.Lang.IllegalStateException: 'The Mean Sea Level altitude of this location is not set.'
之后我尝试用RequestLocationUpdates监听位置更新:
locationManager.RequestLocationUpdates(LocationManager.GpsProvider, 100L, 0f, new LocationListener()); class LocationListener : Java.Lang.Object, ILocationListener { public void OnLocationChanged(global::Android.Locations.Location location) { var mslLocation = location.MslAltitudeMeters; } public void OnProviderDisabled(string provider) { } public void OnProviderEnabled(string provider) { } public void OnStatusChanged(string? provider, [GeneratedEnum] Availability status, Bundle? extras) { } }
我的AndroidManifest.xml配置如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:allowBackup="true" android:icon="@mipmap/appicon" android:supportsRtl="true"></application> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> </manifest>
两种方式均无法获取MSL海拔,请问我是否遗漏了配置或权限?在Java Location类官方文档中未找到相关说明。
内容的提问来源于stack exchange,提问作者Stevie
相关产品推荐
相关产品推荐

