diff --git a/emailcommon/src/com/android/emailcommon/provider/HostAuth.java b/emailcommon/src/com/android/emailcommon/provider/HostAuth.java index c23f276a8..5ed10c00b 100644 --- a/emailcommon/src/com/android/emailcommon/provider/HostAuth.java +++ b/emailcommon/src/com/android/emailcommon/provider/HostAuth.java @@ -562,6 +562,13 @@ public class HostAuth extends EmailContent implements Parcelable { setConnection(protocol, host, port, flags, clientCertAlias); } + public static String getProtocolFromString(String uriString) { + final Uri uri = Uri.parse(uriString); + final String scheme = uri.getScheme(); + final String[] schemeParts = scheme.split("\\+"); + return schemeParts[0]; + } + @Override public String toString() { return "[protocol " + mProtocol + "]"; diff --git a/src/com/android/email/activity/setup/AccountSetupFinal.java b/src/com/android/email/activity/setup/AccountSetupFinal.java index 4a163049f..f080b136b 100644 --- a/src/com/android/email/activity/setup/AccountSetupFinal.java +++ b/src/com/android/email/activity/setup/AccountSetupFinal.java @@ -857,18 +857,21 @@ public class AccountSetupFinal extends AccountSetupActivity try { mProvider.expandTemplates(email); - final Account account = mSetupData.getAccount(); - final HostAuth recvAuth = account.getOrCreateHostAuthRecv(this); - recvAuth.setHostAuthFromString(mProvider.incomingUri); - - final EmailServiceUtils.EmailServiceInfo info = mSetupData.getIncomingServiceInfo(this); + final String primaryProtocol = HostAuth.getProtocolFromString(mProvider.incomingUri); + EmailServiceUtils.EmailServiceInfo info = + EmailServiceUtils.getServiceInfo(this, primaryProtocol); // If the protocol isn't one we can use, and we're not diverting to gmail, try the alt if (!info.isGmailStub && !EmailServiceUtils.isServiceAvailable(this, info.protocol)) { LogUtils.d(LogUtils.TAG, "Protocol %s not available, using alternate", info.protocol); mProvider.expandAlternateTemplates(email); - recvAuth.setHostAuthFromString(mProvider.incomingUri); + final String alternateProtocol = HostAuth.getProtocolFromString( + mProvider.incomingUri); + info = EmailServiceUtils.getServiceInfo(this, alternateProtocol); } + final Account account = mSetupData.getAccount(); + final HostAuth recvAuth = account.getOrCreateHostAuthRecv(this); + recvAuth.setHostAuthFromString(mProvider.incomingUri); recvAuth.setUserName(mProvider.incomingUsername); recvAuth.mPort =