after switching from forced foreground to foreground notification needs update

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/services/NotificationService.java   |  2 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 11 
2 files changed, 10 insertions(+), 3 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/services/NotificationService.java 🔗

@@ -1014,7 +1014,7 @@ public class NotificationService {
         }
     }
 
-    private void notify(int id, Notification notification) {
+    public void notify(int id, Notification notification) {
         final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(mXmppConnectionService);
         try {
             notificationManager.notify(id, notification);

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -4,6 +4,7 @@ import android.Manifest;
 import android.annotation.SuppressLint;
 import android.annotation.TargetApi;
 import android.app.AlarmManager;
+import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.app.Service;
@@ -1151,13 +1152,19 @@ public class XmppConnectionService extends Service {
     private void toggleForegroundService(boolean force) {
         final boolean status;
         if (force || mForceDuringOnCreate.get() || mForceForegroundService.get() || (Compatibility.keepForegroundService(this) && hasEnabledAccounts())) {
-            startForeground(NotificationService.FOREGROUND_NOTIFICATION_ID, this.mNotificationService.createForegroundNotification());
+            final Notification notification = this.mNotificationService.createForegroundNotification();
+            startForeground(NotificationService.FOREGROUND_NOTIFICATION_ID, notification);
+            if (!mForceForegroundService.get()) {
+                mNotificationService.notify(NotificationService.FOREGROUND_NOTIFICATION_ID, notification);
+            }
             status = true;
         } else {
             stopForeground(true);
             status = false;
         }
-        mNotificationService.dismissForcedForegroundNotification(); //if the channel was changed the previous call might fail
+        if (!mForceForegroundService.get()) {
+            mNotificationService.dismissForcedForegroundNotification(); //if the channel was changed the previous call might fail
+        }
         Log.d(Config.LOGTAG,"ForegroundService: "+(status?"on":"off"));
     }