Quiero seleccionar un LocationProvider que esté habilitado en Android. El objetivo de compilación del proyecto es Android 2.1.LocationManager: ¿el proveedor de "red" siempre está habilitado?
Esto es lo que hago en 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();
// ...
Ahora, cada conmutador de interfaz de red apagado y el modo de vuelo en mi dispositivo (HTC Desire, Android 2.2). Desconecto el dispositivo de USB. Claramente, no hay ningún proveedor vivo que pueda proporcionar datos de ubicación al dispositivo. Solicito específicamente getBestProvider solo para proveedores habilitados, por lo que espero que devuelva null o una cadena vacía en ese caso. Espero isProviderEnabled para devolver falso.
El resultado real es que getBestProvider devuelve "red" y isProviderEnabled informes que pueda ser "activado". ¿Está "activada" la "red" incluso cuando no es así?
Esto también puede deberse a la ubicación de la red de caché de Android, ya que es poco probable que cambie pronto debido a la granularidad gruesa. Sin embargo, eso solo es una suposición. –