我在Android 5.0.2设备上的某些地理位置代码有问题。该代码要求进行一次更新,但从未得到更新。从未调用singleUpdateReceiver
。
有问题的代码(摘要):
Criteria criteria;
PendingIntent singleUpdatePI;
singleUpdatePI = PendingIntent.getBroadcast(
locationService, 0,
new Intent(SINGLE_LOCATION_UPDATE_ACTION),
PendingIntent.FLAG_CANCEL_CURRENT
);
registerReceiver(
singleUpdateReceiver,
new IntentFilter(SINGLE_LOCATION_UPDATE_ACTION)
);
...
criteria = new Criteria();
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setSpeedRequired(true);
criteria.setCostAllowed(true);
...
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setHorizontalAccuracy(Criteria.ACCURACY_HIGH);
criteria.setPowerRequirement(Criteria.POWER_HIGH);
locationManager.requestSingleUpdate(criteria, singleUpdatePI);
为什么会这样?在Android 7模拟器上,代码可以正常工作,并收到更新。
因为从未调用过singleUpdateReceiver,所以我的应用程序永远不会退出固定模式。
更新:
文档说,自API级别9起