GetLastLocation 始终返回 null

Posted

技术标签:

【中文标题】GetLastLocation 始终返回 null【英文标题】:GetLastLocation always returns null 【发布时间】:2015-08-15 11:37:42 【问题描述】:

按照here 的解释,我尝试访问片段中的最后一个已知位置

在我的 onCreate 中:

public void onCreate(@Nullable Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build();

在我的简历中:

@Override
public void onResume() 
    super.onResume();
    mGoogleApiClient.connect();

Fragment 实现 GoogleApiClient.ConnectionCallbacks、GoogleApiClient.OnConnectionFailedListener

并且 on Connected 被调用!!

@Override
public void onConnected(Bundle bundle) 
    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
            mGoogleApiClient);
    if (mLastLocation != null) 
    

并且 mLastLocation 始终为空。每次我尝试调用 GetLastLocation() 时,它都会返回 null。

知道为什么吗?

【问题讨论】:

getLastLocation() 很容易返回 null。它也不会请求新的位置,所以即使你得到一个位置,它也可能很旧,并且不能反映当前位置。最好注册一个监听器,即使您在收到第一个 onLocationChanged() 回调后取消注册也是如此。看看这个答案中的代码,它是注册位置监听器的一个非常精简和基本的实现:***.com/questions/30191047/… 【参考方案1】:

我从未尝试过这种方法,我通常创建一个实现LocationsSourceLocationListenerLocationProvider。这是一个可以帮助您使用这种方法的示例: How to get My Location changed event with Google Maps android API v2?

【讨论】:

以上是关于GetLastLocation 始终返回 null的主要内容,如果未能解决你的问题,请参考以下文章

Android studio 不检查 mFusedLocationProviderClient.getLastLocation().addOnSuccessListener 并返回当前位置 null

从 Settings Api 对话框打开位置后,getLastLocation() 返回 null

FusedLocationApi.getLastLocation 总是返回 null(android 6.0,api 23)

Android FusedLocationProviderClient getLastLocation 总是第一次返回 null

getLastLocation API 如何在内部工作?即使位置设置为 ON,它也会返回 null

GoogleApiClient 中的 getLastLocation() 始终为空