我想选择在Android中启用的LocationProvider。项目构建目标是Android 2.1。LocationManager:是否始终启用“网络”提供程序?
这就是我在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报告“启用”它。即使“网络”不是,“网络”始终“启用”?
这也可能是由于Android缓存网络位置造成的,因为粗略粒度,它不可能很快发生变化。这只是一个猜测。 –