【问题标题】:How to make sure that getLastLocation().isSuccessful()如何确保 getLastLocation().isSuccessful()
【发布时间】:2021-06-10 14:38:48
【问题描述】:

我尝试getLastLocation(),但有时是null。发生这种情况时,我会去谷歌地图一秒钟,然后返回我的应用程序,99% 的情况下就可以了。还有一个应用程序只返回您所在的城市,即使我的应用程序不能getLastLocation(),它也可以工作。我注意到当我使用其他应用程序、谷歌地图或天气应用程序时,状态栏中会出现一小段时间位置图标,但是当我使用我的应用程序时,该图标永远不会出现,所以我猜这可能有问题吗?

我需要做些什么来确保我的位置为 != null?

还有一件事,有时我会得到我的位置(纬度和经度),但反向地理编码会因为 List 为空而被捕获?如何确保它始终不为空?

我使用的代码只是 android 开发人员的复制/过去。

【问题讨论】:

    标签: android geolocation location reverse-geocoding


    【解决方案1】:

    如果您使用的是 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()
    
                }
        }
    

    这只是一个存根,您需要处理权限,创建FusedLocationProviderClientLocationRequestLocationCallbackObject。

    您可能还需要提示用户开启位置设置

    请向我们展示您的地理编码代码以进一步详细说明。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    相关资源
    最近更新 更多