From fd4d6168124bba59b071513b9e12e00ffc566a78 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Mon, 19 Mar 2018 22:22:45 +1300 Subject: [PATCH] Check permissions in service --- .../main/java/org/traccar/client/MainFragment.java | 11 ++--------- .../main/java/org/traccar/client/TrackingService.java | 8 ++++++-- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/traccar/client/MainFragment.java b/app/src/main/java/org/traccar/client/MainFragment.java index 25531a5..0ce5ce7 100644 --- a/app/src/main/java/org/traccar/client/MainFragment.java +++ b/app/src/main/java/org/traccar/client/MainFragment.java @@ -150,13 +150,6 @@ public class MainFragment extends PreferenceFragment implements OnSharedPreferen } } - private boolean hasPermission(String permission) { - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) { - return true; - } - return ContextCompat.checkSelfPermission(getActivity(), permission) == PackageManager.PERMISSION_GRANTED; - } - @Override public void onResume() { super.onResume(); @@ -223,10 +216,10 @@ public class MainFragment extends PreferenceFragment implements OnSharedPreferen private void startTrackingService(boolean checkPermission, boolean permission) { if (checkPermission) { Set missingPermissions = new HashSet<>(); - if (!hasPermission(Manifest.permission.ACCESS_FINE_LOCATION)) { + if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { missingPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION); } - if (!hasPermission(Manifest.permission.ACCESS_COARSE_LOCATION)) { + if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { missingPermissions.add(Manifest.permission.ACCESS_COARSE_LOCATION); } if (missingPermissions.isEmpty()) { diff --git a/app/src/main/java/org/traccar/client/TrackingService.java b/app/src/main/java/org/traccar/client/TrackingService.java index 9b7291b..6b6ea55 100644 --- a/app/src/main/java/org/traccar/client/TrackingService.java +++ b/app/src/main/java/org/traccar/client/TrackingService.java @@ -21,6 +21,7 @@ import android.app.PendingIntent; import android.app.Service; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.os.Build; import android.os.IBinder; import android.support.v4.app.NotificationCompat; @@ -77,8 +78,11 @@ public class TrackingService extends Service { Log.i(TAG, "service create"); StatusActivity.addMessage(getString(R.string.status_service_create)); - trackingController = new TrackingController(this); - trackingController.start(); + if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED + && ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { + trackingController = new TrackingController(this); + trackingController.start(); + } startForeground(NOTIFICATION_ID, createNotification(this)); ContextCompat.startForegroundService(this, new Intent(this, HideNotificationService.class));