问题描述
我只想得到位置在Android应用程序一次。这是我想获得位置
AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
在我的片段
private lateinit var fusedLocationClient: FusedLocationProviderClient
// in onCreateView
fusedLocationClient = LocationServices.getFusedLocationProviderClient(requireActivity())
// in function after checking permission
fusedLocationClient.lastLocation
.addOnSuccessListener { location: Location? ->
if (location != null) {
}
}
现在位置被返回null
每次除非我打开谷歌地图&运行我的应用程序则返回位置正确地
现在我知道我需要在调用 requestLocationUpdates
之前调用 lastLocation
,但是我无法在 kotlin
中找到任何解释如何将它用于 just one time
的解决方案。每一个解决方案暗示连连获取位置。
反正是有,我可以用requestLocationUpdates
只是为了获得位置一次?
解决方法
最新版play-services-location
添加方法getCurrentLocation()
fusedLocationClient.getCurrentLocation(LocationRequest.PRIORITY_HIGH_ACCURACY,null)