LocationManager: le “réseau” fournisseur de toujours activé?

Je veux sélectionner un LocationProvider qui est activé dans Android. Le projet de construction de la cible est sous Android 2.1.

C'est ce que je fais dans 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();
//...

Maintenant, je passe à chaque interface réseau hors tension et réglez le mode avion sur mon téléphone (HTC Desire, Android 2.2). J'ai débrancher le périphérique USB. Il n'y a clairement pas de fournisseur de vivant qui pourraient fournir des données de localisation de l'appareil. J'ai demander spécifiquement getBestProvider pour activé les fournisseurs seulement, donc je m'attends à retourner la valeur null ou une chaîne vide dans ce cas. J'attends isProviderEnabled de fausse déclaration.

Le résultat réel est que getBestProvider renvoie "réseau" et isProviderEnabled rapports pour être "activé". Est "réseau" toujours activé", même lorsqu'elle n'est pas?

  • Cela peut aussi être causée par Android le cache d'emplacement réseau, car il est peu probable à changer rapidement en raison de la granularité grossière. C'est juste une supposition bien.
InformationsquelleAutor rgr_mt | 2011-02-05