【问题标题】:Location is Returning null LocationManager.getlastlocation Gps ProviderLocation is Returning null LocationManager.getlastlocation Gps Provider
【发布时间】:2016-06-19 09:47:39
【问题描述】:

我已经搜索并实施了各种方法来获取我的位置。但无论我做什么,该位置始终为空。它是空的。我的应用程序几乎完成了,这是唯一出现问题的是我的代码。

    public Location getlocation() {
    Location loc = null;
    LocationManager lm = (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE);
    if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
      if(lm.isProviderEnabled(LocationManager.GPS_PROVIDER)){
      loc =  lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        }
    }
return loc;
}
  @Override
public void onMapReady(GoogleMap googleMap) {
    setmap(googleMap);
}

public void setmap(final GoogleMap map) {
    googlemap = map;
    if (googlemap != null) {
        if (sharedPreferences.getBoolean(CustomAlarm.satellite, false)) {
            googlemap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
        } else {
            googlemap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        }
        if(getlocation() == null){
            Toast.makeText(getContext(),"You don't live on this earth or Location null",Toast.LENGTH_LONG).show();
        }

在评论之前请注意这一点。

1- 我正在我的手机上调试三星 j1 api 级别 19。

2- 已启用位置和 gps。

3- 尝试在 googlemaps 中定位我的位置。

4- 还启用了 Google 位置记录。

但没有什么请帮忙。

【问题讨论】:

    标签: android gps google-maps-android-api-2


    【解决方案1】:

    曾经遇到过同样的问题。 我通过请求位置更新解决了这个问题。

    Google recommendations about it

    一段时间后,位置被捕获。

    【讨论】:

      【解决方案2】:

      您在此请求您的位置

      if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { }
      

      这意味着如果权限被授予。

      loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 行在授予权限 IS 时永远不会执行(可能是这样),因此将保持与您之前分配的相同值 Location loc = null; 所以为空。

      您应该将 if 语句更改为

      if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
      

      这意味着如果授予位置权限IS,则给我位置。

      【讨论】:

      • 然后lm.isProviderEnabled(LocationManager.GPS_PROVIDER) 返回假。您不能检查loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 行是否正在执行吗?
      • 刚刚添加了一个检查语句它不是假的。
      • 所以loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 行被执行了?
      • 但以前不是对的吧?因为您在第一个 if 语句中将 != 更改为 ==,所以我不知道如果您当时没有检查它,您怎么能如此确定。 .. 无论如何,loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 返回 null 的唯一方法是在未启用 LocationManager.GPS_PROVIDER 时。
      猜你喜欢
      • 2021-05-03
      • 2015-04-14
      • 1970-01-01
      • 1970-01-01
      • 2022-12-26
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多