2016-08-10 4 views
1

Хорошо, это странно, но мне, возможно, не хватает чего-то, что очевидно. Я в настоящее время доступа к местоположению пользователя с помощью этой функции:Android-приложение не отображается значок строки состояния при доступе к службам определения местоположения

public String[] getGeoCoords() { 
    String[] geoCoords = new String[2]; 
    String mprovider = locationManager.getBestProvider(criteria, false); 
    if (mprovider != null && !mprovider.equals("")) { 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      return geoCoords; 
     } 
     Location loc = locationManager.getLastKnownLocation(mprovider); 
     if(loc== null) 
      loc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
     if (loc == null) 
      loc = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER); 
     if (loc == null) 
      loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     geoCoords[0] = String.valueOf(loc.getLatitude()); 
     geoCoords[1] = String.valueOf(loc.getLongitude()); 
    } 
    return geoCoords; 
} 

Это возвращает местоположение, как ожидается, но значок, который вы обычно получаете при доступе местоположения пользователя не отображается в строке состояния.

В моем манифесте У меня есть

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 

Любые идеи?

+0

попытайтесь добавить это разрешение

ответ

0

Вы получаете доступ к getLastKnownLocation(), который возвращает последнее доступное местоположение напрямую, иначе оно возвращает null.

значок ваши говорят о приходит, когда вы запрашиваете для обновления местоположения, как это ..

LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE); 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() { 
      @Override 
      public void onLocationChanged(Location location) { 

      } 

      @Override 
      public void onStatusChanged(String provider, int status, Bundle extras) { 

      } 

      @Override 
      public void onProviderEnabled(String provider) { 

      } 

      @Override 
      public void onProviderDisabled(String provider) { 

      } 
     }); 

так в то время как он ищет спутники, это показывает, что значок GPS и когда он нашел один onLocationChanged(Location location) будет вызываться с захваченное местоположение.

+0

А как это имеет смысл! Спасибо. – MarkDev