diff --git a/src/com/android/email/provider/AccountReconciler.java b/src/com/android/email/provider/AccountReconciler.java index a7c8c4a26..9f604dbab 100644 --- a/src/com/android/email/provider/AccountReconciler.java +++ b/src/com/android/email/provider/AccountReconciler.java @@ -37,6 +37,7 @@ import com.android.email.service.EasAuthenticatorServiceAlternate; import com.android.email.service.EmailServiceUtils; import com.android.email.service.EmailServiceUtils.EmailServiceInfo; import com.android.emailcommon.Logging; +import com.android.emailcommon.VendorPolicyLoader; import com.android.emailcommon.provider.Account; import com.android.emailcommon.provider.HostAuth; import com.android.mail.utils.LogUtils; @@ -160,15 +161,9 @@ public class AccountReconciler { if (!EmailServiceUtils.isServiceAvailable(context, context.getString(R.string.protocol_eas))) { - LogUtils.d(Logging.LOG_TAG, "disabling eas authenticator"); - EmailServiceUtils.setComponentEnabled(context, EasAuthenticatorServiceAlternate.class, - false); - EmailServiceUtils.setComponentEnabled(context, EasAuthenticatorService.class, false); + EmailServiceUtils.disableExchangeComponents(context); } else { - LogUtils.d(Logging.LOG_TAG, "enabling eas authenticator"); - EmailServiceUtils.setComponentEnabled(context, EasAuthenticatorServiceAlternate.class, - true); - EmailServiceUtils.setComponentEnabled(context, EasAuthenticatorService.class, true); + EmailServiceUtils.enableExchangeComponent(context); } // First, look through our EmailProvider accounts to make sure there's a corresponding // AccountManager account diff --git a/src/com/android/email/service/EmailBroadcastProcessorService.java b/src/com/android/email/service/EmailBroadcastProcessorService.java index 5b9ed0f1f..3b15904d7 100644 --- a/src/com/android/email/service/EmailBroadcastProcessorService.java +++ b/src/com/android/email/service/EmailBroadcastProcessorService.java @@ -315,12 +315,7 @@ public class EmailBroadcastProcessorService extends IntentService { if (progress < 1) { LogUtils.i(Logging.LOG_TAG, "Onetime initialization: 1"); progress = 1; - if (VendorPolicyLoader.getInstance(this).useAlternateExchangeStrings()) { - EmailServiceUtils.setComponentEnabled(this, - EasAuthenticatorServiceAlternate.class, true); - EmailServiceUtils.setComponentEnabled(this, - EasAuthenticatorService.class, false); - } + EmailServiceUtils.enableExchangeComponent(this); } if (progress < 2) { diff --git a/src/com/android/email/service/EmailServiceUtils.java b/src/com/android/email/service/EmailServiceUtils.java index cd3d9a4f7..d9ff4ea6c 100644 --- a/src/com/android/email/service/EmailServiceUtils.java +++ b/src/com/android/email/service/EmailServiceUtils.java @@ -49,6 +49,7 @@ import android.provider.SyncStateContract; import android.text.TextUtils; import com.android.email.R; +import com.android.emailcommon.VendorPolicyLoader; import com.android.emailcommon.provider.Account; import com.android.emailcommon.provider.EmailContent; import com.android.emailcommon.provider.EmailContent.AccountColumns; @@ -730,7 +731,7 @@ public class EmailServiceUtils { } } - public static void setComponentEnabled(final Context context, Class clazz, boolean enabled) { + public static void setComponentStatus(final Context context, Class clazz, boolean enabled) { final ComponentName c = new ComponentName(context, clazz.getName()); context.getPackageManager().setComponentEnabledSetting(c, enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED @@ -738,4 +739,27 @@ public class EmailServiceUtils { PackageManager.DONT_KILL_APP); } + /** + * This is a helper function that enables the proper Exchange component and disables + * the other Exchange component ensuring that only one is enabled at a time. + */ + public static void enableExchangeComponent(final Context context) { + if (VendorPolicyLoader.getInstance(context).useAlternateExchangeStrings()) { + LogUtils.d(LogUtils.TAG, "Enabling alternate EAS authenticator"); + setComponentStatus(context, EasAuthenticatorServiceAlternate.class, true); + setComponentStatus(context, EasAuthenticatorService.class, false); + } else { + LogUtils.d(LogUtils.TAG, "Enabling EAS authenticator"); + setComponentStatus(context, EasAuthenticatorService.class, true); + setComponentStatus(context, + EasAuthenticatorServiceAlternate.class, false); + } + } + + public static void disableExchangeComponents(final Context context) { + LogUtils.d(LogUtils.TAG, "Disabling EAS authenticators"); + setComponentStatus(context, EasAuthenticatorServiceAlternate.class, false); + setComponentStatus(context, EasAuthenticatorService.class, false); + } + }