如何确保 getLastLocation().isSuccessful()
How to make sure that getLastLocation().isSuccessful()
我正在尝试 getLastLocation()
,但有时它是 null
。发生这种情况时,我会转到 google 地图一秒钟,然后 return 转到我的应用程序,99% 都可以。还有一款应用程序仅适用于您所在的 return 城市,即使我的应用程序无法 getLastLocation()
,它也能正常工作。我注意到当我使用其他应用程序或 google 地图或天气应用程序时,位置图标会在短时间内出现在状态栏中,但当我使用我的应用程序时该图标永远不会出现,所以我'我猜这可能是问题所在?
我需要做什么来确保我的位置为 != null?
还有一件事,有时我得到了我的位置(纬度和经度),但由于 List 是空的,所以反向地理编码会被捕获?如何确保它始终不为空?
我使用的代码只是 android 开发人员的 copy/past。
如果您使用的是 Android 模拟器,除非您打开地图应用程序,否则预计位置不会更新。
为确保获得 non-null location
,您需要 request for location updates
你可以这样做
@SuppressLint("MissingPermission")
private fun getLastKnownLocation() {
// get last known location from fusedLocationProviderClient returned as a task
fusedLocationProviderClient.lastLocation
.addOnSuccessListener { lastLoc ->
if (lastLoc != null) {
// initialize lastKnownLocation from fusedLocationProviderClient
lastKnownLocation = lastLoc
} else {
// prompt user to turn on location
showLocationSettingDialog()
// when user turns on location trigger updates to get a location
fusedLocationProviderClient.requestLocationUpdates(
locationRequest, locationCallback, Looper.getMainLooper()
)
}
// in case of error Toast the error in a short Toast message
}
.addOnFailureListener {
Toast.makeText(requireActivity(), "${it.message}", Toast.LENGTH_SHORT).show()
}
}
这只是一个存根,您需要处理权限,创建 FusedLocationProviderClient
、LocationRequest
和 LocationCallback
Object。
您可能还需要提示用户打开位置设置。
请向我们展示您的地理编码代码以进一步阐述。
我正在尝试 getLastLocation()
,但有时它是 null
。发生这种情况时,我会转到 google 地图一秒钟,然后 return 转到我的应用程序,99% 都可以。还有一款应用程序仅适用于您所在的 return 城市,即使我的应用程序无法 getLastLocation()
,它也能正常工作。我注意到当我使用其他应用程序或 google 地图或天气应用程序时,位置图标会在短时间内出现在状态栏中,但当我使用我的应用程序时该图标永远不会出现,所以我'我猜这可能是问题所在?
我需要做什么来确保我的位置为 != null?
还有一件事,有时我得到了我的位置(纬度和经度),但由于 List 是空的,所以反向地理编码会被捕获?如何确保它始终不为空?
我使用的代码只是 android 开发人员的 copy/past。
如果您使用的是 Android 模拟器,除非您打开地图应用程序,否则预计位置不会更新。
为确保获得 non-null location
,您需要 request for location updates
你可以这样做
@SuppressLint("MissingPermission")
private fun getLastKnownLocation() {
// get last known location from fusedLocationProviderClient returned as a task
fusedLocationProviderClient.lastLocation
.addOnSuccessListener { lastLoc ->
if (lastLoc != null) {
// initialize lastKnownLocation from fusedLocationProviderClient
lastKnownLocation = lastLoc
} else {
// prompt user to turn on location
showLocationSettingDialog()
// when user turns on location trigger updates to get a location
fusedLocationProviderClient.requestLocationUpdates(
locationRequest, locationCallback, Looper.getMainLooper()
)
}
// in case of error Toast the error in a short Toast message
}
.addOnFailureListener {
Toast.makeText(requireActivity(), "${it.message}", Toast.LENGTH_SHORT).show()
}
}
这只是一个存根,您需要处理权限,创建 FusedLocationProviderClient
、LocationRequest
和 LocationCallback
Object。
您可能还需要提示用户打开位置设置。
请向我们展示您的地理编码代码以进一步阐述。