Intereting Posts
Может ли приложение Android напрямую подключаться к онлайн-базе данных mysql WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION никогда не запускается Использование пароля на основе шифрования в android SearchView в ActionBar с помощью поддержки-v7-appcompat Это правда? Разработка Android на базе Android AIR не имеет будущего Как узнать, сколько аккумуляторов используется моим Android-устройством на устройствах пользователя? Интерпретация многоуровневой трассировки производительности (Eclipse / Android) Использование Jenkins для создания проекта градиента android не выполняется Почему Android WebView отказывается от ввода пользователя? Как настроить SDK для Android для разработки командной строки в Linux? Захват изображения из галереи и камеры в android Лучшее место для хранения учетных данных пользователя в Android Как установить эффект пульсации на textview или изображение на Android? Отменить переход на предыдущий переход на Android Lollipop MediaPlayer.getCurrentPosition ()> mediaPlayer.getDuration () в конце воспроизведения mp3-файла

Getlastknownlocation всегда возвращает null после того, как я переустановил файл apk через eclipse

Недавно я создал простое приложение, чтобы получить местоположение gps и отображение на телефоне Android. В начале я могу получить местоположение после нескольких попыток, но после того, как я переустановил файл apk, getLastKnownLocation () всегда возвращает нулевое значение.

Используемая среда разработки: – прядильник API 10 2.3.6 – используется поставщик GPS

Ниже приведен код, который я применил в своем проекте Android:

public class MyActivity extends MapActivity{ protected void onCreate(Bundle savedInstanceState) { mapView = (MapView)findViewById(R.id.myTripMap); mapController = mapView.getController(); mapView.setSatellite(false); mapView.setStreetView(true); mapView.displayZoomControls(false); mapView.setBuiltInZoomControls(true);// mapView.setClickable(true); mapController.setZoom(14); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(true); criteria.setPowerRequirement(Criteria.POWER_LOW); provider = locationManager.getBestProvider(criteria, true); location = locationManager.getLastKnownLocation(provider); updateMyCurrentLoc(location); locationManager.requestLocationUpdates(provider, 2, 1,locationListener); } private final LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { updateMyCurrentLoc(location); } public void onProviderDisabled(String provider){ updateMyCurrentLoc(null); } public void onProviderEnabled(String provider){ } public void onStatusChanged(String provider, int status, Bundle extras){ } }; private void updateMyCurrentLoc(Location location) { if (location != null) { // other codes to get the address and display Toast.makeText(getBaseContext(), "provider used : "+provider).show(); //testing purpose } else { str = "No location found"; Toast.makeText(getBaseContext(), str, Toast.LENGTH_SHORT).show(); } } } 

Может ли кто-нибудь предложить возможное решение для решения нулевого значения, возвращаемого getLastKnownLocation ()? Любая помощь будет оценена. Благодарю.

Solutions Collecting From Web of "Getlastknownlocation всегда возвращает null после того, как я переустановил файл apk через eclipse"

getLastKnownLocation() возвращает последнее известное местоположение … после того, как вы переустановите приложение, у него не будет никакого последнего известного местоположения … так что это приведет к NPE … вместо этого используйте ниже код

 public Location getLocation() { try { locationManager = (LocationManager) mContext .getSystemService(LOCATION_SERVICE); // getting GPS status isGPSEnabled = locationManager .isProviderEnabled(LocationManager.GPS_PROVIDER); // getting network status isNetworkEnabled = locationManager .isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (!isGPSEnabled && !isNetworkEnabled) { // no network provider is enabled } else { this.canGetLocation = true; if (isNetworkEnabled) { locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); Log.d("Network", "Network Enabled"); if (locationManager != null) { location = locationManager .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } } } // if GPS Enabled get lat/long using GPS Services if (isGPSEnabled) { if (location == null) { locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); Log.d("GPS", "GPS Enabled"); if (locationManager != null) { location = locationManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } } } } } } catch (Exception e) { e.printStackTrace(); } return location; } 

Это сработало для меня … должно работать для вас тоже …

Вам просто нужно добавить еще одну строку в код

 if (locationManager != null) { locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); location = locationManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } else { Toast.makeText( mContext, "Location Null", Toast.LENGTH_SHORT).show(); } } 

Это решение – мое небольшое улучшение для кода @Karan Mer.

  public Location getLocation() { int MIN_TIME_BW_UPDATES = 10000; int MIN_DISTANCE_CHANGE_FOR_UPDATES = 10000; try { locationManager = (LocationManager) getApplicationContext() .getSystemService(LOCATION_SERVICE); boolean isGPSEnabled = locationManager .isProviderEnabled(LocationManager.GPS_PROVIDER); boolean isPassiveEnabled = locationManager .isProviderEnabled(LocationManager.PASSIVE_PROVIDER); boolean isNetworkEnabled = locationManager .isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (isGPSEnabled || isNetworkEnabled || isPassiveEnabled) { this.canGetLocation = true; // if GPS Enabled get lat/long using GPS Services if (isGPSEnabled && location == null) { locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); Log.d("GPS", "GPS Enabled"); if (locationManager != null) { location = locationManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); } } if (isPassiveEnabled && location == null) { locationManager.requestLocationUpdates( LocationManager.PASSIVE_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); Log.d("Network", "Network Enabled"); if (locationManager != null) { location = locationManager .getLastKnownLocation(LocationManager.PASSIVE_PROVIDER); } } if (isNetworkEnabled && location == null) { locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); Log.d("Network", "Network Enabled"); if (locationManager != null) { location = locationManager .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); } } }else{ return null; } } catch (Exception e) { e.printStackTrace(); } 

наслаждаться

Попробуйте следующий код

 LocationManager locationManager = (LocationManager) getActivity() .getSystemService(Context.LOCATION_SERVICE); String locationProvider = LocationManager.NETWORK_PROVIDER; Location lastlocation = locationManager.getLastKnownLocation(locationProvider); String CurLat = String.valueOf(lastlocation.getLatitude()); String Curlongi= String.valueOf(lastlocation.getLongitude()); 

Я получил такую ​​же проблему после переустановки через eclipse. Я решил перейти к настройкам Android / Security / app permissions и подтвердить разрешения на доступ к приложению.