In my app im getting the phone s location via this function, but when I restart the phone and start the app I get null from this method. Is there something that im missing or doing wrong? What should I do to fix this issue?
Here is the function im using:
public void getAddress() { Log.v("--", "get address 1"); boolean isGPSProviderEnabled = locationManager .isProviderEnabled(LocationManager.GPS_PROVIDER); boolean network_enabled = locationManager .isProviderEnabled(LocationManager.NETWORK_PROVIDER); Log.v("--", "get address 31 " + isGPSProviderEnabled + " gps - " + isConnectedToNetwork()); if (isGPSProviderEnabled || network_enabled) { Log.v("--", "get address 2"); Criteria c = new Criteria(); Log.v("--", "provider " + locationManager.getBestProvider(c, true)); locationManager.requestSingleUpdate( locationManager.getBestProvider(c, true), mLocationListener, Looper.myLooper()); location = locationManager.getLastKnownLocation(locationManager .getBestProvider(c, true)); if (location == null) { Log.v("--", "get address 6"); // TODO check if this is working locationManager.requestSingleUpdate( locationManager.getBestProvider(c, true), mLocationListener, Looper.myLooper()); locationManager.requestLocationUpdates( locationManager.getBestProvider(c, true), 0, 0, mLocationListener); Location oldLocation = new Location(""); oldLocation.setLatitude(new Double(prefs.getString( Constants.LATITUDE, "48.51"))); oldLocation.setLongitude(new Double(prefs.getString( Constants.LONGITUDE, "2.20"))); populateList(oldLocation); // locationManager.requestLocationUpdates( // locationManager.getBestProvider(c, true), 1000, 100, // mLocationListener); } else { Log.v("--", "get address 3"); if (isConnectedToNetwork()) { new AsyncTask<Void, Void, Void>() { protected Void doInBackground(Void... params) { try { com.quanticapps.athan.utils.Geocoder geocoder = new com.quanticapps.athan.utils.Geocoder( Main.this); GeocoderModel geocoderModel = geocoder .getFromLocation( location.getLatitude(), location.getLongitude(), 5); city = geocoderModel.getCity(); country = geocoderModel.getCountry(); prefs.edit().putString(Constants.CITY, city) .apply(); Log.v("--", "get address 4"); } catch (IOException e) { Log.v("--", "get address 11"); e.printStackTrace(); } catch (LimitExceededException e) { Log.v("--", "get address 12"); e.printStackTrace(); } return null; }; protected void onPostExecute(Void result) { prefs.edit().putString(Constants.COUNTRY, country) .apply(); prefs.edit().putString(Constants.CITY, city) .apply(); populateList(location); }; }.execute(); } else { city = null; Log.v("--", "get address 33 " + location.getLatitude()); populateList(location); } } } else { Log.v("--", "get address 5"); startGpsEnableDialog(); } }
and my location listener:
private final LocationListener mLocationListener = new LocationListener() { @Override public void onLocationChanged(final Location location) { // TODO Log.v("--", "get address 121"); if (location != null) { Main.this.location = location; getAddress(); } } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub Log.v("--", "provider enabled"); } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub Log.v("--", "provider disabled"); } };