Skip to content

Commit 0f3c1f8

Browse files
committed
fix permission issues
fix lint
1 parent de7f00f commit 0f3c1f8

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,13 @@ private void startGpsLocListener() {
148148
mLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_INTERVAL_MS, 0, this);
149149
}
150150

151+
private void stopGpsLocListener() {
152+
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
153+
return;
154+
}
155+
mLocManager.removeUpdates(this);
156+
}
157+
151158
@Override
152159
public void onLocationChanged(@NonNull Location location) {
153160
lastLocationUpdate = System.currentTimeMillis();
@@ -158,7 +165,7 @@ public void onLocationChanged(@NonNull Location location) {
158165
updateNotification(getString(R.string.meter, distanceToDestination) + " / " + timeString , false);
159166
} else {
160167
updateNotification(null, true);
161-
mLocManager.removeUpdates(this);
168+
stopGpsLocListener();
162169
isWatchdogRunning = false;
163170
handler.postDelayed(this::stopSelf, 30000);
164171
}
@@ -171,7 +178,7 @@ private void onLocationUpdateTimeout() {
171178
updateNotification( timeString , false);
172179
} else {
173180
updateNotification(null, true);
174-
mLocManager.removeUpdates(this);
181+
stopGpsLocListener();
175182
isWatchdogRunning = false;
176183
handler.postDelayed(this::stopSelf, 30000);
177184
}
@@ -199,7 +206,7 @@ private void updateNotification(@Nullable String contentText, boolean hasArrived
199206
@Override
200207
public void onDestroy() {
201208
handler.removeCallbacks(watchdogRunnable);
202-
mLocManager.removeUpdates(this);
209+
stopGpsLocListener();
203210
super.onDestroy();
204211
}
205212
}

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)