summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--emailcommon/src/com/android/emailcommon/utility/IntentUtilities.java36
-rw-r--r--src/com/android/email/activity/setup/AccountSettings.java22
2 files changed, 56 insertions, 2 deletions
diff --git a/emailcommon/src/com/android/emailcommon/utility/IntentUtilities.java b/emailcommon/src/com/android/emailcommon/utility/IntentUtilities.java
index d38caad46..bd1c01304 100644
--- a/emailcommon/src/com/android/emailcommon/utility/IntentUtilities.java
+++ b/emailcommon/src/com/android/emailcommon/utility/IntentUtilities.java
@@ -24,11 +24,15 @@ import android.net.Uri;
import android.text.TextUtils;
public final class IntentUtilities {
+
+ public static final String PATH_SETTINGS = "settings";
+
// Format for activity URIs: content://ui.email.android.com/...
private static final String ACTIVITY_INTENT_SCHEME = "content";
private static final String ACTIVITY_INTENT_HOST = "ui.email.android.com";
private static final String ACCOUNT_ID_PARAM = "ACCOUNT_ID";
+ private static final String ACCOUNT_NAME_PARAM = "ACCOUNT_NAME";
private static final String MAILBOX_ID_PARAM = "MAILBOX_ID";
private static final String MESSAGE_ID_PARAM = "MESSAGE_ID";
private static final String ACCOUNT_UUID_PARAM = "ACCOUNT_UUID";
@@ -57,6 +61,15 @@ public final class IntentUtilities {
}
/**
+ * Add the account name parameter.
+ */
+ public static void setAccountName(Uri.Builder b, String accountName) {
+ if (accountName != null) {
+ b.appendQueryParameter(ACCOUNT_NAME_PARAM, accountName);
+ }
+ }
+
+ /**
* Add the mailbox ID parameter.
*/
public static void setMailboxId(Uri.Builder b, long mailboxId) {
@@ -92,6 +105,13 @@ public final class IntentUtilities {
}
/**
+ * Retrieve the account name.
+ */
+ public static String getAccountNameFromIntent(Intent intent) {
+ return getStringFromIntent(intent, ACCOUNT_NAME_PARAM);
+ }
+
+ /**
* Retrieve the mailbox ID.
*/
public static long getMailboxIdFromIntent(Intent intent) {
@@ -125,6 +145,14 @@ public final class IntentUtilities {
return value;
}
+ private static String getStringFromIntent(Intent intent, String paramName) {
+ String value = null;
+ if (intent.getData() != null) {
+ value = getStringParamFromUri(intent.getData(), paramName, null);
+ }
+ return value;
+ }
+
private static long getLongParamFromUri(Uri uri, String paramName, long defaultValue) {
final String value = uri.getQueryParameter(paramName);
if (!TextUtils.isEmpty(value)) {
@@ -137,6 +165,14 @@ public final class IntentUtilities {
return defaultValue;
}
+ private static String getStringParamFromUri(Uri uri, String paramName, String defaultValue) {
+ final String value = uri.getQueryParameter(paramName);
+ if (value == null) {
+ return defaultValue;
+ }
+ return value;
+ }
+
/**
* Create an {@link Intent} to launch an activity as the main entry point. Existing activities
* will all be closed.
diff --git a/src/com/android/email/activity/setup/AccountSettings.java b/src/com/android/email/activity/setup/AccountSettings.java
index f7937750a..77200531e 100644
--- a/src/com/android/email/activity/setup/AccountSettings.java
+++ b/src/com/android/email/activity/setup/AccountSettings.java
@@ -42,7 +42,6 @@ import android.widget.TextView;
import com.android.email.R;
import com.android.email.activity.ActivityHelper;
-import com.android.email.mail.Sender;
import com.android.email.provider.EmailProvider;
import com.android.emailcommon.Logging;
import com.android.emailcommon.provider.Account;
@@ -149,7 +148,8 @@ public class AccountSettings extends PreferenceActivity implements FeedbackEnabl
*/
public static Intent createAccountSettingsIntent(long accountId,
String loginWarningAccountName, String loginWarningReason) {
- final Uri.Builder b = IntentUtilities.createActivityIntentUrlBuilder("settings");
+ final Uri.Builder b = IntentUtilities.createActivityIntentUrlBuilder(
+ IntentUtilities.PATH_SETTINGS);
IntentUtilities.setAccountId(b, accountId);
final Intent i = new Intent(Intent.ACTION_EDIT, b.build());
if (loginWarningAccountName != null) {
@@ -161,6 +161,24 @@ public class AccountSettings extends PreferenceActivity implements FeedbackEnabl
return i;
}
+ @Override
+ public Intent getIntent() {
+ final Intent intent = super.getIntent();
+ final long accountId = IntentUtilities.getAccountIdFromIntent(intent);
+ if (accountId < 0) {
+ return intent;
+ }
+ Intent modIntent = new Intent(intent);
+ modIntent.putExtra(EXTRA_SHOW_FRAGMENT, AccountSettingsFragment.class.getCanonicalName());
+ modIntent.putExtra(
+ EXTRA_SHOW_FRAGMENT_ARGUMENTS,
+ AccountSettingsFragment.buildArguments(
+ accountId, IntentUtilities.getAccountNameFromIntent(intent)));
+ modIntent.putExtra(EXTRA_NO_HEADERS, true);
+ return modIntent;
+ }
+
+
/**
* Launch generic settings and pre-enable the debug preferences
*/