Fix Calendar and Contacts syncing for POP and IMAP accounts
b/11818312 Change-Id: I34b82040991506bf9099cc0df237454a8f97c764
This commit is contained in:
parent
50c5add15b
commit
3f4a556d54
|
@ -21,15 +21,19 @@ import android.accounts.AccountManagerFuture;
|
|||
import android.accounts.AuthenticatorException;
|
||||
import android.accounts.OperationCanceledException;
|
||||
import android.content.ComponentName;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.database.Cursor;
|
||||
import android.provider.CalendarContract;
|
||||
import android.provider.ContactsContract;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.android.email.NotificationController;
|
||||
import com.android.email.R;
|
||||
import com.android.email.activity.ComposeActivityEmail;
|
||||
import com.android.email.service.EmailServiceUtils;
|
||||
import com.android.email.service.EmailServiceUtils.EmailServiceInfo;
|
||||
import com.android.emailcommon.Logging;
|
||||
import com.android.emailcommon.provider.Account;
|
||||
import com.android.emailcommon.provider.HostAuth;
|
||||
|
@ -98,7 +102,7 @@ public class AccountReconciler {
|
|||
*
|
||||
* @param context The context in which to operate
|
||||
*/
|
||||
public static void reconcileAccounts(final Context context) {
|
||||
public static synchronized void reconcileAccounts(final Context context) {
|
||||
final List<android.accounts.Account> amAccounts = getAllAmAccounts(context);
|
||||
final List<Account> providerAccounts = getAllEmailProviderAccounts(context);
|
||||
reconcileAccountsInternal(context, providerAccounts, amAccounts, true);
|
||||
|
@ -221,6 +225,22 @@ public class AccountReconciler {
|
|||
LogUtils.w(Logging.LOG_TAG, e.toString());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Fix up the Calendar and Contacts syncing. It used to be possible for IMAP and
|
||||
// POP accounts to get calendar and contacts syncing enabled.
|
||||
// See b/11818312
|
||||
final String accountType = accountManagerAccount.type;
|
||||
final String protocol = EmailServiceUtils.getProtocolFromAccountType(
|
||||
context, accountType);
|
||||
final EmailServiceInfo info = EmailServiceUtils.getServiceInfo(context, protocol);
|
||||
if (!info.syncCalendar) {
|
||||
ContentResolver.setIsSyncable(accountManagerAccount,
|
||||
CalendarContract.AUTHORITY, 0);
|
||||
}
|
||||
if (!info.syncContacts) {
|
||||
ContentResolver.setIsSyncable(accountManagerAccount,
|
||||
ContactsContract.AUTHORITY, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -98,6 +98,7 @@ import com.android.emailcommon.service.EmailServiceStatus;
|
|||
import com.android.emailcommon.service.IEmailService;
|
||||
import com.android.emailcommon.service.SearchParams;
|
||||
import com.android.emailcommon.utility.AttachmentUtilities;
|
||||
import com.android.emailcommon.utility.EmailAsyncTask;
|
||||
import com.android.emailcommon.utility.IntentUtilities;
|
||||
import com.android.emailcommon.utility.Utility;
|
||||
import com.android.ex.photo.provider.PhotoContract;
|
||||
|
@ -367,6 +368,15 @@ public class EmailProvider extends ContentProvider {
|
|||
private Handler mDelayedSyncHandler;
|
||||
private final Set<SyncRequestMessage> mDelayedSyncRequests = new HashSet<SyncRequestMessage>();
|
||||
|
||||
private static void reconcileAccountsAsync(final Context context) {
|
||||
EmailAsyncTask.runAsyncParallel(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
AccountReconciler.reconcileAccounts(context);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static Uri uiUri(String type, long id) {
|
||||
return Uri.parse(uiUriString(type, id));
|
||||
}
|
||||
|
@ -937,6 +947,7 @@ public class EmailProvider extends ContentProvider {
|
|||
init(context);
|
||||
// Do this last, so that EmailContent/EmailProvider are initialized
|
||||
MailActivityEmail.setServicesEnabledAsync(context);
|
||||
reconcileAccountsAsync(context);
|
||||
|
||||
// Update widgets
|
||||
final Intent updateAllWidgetsIntent =
|
||||
|
|
Loading…
Reference in New Issue