disable foreground service if all accounts are disabled

This commit is contained in:
Daniel Gultsch 2017-07-12 11:03:32 +02:00
parent edb28ccb31
commit ecc0ef45c5
1 changed files with 13 additions and 2 deletions

View File

@ -1085,7 +1085,7 @@ public class XmppConnectionService extends Service {
} }
public void toggleForegroundService() { public void toggleForegroundService() {
if (keepForegroundService()) { if (keepForegroundService() && hasEnabledAccounts()) {
startForeground(NotificationService.FOREGROUND_NOTIFICATION_ID, this.mNotificationService.createForegroundNotification()); startForeground(NotificationService.FOREGROUND_NOTIFICATION_ID, this.mNotificationService.createForegroundNotification());
} else { } else {
stopForeground(true); stopForeground(true);
@ -1825,6 +1825,7 @@ public class XmppConnectionService extends Service {
this.accounts.add(account); this.accounts.add(account);
this.reconnectAccountInBackground(account); this.reconnectAccountInBackground(account);
updateAccountUi(); updateAccountUi();
toggleForegroundService();
} }
public void createAccountFromKey(final String alias, final OnAccountCreated callback) { public void createAccountFromKey(final String alias, final OnAccountCreated callback) {
@ -1894,6 +1895,7 @@ public class XmppConnectionService extends Service {
reconnectAccountInBackground(account); reconnectAccountInBackground(account);
updateAccountUi(); updateAccountUi();
getNotificationService().updateErrorNotification(); getNotificationService().updateErrorNotification();
toggleForegroundService();
return true; return true;
} else { } else {
return false; return false;
@ -2199,7 +2201,7 @@ public class XmppConnectionService extends Service {
XmppConnection connection = account.getXmppConnection(); XmppConnection connection = account.getXmppConnection();
if (connection != null) { if (connection != null) {
if (broadcastLastActivity) { if (broadcastLastActivity) {
sendPresence(account, broadcastLastActivity); sendPresence(account, true);
} }
if (connection.getFeatures().csi()) { if (connection.getFeatures().csi()) {
connection.sendInactive(); connection.sendInactive();
@ -2380,6 +2382,15 @@ public class XmppConnectionService extends Service {
} }
} }
private boolean hasEnabledAccounts() {
for(Account account : this.accounts) {
if (!account.isOptionSet(Account.OPTION_DISABLED)) {
return true;
}
}
return false;
}
public void renameInMuc(final Conversation conversation, final String nick, final UiCallback<Conversation> callback) { public void renameInMuc(final Conversation conversation, final String nick, final UiCallback<Conversation> callback) {
final MucOptions options = conversation.getMucOptions(); final MucOptions options = conversation.getMucOptions();
final Jid joinJid = options.createJoinJid(nick); final Jid joinJid = options.createJoinJid(nick);