任何人都可以解释一下这个错误是什么?我只获得了android 4 +而不是下面的内容:
E/AndroidRuntime(891): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.getaddress/com.example.getaddress.MainActivity}: java.lang.IllegalArgumentException: requested provider network doesn't exisit
答案 0 :(得分:24)
似乎在Android 4+模拟器中无法访问NETWORK_PROVIDER位置提供程序没有Google API (实际上我还没有测试过所有这些,请参阅下面的) 。我测试的真实设备都可以使用它(但它们都有Google服务,使用自定义,干净的Android版本进行测试会很有趣,可能还有使用Kindles?)。
这不是关于在设备设置中启用/禁用提供程序的问题,它在模拟器中根本不存在。
基本上这段代码:
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0,mLocListener);
将导致以下异常:
java.lang.IllegalArgumentException: provider doesn't exisit: null
所有Android 4+裸模拟器(与Google绑定模拟器相对)
注意:“exisit”中的拼写错误位于实际日志行中。
使用以下命令获取目标设备上所有位置提供程序的列表:
List<String> providers = locationManager.getAllProviders();
我可以看到网络提供商出现在
上但不是
我的猜测是,由于非技术原因,Google未允许AOSP中的网络位置服务,并将其使用限制在4.2(?)的操作系统版本中。< / p>
我不知道在非Google设备(例如Kindle)上是否有替代网络位置服务。
我不希望这会对大多数智能手机和平板电脑产生任何影响。但它可以
一个简单的测试,例如:
locationManager.getAllProviders().contains(LocationManager.NETWORK_PROVIDER)
可以毫不费力地告诉您网络提供商是否存在于设备上。请注意,如果它存在,但用户尚未激活它,则LocationListener将在位置请求后收到 onProviderDisabled 回调。