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】:
我从未尝试过这种方法,我通常创建一个实现LocationsSource
和LocationListener
的LocationProvider
。这是一个可以帮助您使用这种方法的示例:
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