Home | History | Annotate | Download | only in exchange
      1 // Copyright 2013 Google Inc. All Rights Reserved.
      2 
      3 package com.android.exchange;
      4 
      5 import android.accounts.Account;
      6 import android.accounts.AccountManager;
      7 import android.content.BroadcastReceiver;
      8 import android.content.ContentResolver;
      9 import android.content.Context;
     10 import android.content.Intent;
     11 import android.os.Bundle;
     12 import android.provider.CalendarContract;
     13 import android.provider.ContactsContract;
     14 
     15 import com.android.emailcommon.provider.EmailContent;
     16 import com.android.emailcommon.provider.Mailbox;
     17 import com.android.exchange.R;
     18 import com.android.mail.utils.LogUtils;
     19 
     20 public class ExchangeBroadcastReceiver extends BroadcastReceiver {
     21 
     22     @Override
     23     public void onReceive(final Context context, final Intent intent) {
     24         final Account[] accounts = AccountManager.get(context)
     25                 .getAccountsByType(context.getString(R.string.account_manager_type_exchange));
     26         LogUtils.i(Eas.LOG_TAG, "Accounts changed - requesting FolderSync for unsynced accounts");
     27         for (final Account account : accounts) {
     28             // Only do a sync for accounts that are not configured to sync any types, since the
     29             // initial sync will do the right thing if at least one of those is enabled.
     30             if (!ContentResolver.getSyncAutomatically(account, EmailContent.AUTHORITY) &&
     31                     !ContentResolver.getSyncAutomatically(account, CalendarContract.AUTHORITY) &&
     32                     !ContentResolver.getSyncAutomatically(account, ContactsContract.AUTHORITY)) {
     33                 final Bundle bundle = new Bundle(3);
     34                 bundle.putBoolean(ContentResolver.SYNC_EXTRAS_IGNORE_SETTINGS, true);
     35                 bundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
     36                 bundle.putBoolean(Mailbox.SYNC_EXTRA_ACCOUNT_ONLY, true);
     37                 ContentResolver.requestSync(account, EmailContent.AUTHORITY, bundle);
     38             }
     39         }
     40     }
     41 }
     42