android getlastknownlocation always null in emulator

android, java

Solution

`getLastKnownLocation()` will return `null` in general, if no app has requested a location fix from your desired provider recently.

On the emulator, it seems to take it one step further: you do not get a location unless one has been delivered to the emulator since your app has called `requestLocationUpdates()`.

The general pattern for using `getLastKnownLocation()`, if you want decent odds of getting an actual `Location`, is to use `requestLocationUpdates()` and `removeLocationUpdates()` to ensure that `LocationManager` is actively seeking locations via your chosen provider. Of course, you could also use `LocationListener` and `onLocationChanged()`, rather than `getLastKnownLocation()`, if you so chose.

Problem

It seems a common issue, but i really can't understand why is it happening even though i read ton of simialr issues. I am playing with a basic location class on a emulator device, i set everything - permissions (FINE and COARSE) , i have set the coordinates in the DDMS i also tried using the telnet and then <geo fix ...> , but no matter what it always crashes witth nullpointer exception on the line with getlastknownlocation, any ideas whats wrong here ? ``` public class MainActivity extends Activity implements LocationListener { private static LocationManager ok; private Location L; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ok=(LocationManager)this.getSystemService(ok.GPS_PROVIDER); L=ok.getLastKnownLocation(ok.GPS_PROVIDER); } @Override public void onLocationChanged(Location Loc) { try { double latop=Loc.getLatitude(); double longe=Loc.getLongitude(); Log.i("OK", "and"+longe+""+latop); } catch (NullPointerException e) { } } ```

Original source