Skip to content

Commit aa1b82f

Browse files
authored
Fix permission requests and lint (#995)
fix permission issues fix lint
1 parent 51944f7 commit aa1b82f

File tree

2 files changed

+25
-5
lines changed

2 files changed

+25
-5
lines changed

app/src/main/java/de/grobox/transportr/AlertService.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package de.grobox.transportr;
2121

2222
import android.Manifest;
23+
import android.annotation.SuppressLint;
2324
import android.app.PendingIntent;
2425
import android.app.Service;
2526
import static androidx.core.app.NotificationManagerCompat.IMPORTANCE_MAX;
@@ -148,6 +149,14 @@ private void startGpsLocListener() {
148149
mLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_INTERVAL_MS, 0, this);
149150
}
150151

152+
@SuppressLint("MissingPermission")
153+
private void stopGpsLocListener() {
154+
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
155+
return;
156+
}
157+
mLocManager.removeUpdates(this);
158+
}
159+
151160
@Override
152161
public void onLocationChanged(@NonNull Location location) {
153162
lastLocationUpdate = System.currentTimeMillis();
@@ -158,7 +167,7 @@ public void onLocationChanged(@NonNull Location location) {
158167
updateNotification(getString(R.string.meter, distanceToDestination) + " / " + timeString , false);
159168
} else {
160169
updateNotification(null, true);
161-
mLocManager.removeUpdates(this);
170+
stopGpsLocListener();
162171
isWatchdogRunning = false;
163172
handler.postDelayed(this::stopSelf, 30000);
164173
}
@@ -171,7 +180,7 @@ private void onLocationUpdateTimeout() {
171180
updateNotification( timeString , false);
172181
} else {
173182
updateNotification(null, true);
174-
mLocManager.removeUpdates(this);
183+
stopGpsLocListener();
175184
isWatchdogRunning = false;
176185
handler.postDelayed(this::stopSelf, 30000);
177186
}
@@ -199,7 +208,7 @@ private void updateNotification(@Nullable String contentText, boolean hasArrived
199208
@Override
200209
public void onDestroy() {
201210
handler.removeCallbacks(watchdogRunnable);
202-
mLocManager.removeUpdates(this);
211+
stopGpsLocListener();
203212
super.onDestroy();
204213
}
205214
}

app/src/main/java/de/grobox/transportr/trips/detail/LegPopupMenu.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import android.content.pm.PackageManager
2727
import android.os.Build
2828
import android.view.MenuItem
2929
import android.view.View
30+
import android.widget.Toast
3031
import androidx.core.app.ActivityCompat
3132
import androidx.core.content.ContextCompat
3233
import de.grobox.transportr.AlertService
@@ -110,8 +111,18 @@ class LegPopupMenu private constructor(context: Context, anchor: View, location:
110111
}
111112
// Alert when close to Leg
112113
R.id.action_alert ->{
113-
if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) && (ActivityCompat.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED)){
114-
ActivityCompat.requestPermissions(context as Activity, arrayOf(Manifest.permission.POST_NOTIFICATIONS), 0)
114+
val permissionsToRequest = mutableListOf<String>()
115+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
116+
if (ContextCompat.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
117+
permissionsToRequest.add(Manifest.permission.POST_NOTIFICATIONS)
118+
}
119+
}
120+
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
121+
Toast.makeText(context, context.getString(R.string.permission_denied_gps), Toast.LENGTH_LONG).show()
122+
permissionsToRequest.add(Manifest.permission.ACCESS_FINE_LOCATION)
123+
}
124+
if (permissionsToRequest.isNotEmpty()) {
125+
ActivityCompat.requestPermissions(context as Activity, permissionsToRequest.toTypedArray(),0)
115126
} else {
116127
val timeStr = time?.let { formatTime(context, it) } ?: "Unknown time"
117128
val latitude = loc1.lat / 1000000.0

0 commit comments

Comments
 (0)