EventReceiver.java

 1package eu.siacs.conversations.services;
 2
 3import android.content.BroadcastReceiver;
 4import android.content.Context;
 5import android.content.Intent;
 6import android.os.Bundle;
 7import android.preference.PreferenceManager;
 8import android.support.v4.content.ContextCompat;
 9import android.util.Log;
10
11import eu.siacs.conversations.Config;
12import eu.siacs.conversations.utils.Compatibility;
13
14public class EventReceiver extends BroadcastReceiver {
15
16    public static final String SETTING_ENABLED_ACCOUNTS = "enabled_accounts";
17    public static final String EXTRA_NEEDS_FOREGROUND_SERVICE = "needs_foreground_service";
18
19    @Override
20    public void onReceive(final Context context, final Intent originalIntent) {
21        final Intent intentForService = new Intent(context, XmppConnectionService.class);
22        if (originalIntent.getAction() != null) {
23            intentForService.setAction(originalIntent.getAction());
24            final Bundle extras = originalIntent.getExtras();
25            if (extras != null) {
26                intentForService.putExtras(extras);
27            }
28        } else {
29            intentForService.setAction("other");
30        }
31        final String action = originalIntent.getAction();
32        if (action.equals("ui") || hasEnabledAccounts(context)) {
33            Compatibility.startService(context, intentForService);
34        } else {
35            Log.d(Config.LOGTAG, "EventReceiver ignored action " + intentForService.getAction());
36        }
37    }
38
39    public static boolean hasEnabledAccounts(final Context context) {
40        return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(SETTING_ENABLED_ACCOUNTS, true);
41    }
42
43}