0

我想找到设备的当前位置,无论它在哪里。下面的代码在户外运行良好,但在室内不会通知更新。

下面的代码无法访问NETWORK_PROVIDER,只返回GPS_PROVIDER和PASSIVE_PROVIDER,为什么?同一设备中的其他应用程序可以在室内定位我的位置。

if ( mLocationManager==null )
    mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

Location l;
for ( String provider : mLocationManager.getAllProviders() ){
    mLocationManager.requestLocationUpdates(provider, 1000, 1, locationListener);
    l = mLocationManager.getLastKnownLocation(provider);
    if ( isBetterLocation(l, currentBestLocation) )
    currentBestLocation = l;
}

当我将其更改为硬编码的 NETWORK_PROVIDER 时:

    if ( mLocationManager==null )
    mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

Location l;
List<String> providers = new ArrayList<String>();
providers.add(LocationManager.GPS_PROVIDER);
providers.add(LocationManager.NETWORK_PROVIDER);
//  for ( String provider : mLocationManager.getAllProviders() ){
for ( String provider : providers ){
    mLocationManager.requestLocationUpdates(provider, 1000, 1, locationListener);
    l = mLocationManager.getLastKnownLocation(provider);
    if ( isBetterLocation(l, currentBestLocation) )
    currentBestLocation = l;
}

抛出以下异常:

11-17 14:06:13.145: E/AndroidRuntime(7896): Caused by: java.lang.IllegalArgumentException: provider=network
4

0 回答 0