Chcę wybrać LocationProvider, który jest włączony w systemie Android. Celem budowy projektu jest system Android 2.1.Menedżer lokalizacji: czy dostawca "sieci" jest zawsze włączony?
To jest to, co robię w onCreate().
// ...
LocationManager locationMgr = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.NO_REQUIREMENT);
criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
criteria.setCostAllowed(false);
String bestProvider = locationMgr.getBestProvider(criteria, true);
Toast.makeText(getApplicationContext(), "Provider = " + bestProvider + " enabled= " + locationMgr.isProviderEnabled(bestProvider), Toast.LENGTH_LONG).show();
// ...
Teraz przełączam każdy interfejs sieciowy i ustaw tryb samolotowy na moim urządzeniu (HTC Desire, Android 2.2). Odłączam urządzenie od USB. Nie ma oczywiście żywego dostawcy, który mógłby rzeczywiście dostarczyć dane o lokalizacji do urządzenia. Pytam konkretnie getBestProvider tylko dla dostawców z włączoną obsługą, więc oczekuję, że w takim przypadku zwróci wartość null lub pusty ciąg znaków. Oczekuję, że isProviderEnabled zwróci false.
Rzeczywisty wynik jest, że getBestProvider „sieć” powraca i isProviderEnabled raporty to być „włączone”. Czy "sieć" jest zawsze "włączona", nawet jeśli nie jest?
Przyczyną może być również lokalizacja sieciowa pamięci podręcznej Androida, ponieważ jest mało prawdopodobne, aby uległa zmianie wkrótce ze względu na zgrubną ziarnistość. Ale to tylko przypuszczenie. –