diff --git a/app/src/main/java/org/traccar/client/PositionProvider.java b/app/src/main/java/org/traccar/client/PositionProvider.java index 1133129..9362db0 100644 --- a/app/src/main/java/org/traccar/client/PositionProvider.java +++ b/app/src/main/java/org/traccar/client/PositionProvider.java @@ -29,6 +29,7 @@ import android.os.Bundle; import android.os.Looper; import android.preference.PreferenceManager; import android.util.Log; +import android.widget.Toast; public class PositionProvider implements LocationListener { @@ -69,10 +70,14 @@ public class PositionProvider implements LocationListener { @SuppressLint("MissingPermission") public void startUpdates() { - locationManager.requestLocationUpdates( - distance > 0 || angle > 0 ? MINIMUM_INTERVAL : interval, 0, - getCriteria(preferences.getString(MainFragment.KEY_ACCURACY, "medium")), - this, Looper.myLooper()); + try { + locationManager.requestLocationUpdates( + distance > 0 || angle > 0 ? MINIMUM_INTERVAL : interval, 0, + getCriteria(preferences.getString(MainFragment.KEY_ACCURACY, "medium")), + this, Looper.myLooper()); + } catch (RuntimeException e) { + Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show(); + } } public static Criteria getCriteria(String accuracy) { diff --git a/app/src/main/java/org/traccar/client/ShortcutActivity.java b/app/src/main/java/org/traccar/client/ShortcutActivity.java index 6560ee1..d62eb9b 100644 --- a/app/src/main/java/org/traccar/client/ShortcutActivity.java +++ b/app/src/main/java/org/traccar/client/ShortcutActivity.java @@ -111,28 +111,32 @@ public class ShortcutActivity extends AppCompatActivity { Criteria criteria = PositionProvider.getCriteria( preferences.getString(MainFragment.KEY_ACCURACY, "medium")); - Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, true)); - if (location != null) { - sendAlarmLocation(location); - } else { - locationManager.requestSingleUpdate(criteria, new LocationListener() { - @Override - public void onLocationChanged(Location location) { - sendAlarmLocation(location); - } + try { + Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, true)); + if (location != null) { + sendAlarmLocation(location); + } else { + locationManager.requestSingleUpdate(criteria, new LocationListener() { + @Override + public void onLocationChanged(Location location) { + sendAlarmLocation(location); + } - @Override - public void onStatusChanged(String provider, int status, Bundle extras) { - } + @Override + public void onStatusChanged(String provider, int status, Bundle extras) { + } - @Override - public void onProviderEnabled(String provider) { - } + @Override + public void onProviderEnabled(String provider) { + } - @Override - public void onProviderDisabled(String provider) { - } - }, Looper.myLooper()); + @Override + public void onProviderDisabled(String provider) { + } + }, Looper.myLooper()); + } + } catch (RuntimeException e) { + Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); } }