我以这种方式启动位置提供程序:
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Intent locationIntent = new Intent(context, LocationReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, locationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER,
MINIMAL_TIME,
MINIMAL_DISTANCE,
pendingIntent);
然后,我的接收器是这样实现的:
public void onReceive(Context context, Intent intent) {
if(intent.hasExtra(LocationManager.KEY_LOCATION_CHANGED)) {
Location location = (Location)intent.getExtras().get(LocationManager.KEY_LOCATION_CHANGED);
我的问题如下:
在 Galaxy Nexus 上,接收器永远不会被触发。
如果我之前手动启动了谷歌地图应用程序,我成功地触发了它。然后,它可以正常工作。如果我重置手机(取出电池),则问题再次出现。
有什么解决办法吗?
我在 stackoverflow 上遇到了很多类似的问题,但从未找到有效的解决方案。
编辑:
我发现这个问题是在使用没有数据访问的 SIM 卡时发生的,即使 WiFi 已启用并连接。使用具有数据访问权限的 SIM 卡,不会发生此问题。
在 Nexus One 上,无论我使用什么 SIM 卡(有数据或没有数据),这个问题都不会发生。