LocationManager: всегда ли включен «сетевой» провайдер?

Я хочу выбрать LocationProvider, который включен в Android. Целью сборки проекта является Android 2.1.

Это то, что я делаю в 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();
// ...

Теперь я выключаю все сетевые интерфейсы и устанавливаю режим полета на своем устройстве (HTC Desire, Android 2.2). Отключаю устройство от USB. Очевидно, что в настоящее время нет провайдера, который мог бы предоставить устройству данные о местоположении. Я специально прошу getBestProvider только для включенных провайдеров, поэтому я ожидаю, что в этом случае он вернет null или пустую строку. Я ожидаю, что isProviderEnabled вернет false.

Фактический результат состоит в том, что getBestProvider возвращает «сеть», а isProviderEnabled сообщает, что она «включена». "Сеть" всегда "включена" даже если его нет?

18
задан Cristian 5 February 2011 в 16:15
поделиться