diff options
author | Tony Mantler <nicoya@google.com> | 2014-06-05 13:05:42 -0700 |
---|---|---|
committer | Tony Mantler <nicoya@google.com> | 2014-06-05 13:21:08 -0700 |
commit | f765f9b976222a8a0e45d4b04883566ecf355937 (patch) | |
tree | 906d4ad21ebd442fdc841461a1404d1e6196340f | |
parent | 9909fabcc6cf69763f74ec4dd612d5d2aa80d324 (diff) | |
download | android_packages_apps_Email-f765f9b976222a8a0e45d4b04883566ecf355937.tar.gz android_packages_apps_Email-f765f9b976222a8a0e45d4b04883566ecf355937.tar.bz2 android_packages_apps_Email-f765f9b976222a8a0e45d4b04883566ecf355937.zip |
Clean up cert activity handling
Fix re-displaying the dialog on orientation change b/5622284
Add host/port when available b/4988512
Disambiguate intent between AOSP and EmailGoogle
Change-Id: Ideeda20dfd9bd0070998ccf42d8042765866ca0e
4 files changed, 25 insertions, 14 deletions
diff --git a/emailcommon/src/com/android/emailcommon/utility/CertificateRequestor.java b/emailcommon/src/com/android/emailcommon/utility/CertificateRequestor.java index b78895b3a..3217d0f0b 100644 --- a/emailcommon/src/com/android/emailcommon/utility/CertificateRequestor.java +++ b/emailcommon/src/com/android/emailcommon/utility/CertificateRequestor.java @@ -19,6 +19,7 @@ package com.android.emailcommon.utility; import android.app.Activity; import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.security.KeyChain; import android.security.KeyChainAliasCallback; @@ -28,14 +29,14 @@ import android.security.KeyChainAliasCallback; * a certificate to use for establishing secure connections in the Email app. */ public class CertificateRequestor extends Activity implements KeyChainAliasCallback { - - public static final String ACTION_REQUEST_CERT = "com.android.emailcommon.REQUEST_CERT"; - public static final String EXTRA_HOST = "CertificateRequestor.host"; public static final String EXTRA_PORT = "CertificateRequestor.port"; public static final String RESULT_ALIAS = "CertificateRequestor.alias"; + public static final Uri CERTIFICATE_REQUEST_URI = + Uri.parse("eas://com.android.emailcommon/certrequest"); + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -44,11 +45,13 @@ public class CertificateRequestor extends Activity implements KeyChainAliasCallb String host = i.getStringExtra(EXTRA_HOST); int port = i.getIntExtra(EXTRA_PORT, -1); - KeyChain.choosePrivateKeyAlias( - this, this, - null /* keytypes */, null /* issuers */, - host, port, - null /* alias */); + if (savedInstanceState == null) { + KeyChain.choosePrivateKeyAlias( + this, this, + null /* keytypes */, null /* issuers */, + host, port, + null /* alias */); + } } /** diff --git a/res/values/strings.xml b/res/values/strings.xml index 74c1c87c0..87742f878 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -839,6 +839,7 @@ <string name="account_manager_type_imap" translatable="false">com.android.email</string> <string name="account_manager_type_legacy_imap" translatable="false">com.android.email</string> <string name="intent_exchange_action" translatable="false">com.android.email.EXCHANGE_INTENT</string> + <string name="intent_exchange_cert_action" translatable="false">com.android.email.EXCHANGE_REQUEST_CERT</string> <string name="intent_exchange_package" translatable="false">com.android.exchange</string> <string name="intent_account_manager_entry" translatable="false">com.android.email.activity.setup.ACCOUNT_MANAGER_ENTRY</string> <string name="intent_create_account" translatable="false">com.android.email.CREATE_ACCOUNT</string> diff --git a/src/com/android/email/activity/setup/AccountSetupCredentialsFragment.java b/src/com/android/email/activity/setup/AccountSetupCredentialsFragment.java index 9cfb9c89b..82106434f 100644 --- a/src/com/android/email/activity/setup/AccountSetupCredentialsFragment.java +++ b/src/com/android/email/activity/setup/AccountSetupCredentialsFragment.java @@ -18,7 +18,6 @@ package com.android.email.activity.setup; import android.app.Activity; import android.content.Context; import android.content.Intent; -import android.net.Uri; import android.os.Bundle; import android.text.Editable; import android.text.TextUtils; @@ -354,8 +353,10 @@ public class AccountSetupCredentialsFragment extends AccountSetupFragment @Override public void onCertificateRequested() { - final Intent intent = new Intent(CertificateRequestor.ACTION_REQUEST_CERT); - intent.setData(Uri.parse("eas://com.android.emailcommon/certrequest")); + final Intent intent = new Intent(getString(R.string.intent_exchange_cert_action)); + intent.setData(CertificateRequestor.CERTIFICATE_REQUEST_URI); + // We don't set EXTRA_HOST or EXTRA_PORT here because we don't know the final host/port + // that we're connecting to yet, and autodiscover might point us somewhere else startActivityForResult(intent, CERTIFICATE_REQUEST); } } diff --git a/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java b/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java index eb0a1a9ad..bfd647cba 100644 --- a/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java +++ b/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java @@ -20,7 +20,6 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.Loader; -import android.net.Uri; import android.os.Bundle; import android.os.Parcel; import android.text.Editable; @@ -611,8 +610,15 @@ public class AccountSetupIncomingFragment extends AccountServerBaseFragment @Override public void onCertificateRequested() { - final Intent intent = new Intent(CertificateRequestor.ACTION_REQUEST_CERT); - intent.setData(Uri.parse("eas://com.android.emailcommon/certrequest")); + final Intent intent = new Intent(getString(R.string.intent_exchange_cert_action)); + intent.setData(CertificateRequestor.CERTIFICATE_REQUEST_URI); + intent.putExtra(CertificateRequestor.EXTRA_HOST, mServerView.getText().toString().trim()); + try { + intent.putExtra(CertificateRequestor.EXTRA_PORT, + Integer.parseInt(mPortView.getText().toString().trim())); + } catch (final NumberFormatException e) { + LogUtils.d(LogUtils.TAG, "Couldn't parse port %s", mPortView.getText()); + } startActivityForResult(intent, CERTIFICATE_REQUEST); } |