LocationManager: Ist der "Netzwerk" -Anbieter immer aktiviert?
Ich will wählen Sie ein LocationProvider, ist aktiviert in Android. Das Projekt target build ist Android 2.1.
Dies ist, was ich 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();
//...
Nun, ich schalte jedes Netzwerk-interface aus, und stellen Sie den flight mode auf meinem Gerät (HTC Desire, Android 2.2). Ich trennen Sie das Gerät vom USB. Es ist eindeutig kein provider lebt, der könnte eigentlich auch Standort-Daten an das Gerät. Ich speziell Fragen getBestProvider für aktivierte Anbieter, nur, so ich erwarten, dass es wieder null oder eine leere Zeichenfolge in diesem Fall. Ich erwarte, dass isProviderEnabled den Wert false zurück.
Dem tatsächlichen Ergebnis ist, dass getBestProvider gibt "Netzwerk" und isProviderEnabled meldet "aktiviert". Ist "Netzwerk" immer "enabled", auch wenn Sie gar nicht?
InformationsquelleAutor der Frage rgr_mt | 2011-02-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem einige Graben ich kann die Antwort auf meine eigene Frage. Zuerst habe ich versucht den Flugmodus mit:
Den ConnectivityManager Berichte richtig "falsch", da es keine Verbindung. Dies ist nützlich, um zu überprüfen, ob Sie tatsächlich haben ein Netzwerk und somit einen Netzwerk-basierten Standort-Anbieter. Dann nahm ich einen zweiten Blick auf mein Gerät Einstellungen. Und hier ist die Antwort:
berichten, wenn der Benutzer überprüft hat, die Geräte-Einstellung (in meinem Fall unter Position - Meine Position). Wenn Sie die Markierung für alle Anbieter gibt es zurück null als erwartet. Es ist tatsächlich dokumentiert in isProviderEnabled() aber ich muss es übersehen haben . Der Fall ist abgeschlossen.
InformationsquelleAutor der Antwort rgr_mt
Versuchen, diese
InformationsquelleAutor der Antwort Ollie C
Erhalten Sie immer true als Antwort, weil Sie gewählt haben, die "Netzwerke" - option im Menü Einstellungen. Ich hatte auch dieses problem, bis ich es herausfand. Ich hoffe, Sie finden diese nützlich.
InformationsquelleAutor der Antwort fergerm