Android 通过网络请求位置更新时出现问题

Android 通过网络请求位置更新时出现问题,android,permissions,locationmanager,Android,Permissions,Locationmanager,我已经创建了一个服务并获取了用户的位置数据,这样我就可以向用户显示附近的位置。除了GPS,我还希望通过网络跟踪此服务,原因有二:1)GPS可能未启用。2) GPS需要相当长的时间才能锁定我的测试手机 当我的服务执行以下行时: mNETEnabled = mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 我得到以下错误: 11-24 14:00:41.693: ERROR/LocationManagerSe

我已经创建了一个服务并获取了用户的位置数据,这样我就可以向用户显示附近的位置。除了GPS,我还希望通过网络跟踪此服务,原因有二:1)GPS可能未启用。2) GPS需要相当长的时间才能锁定我的测试手机

当我的服务执行以下行时:

mNETEnabled = mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
我得到以下错误:

11-24 14:00:41.693: ERROR/LocationManagerService(51): isProviderEnabled got exception:
11-24 14:00:41.693: ERROR/LocationManagerService(51): java.lang.IllegalArgumentException: provider=network
11-24 14:00:41.693: ERROR/LocationManagerService(51):     at com.android.server.LocationManagerService._isProviderEnabledLocked(LocationManagerService.java:1385)
11-24 14:00:41.693: ERROR/LocationManagerService(51):     at com.android.server.LocationManagerService.isProviderEnabled(LocationManagerService.java:1359)

为什么会这样?我是不是错过了舱单上的许可?我可以访问清单中的位置。

安全和位置
首选项设置中使用无线网络
设置。启用了吗?

可能是现在没有AGP(这会很奇怪)。但是您可以使用
LocationManager.getAllProviders()
检查并查看哪些提供者返回。您也可以只使用
LocationManager.getBestProvider(标准,布尔启用)

您在emulator上运行的api级别是13还是更高

这也发生在电话上;它没有连接到无线路由器。但是,是的,已经检查过了。你在检查提供商是否提供了服务吗?哦,哎呀,我搞错了。此错误发生在isProviderEnabled调用上。我将更新主要帖子来反映这一点。呵呵,很容易做到。API参考称,如果提供程序为null或不存在,则会发生异常。我不确定这意味着什么,以及为什么它不能在任何实际设备上工作。我有两部安卓手机(三星矩,它们都是同一型号),但两部都不能用。我还应该指出,它过去是有效的。我只是注意到它不再是了,并且看到了错误;所以我必须假设我的代码中有一个新的bug,或者SDK中有一个新的bug。我现在没有带手机,但是在模拟器上调用getAllProviders()会返回一个只包含“gps”的列表。这是否正常,我不知道。我已经在运行2.0的模拟器上进行了测试,但没有收到错误(我以前在2.1上测试过),我在ICS模拟器上遇到了这个问题。是否有任何解决方法?若要解决此问题,请注册如下更新:for(字符串提供程序:locationManager.getAllProviders()){locationManager.requestLocationUpdates(提供程序,0,0,this);}