在Android应用程序(Kotlin)中按下按钮时尝试获取最后一个已知位置

在Android应用程序(Kotlin)中按下按钮时尝试获取最后一个已知位置,android,kotlin,Android,Kotlin,正如标题所述,我想知道按钮按下时的最后一个位置,但它不起作用,我不确定出了什么问题。在我的Android清单中,我有: <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 我使用的两种方法是: private fun che

正如标题所述,我想知道按钮按下时的最后一个位置,但它不起作用,我不确定出了什么问题。在我的Android清单中,我有:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
我使用的两种方法是:

private fun checkPermissions() {
    val PERMISSION_REQUEST = 10
    val permissions = arrayOf(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION)
    requestPermissions(permissions, PERMISSION_REQUEST)
}
以及:


它不是100%确定你会得到最后一个已知的位置

在以下情况下,location对象可能为null:

  • “设备设置”中的“位置”已关闭。即使之前检索到了最后一个位置,结果也可能为null,因为 禁用位置也会清除缓存
  • 设备从未记录其位置,可能是新设备或已恢复出厂的设备 设置
  • 设备上的Google Play服务已重新启动,并且没有已请求位置的活动融合位置提供程序客户端 服务重新启动后。为了避免这种情况,您可以创建一个 新的客户端和请求位置更新自己

以下是来自官方文档的更多信息

您是否收到任何错误?没有错误。我的日志中没有显示任何内容
private fun checkPermissions() {
    val PERMISSION_REQUEST = 10
    val permissions = arrayOf(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION)
    requestPermissions(permissions, PERMISSION_REQUEST)
}
fun getLastKnownLocation() {
        fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
        checkPermissions()
        fusedLocationClient.lastLocation.addOnSuccessListener { location ->
                if (location != null) {
                    // use your location object
                    // get latitude , longitude and other info from this
                    longitude = location.longitude
                    latitude = location.latitude
                    d("getlastknown Lat:", latitude.toString())
                    d("getlastknown Lon:", longitude.toString())
                }
            }
    }