如何避免 android 中的用户位置结果为空?

How to avoid getting null on user location result in android?

在我的应用程序中,我使用 FusedLocationProviderClient 来获取用户每次通过 mFusedLocationClient.getLastLocation().addOnCompleteListener() 进入应用程序时的位置。但有时结果为空,我在 [=] 中使用 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 16=] 我可以得到用户的位置,即使它不是那么正确吗?因为应用程序的逻辑取决于那个位置,我不需要在地图上显示它或类似的东西,只需提前获得 location.Thx

不要使用 getLastLocation()。如果它当前没有位置,总是有机会让它 return null 。使用 requestUpdates 或 requestSingleUpdates - 当调用这些回调时,位置保证是非空的。 getLastLocation() 只能用作提高速度的优化,不能依赖它。

按照以下示例操作,您的应用程序一定会如您所愿地运行。我最近使用了这段代码,它就像一个魅力。

您唯一应该知道的是,要使位置更新真正起作用(以获取真实的纬度和经度值),您应该启用 "google play services"。可能有几种方法可以做到这一点,但也许最简单的方法是在您的设备上打开 "settings" 并且可能在 "security" 或 "permissions" 下的某个地方(取决于您的 android 发行版) 找到 "google play services" 并授予它所需的权限。

https://github.com/googlesamples/android-play-location/tree/master/LocationUpdates