From 3dbdaeb5553589fe13f5c538bc2ae16cfeca4178 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Thu, 1 Sep 2016 02:15:05 +1200 Subject: [PATCH] Handle missing GPS provider --- app/src/main/java/org/traccar/client/MainActivity.java | 5 ++++- .../java/org/traccar/client/MixedPositionProvider.java | 7 ++++++- .../java/org/traccar/client/SimplePositionProvider.java | 8 +++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/traccar/client/MainActivity.java b/app/src/main/java/org/traccar/client/MainActivity.java index 6971299..48f1276 100644 --- a/app/src/main/java/org/traccar/client/MainActivity.java +++ b/app/src/main/java/org/traccar/client/MainActivity.java @@ -239,7 +239,10 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen if (missingPermissions.isEmpty()) { permission = true; } else { - requestPermissions(missingPermissions.toArray(new String[missingPermissions.size()]), PERMISSIONS_REQUEST_LOCATION); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + requestPermissions(missingPermissions.toArray(new String[missingPermissions.size()]), + PERMISSIONS_REQUEST_LOCATION); + } return; } } diff --git a/app/src/main/java/org/traccar/client/MixedPositionProvider.java b/app/src/main/java/org/traccar/client/MixedPositionProvider.java index 298750a..5637fc9 100644 --- a/app/src/main/java/org/traccar/client/MixedPositionProvider.java +++ b/app/src/main/java/org/traccar/client/MixedPositionProvider.java @@ -23,6 +23,7 @@ import android.location.LocationManager; import android.os.Bundle; import android.util.Log; +@SuppressWarnings("MissingPermission") public class MixedPositionProvider extends PositionProvider implements LocationListener, GpsStatus.Listener { private static int FIX_TIMEOUT = 30 * 1000; @@ -37,7 +38,11 @@ public class MixedPositionProvider extends PositionProvider implements LocationL public void startUpdates() { lastFixTime = System.currentTimeMillis(); locationManager.addGpsStatusListener(this); - locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, period, 0, this); + try { + locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, period, 0, this); + } catch (IllegalArgumentException e) { + Log.w(TAG, e); + } } public void stopUpdates() { diff --git a/app/src/main/java/org/traccar/client/SimplePositionProvider.java b/app/src/main/java/org/traccar/client/SimplePositionProvider.java index 1dd7dfd..32a346f 100644 --- a/app/src/main/java/org/traccar/client/SimplePositionProvider.java +++ b/app/src/main/java/org/traccar/client/SimplePositionProvider.java @@ -20,7 +20,9 @@ import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; +import android.util.Log; +@SuppressWarnings("MissingPermission") public class SimplePositionProvider extends PositionProvider implements LocationListener { public SimplePositionProvider(Context context, PositionListener listener) { @@ -31,7 +33,11 @@ public class SimplePositionProvider extends PositionProvider implements Location } public void startUpdates() { - locationManager.requestLocationUpdates(type, period, 0, this); + try { + locationManager.requestLocationUpdates(type, period, 0, this); + } catch (IllegalArgumentException e) { + Log.w(TAG, e); + } } public void stopUpdates() {