From 8f0826df6471ee282e938fb073cfcc81e1c4c37d Mon Sep 17 00:00:00 2001 From: Sven Fischer Date: Wed, 12 Jul 2023 00:34:22 +0200 Subject: [PATCH] add permission check for notification --- .../fr/gaulupeau/apps/Poche/tts/TtsService.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/src/main/java/fr/gaulupeau/apps/Poche/tts/TtsService.java b/app/src/main/java/fr/gaulupeau/apps/Poche/tts/TtsService.java index 0e02ac3b8..e7a7f2d78 100644 --- a/app/src/main/java/fr/gaulupeau/apps/Poche/tts/TtsService.java +++ b/app/src/main/java/fr/gaulupeau/apps/Poche/tts/TtsService.java @@ -1,5 +1,6 @@ package fr.gaulupeau.apps.Poche.tts; +import android.Manifest; import android.app.Notification; import android.app.PendingIntent; import android.app.Service; @@ -8,6 +9,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.media.AudioManager; import android.media.MediaPlayer; @@ -26,6 +28,7 @@ import android.util.Log; import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationManagerCompat; import androidx.core.util.Pair; @@ -1152,6 +1155,16 @@ private void setForegroundAndNotification(boolean forceForeground) { .from(getApplicationContext()); if (showNotification) { + if (ActivityCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) { + // TODO: Consider calling + // ActivityCompat#requestPermissions + // here to request the missing permissions, and then overriding + // public void onRequestPermissionsResult(int requestCode, String[] permissions, + // int[] grantResults) + // to handle the case where the user grants the permission. See the documentation + // for ActivityCompat#requestPermissions for more details. + return; + } notificationManager.notify(NOTIFICATION_ID, generateNotification()); } else { notificationManager.cancel(NOTIFICATION_ID);