From a2c2e48719a4068c10f98980575e2f15e102ac32 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Sun, 3 Jul 2016 21:29:02 +0200 Subject: [PATCH] fix NPE in settings when last known position is null This is not a proper fix, we would have to request a location first. I just had a last known position when testing before. :/ Issue #346 --- .../activities/SettingsActivity.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java index 8073d86f..b9d1eea2 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java @@ -142,15 +142,19 @@ public class SettingsActivity extends AbstractSettingsActivity { String provider = locationManager.getBestProvider(criteria, false); if (provider != null) { Location location = locationManager.getLastKnownLocation(provider); - String latitude = String.format(Locale.US, "%.6g", location.getLatitude()); - String longitude = String.format(Locale.US, "%.6g", location.getLongitude()); - LOG.info("got location. Lat: " + latitude + " Lng: " + longitude); - EditTextPreference pref_latitude = (EditTextPreference) findPreference("location_latitude"); - EditTextPreference pref_longitude = (EditTextPreference) findPreference("location_longitude"); - pref_latitude.setText(latitude); - pref_longitude.setText(longitude); - pref_latitude.setSummary(latitude); - pref_longitude.setSummary(longitude); + if (location != null) { + String latitude = String.format(Locale.US, "%.6g", location.getLatitude()); + String longitude = String.format(Locale.US, "%.6g", location.getLongitude()); + LOG.info("got location. Lat: " + latitude + " Lng: " + longitude); + EditTextPreference pref_latitude = (EditTextPreference) findPreference("location_latitude"); + EditTextPreference pref_longitude = (EditTextPreference) findPreference("location_longitude"); + pref_latitude.setText(latitude); + pref_longitude.setText(longitude); + pref_latitude.setSummary(latitude); + pref_longitude.setSummary(longitude); + } else { + GB.toast(SettingsActivity.this, "no last known position", 3000, 0); + } } else { LOG.warn("No location provider found, did you deny location permission?"); }