1

在我的应用程序中,我使用了 requestSingleUpdate() 方法,它在所有设备中运行良好,但在某些设备 2.3 android OS 版本中,GPS 没有获取位置。这是代码,

Intent intentp = new Intent(context, MyLocationReceiver.class);
pendingIntent = PendingIntent.getBroadcast(context, 0, intentp,PendingIntent.FLAG_UPDATE_CURRENT);
criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
provider = locationManager.getBestProvider(criteria, true);
if(provider != null)
{               
    locationManager.requestSingleUpdate(provider, pendingIntent);
}

为什么带有 GPS 提供程序的 requestSingleUpdate() 方法在某些设备中不起作用?特别不适用于 2.3.6 操作系统版本 GT - S5830 型号三星设备和 MicroMax A57。

4

2 回答 2

1

Prefer LocationClient over LocationManager to retrieving the current location.

It uses the Google Play Services (available in practically 100% of the devices) it's much more powerful and usually solves many problems. Since I made the switch, I've never had any sort of location problems.

于 2013-08-06T14:48:00.803 回答
1
criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
provider = locationManager.getBestProvider(criteria, true);
if(provider != null)
{               
    locationManager.requestSingleUpdate(provider, pendingIntent);
}

正在向 android 询问最佳位置提供程序,无论是 wi-fi、cell 还是 gps。如果用户没有启用位置服务,则操作系统不会知道最佳提供者,因此提供者将返回 null。

您对此无能为力,这取决于用户的操作系统设置以及他们是否选择将位置信息提供给应用程序

- 编辑 -

在调用 getBestProvider() 时,您只要求启用提供程序(这是您设置为 true 的方法调用中的第二个参数)。如果用户禁用了所有提供程序,您将获得 null。

于 2013-08-06T14:09:42.957 回答