Desidero selezionare un LocationProvider abilitato in Android. L'obiettivo di costruzione del progetto è Android 2.1.LocationManager: il provider "rete" è sempre abilitato?
Questo è quello che faccio in 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();
// ...
Ora, posso passare ogni interfaccia di rete off e impostare la modalità di volo sul mio dispositivo (HTC Desire, Android 2.2). Scollego il dispositivo da USB. Non esiste chiaramente alcun fornitore attivo che possa effettivamente fornire dati sulla posizione al dispositivo. Chiedo esplicitamente a getBestProvider solo per i provider abilitati, quindi mi aspetto che restituisca null o una stringa vuota in quel caso. Mi aspetto che isProviderEnabled restituisca false.
Il risultato effettivo è che getBestProvider restituisce "rete" e isProviderEnabled rapporti di essere "attivata". "Network" è sempre "abilitato" anche quando non lo è?
Questo potrebbe essere causato anche dalla posizione di rete del caching di Android, poiché è improbabile che cambi presto a causa della granularità grossolana. Questa è solo un'ipotesi. –