不能从 NETWORK_PROVIDER获得 gps坐标

我要从 NETWORK_PROVIDER中获得gps坐标,用的以下的代码实现这个功能。

    LocationListener mlocListener = new MyLocationListener();

    mlocManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener);

    //init();

}

/* Class My Location Listener */

public class MyLocationListener implements LocationListener

{

@Override

public void onLocationChanged(Location loc)

{

    //_pd.dismiss();

loc.getLatitude();

loc.getLongitude();

String Text = "My current location is: " +"Latitud = " + loc.getLatitude() +"Longitud ="  + loc.getLongitude();
txtInfo.setText(Text);

Toast.makeText( getApplicationContext(),Text,Toast.LENGTH_SHORT).show();

}

@Override

public void onProviderDisabled(String provider)

{

Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT ).show();

}

@Override

public void onProviderEnabled(String provider)

{

Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();

}

@Override

public void onStatusChanged(String provider, int status, Bundle extras)

{

}
}

但是,使用上面的方法有时候能获得gps坐标,有时候又获取不了,为什么呢?

使用GPS获取 Geo Fix 需要很长的时间,因此你需要在无线网络和GPS之间切换来获得可靠的Geo坐标。要首先检查无线网络看是否启用,然后返回给GPS provider。
相关资料:Android-location-providers-gps-network-passive

这是因为有些locations不能显示经纬度。这不是一个大问题,你只需要检查你的lat和lng是否返回null。
如果返回null你只需要显示一个简单的消息。