0

我以这种方式启动位置提供程序:

    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 卡(有数据或没有数据),这个问题都不会发生。

4

0 回答 0