Change summary
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 12
1 file changed, 10 insertions(+), 2 deletions(-)
Detailed changes
@@ -1580,12 +1580,12 @@ public class XmppConnectionService extends Service {
if (showOngoing) {
notification = this.mNotificationService.getOngoingCallNotification(ongoing);
id = NotificationService.ONGOING_CALL_NOTIFICATION_ID;
- startForeground(id, notification);
+ startForegroundOrCatch(id, notification);
mNotificationService.cancel(NotificationService.FOREGROUND_NOTIFICATION_ID);
} else {
notification = this.mNotificationService.createForegroundNotification();
id = NotificationService.FOREGROUND_NOTIFICATION_ID;
- startForeground(id, notification);
+ startForegroundOrCatch(id, notification);
}
if (!mForceForegroundService.get()) {
@@ -1605,6 +1605,14 @@ public class XmppConnectionService extends Service {
Log.d(Config.LOGTAG, "ForegroundService: " + (status ? "on" : "off"));
}
+ private void startForegroundOrCatch(final int id, final Notification notification) {
+ try {
+ startForeground(id, notification);
+ } catch (final IllegalStateException e) {
+ Log.e(Config.LOGTAG,"Could not start foreground service", e);
+ }
+ }
+
public boolean foregroundNotificationNeedsUpdatingWhenErrorStateChanges() {
return !mForceForegroundService.get() && ongoingCall.get() == null && Compatibility.keepForegroundService(this) && hasEnabledAccounts();
}