App icon on app drawer shouldn't restart the app
When launching Welcome and MessageListXL, make sure they start as a "main" activity. This fixes the reported bug. Bug 3366537 Change-Id: I68facd739bd1dad8eeec52015b0720299d632e11
This commit is contained in:
parent
985155fddd
commit
0c75f83f03
|
@ -16,6 +16,7 @@
|
|||
|
||||
package com.android.email;
|
||||
|
||||
import com.android.email.activity.Welcome;
|
||||
import com.android.email.provider.EmailContent;
|
||||
import com.android.email.provider.EmailContent.Account;
|
||||
import com.android.email.provider.EmailContent.AccountColumns;
|
||||
|
@ -33,6 +34,7 @@ import android.content.ContentResolver;
|
|||
import android.content.ContentUris;
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.TypedArray;
|
||||
import android.database.Cursor;
|
||||
|
@ -1263,4 +1265,17 @@ public class Utility {
|
|||
return new CloseTraceCursorWrapper(original);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an {@link Intent} to launch an activity as the main entry point. Existing activities
|
||||
* will all be closed.
|
||||
*/
|
||||
public static Intent createRestartAppIntent(Context context, Class<? extends Activity> clazz) {
|
||||
Intent i = new Intent(context, clazz);
|
||||
i.setAction(Intent.ACTION_MAIN);
|
||||
i.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -98,11 +98,10 @@ public class MessageListXL extends Activity implements
|
|||
* @param accountId If -1, default account will be used.
|
||||
*/
|
||||
public static void actionOpenAccount(Activity fromActivity, long accountId) {
|
||||
Intent i = new Intent(fromActivity, MessageListXL.class);
|
||||
Intent i = Utility.createRestartAppIntent(fromActivity, MessageListXL.class);
|
||||
if (accountId != -1) {
|
||||
i.putExtra(EXTRA_ACCOUNT_ID, accountId);
|
||||
}
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
fromActivity.startActivity(i);
|
||||
}
|
||||
|
||||
|
@ -114,13 +113,12 @@ public class MessageListXL extends Activity implements
|
|||
* {@link Mailbox#QUERY_ALL_INBOXES}) don't work.
|
||||
*/
|
||||
public static void actionOpenMailbox(Activity fromActivity, long accountId, long mailboxId) {
|
||||
Intent i = new Intent(fromActivity, MessageListXL.class);
|
||||
if (accountId == -1 || mailboxId == -1) {
|
||||
throw new InvalidParameterException();
|
||||
}
|
||||
Intent i = Utility.createRestartAppIntent(fromActivity, MessageListXL.class);
|
||||
i.putExtra(EXTRA_ACCOUNT_ID, accountId);
|
||||
i.putExtra(EXTRA_MAILBOX_ID, mailboxId);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
fromActivity.startActivity(i);
|
||||
}
|
||||
|
||||
|
@ -134,14 +132,13 @@ public class MessageListXL extends Activity implements
|
|||
*/
|
||||
public static void actionOpenMessage(Activity fromActivity, long accountId, long mailboxId,
|
||||
long messageId) {
|
||||
Intent i = new Intent(fromActivity, MessageListXL.class);
|
||||
if (accountId == -1 || mailboxId == -1 || messageId == -1) {
|
||||
throw new InvalidParameterException();
|
||||
}
|
||||
Intent i = Utility.createRestartAppIntent(fromActivity, MessageListXL.class);
|
||||
i.putExtra(EXTRA_ACCOUNT_ID, accountId);
|
||||
i.putExtra(EXTRA_MAILBOX_ID, mailboxId);
|
||||
i.putExtra(EXTRA_MESSAGE_ID, messageId);
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
fromActivity.startActivity(i);
|
||||
}
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ package com.android.email.activity;
|
|||
import com.android.email.AccountBackupRestore;
|
||||
import com.android.email.Email;
|
||||
import com.android.email.ExchangeUtils;
|
||||
import com.android.email.Utility;
|
||||
import com.android.email.activity.setup.AccountSetupBasics;
|
||||
import com.android.email.provider.EmailContent;
|
||||
import com.android.email.provider.EmailContent.Account;
|
||||
|
@ -93,8 +94,7 @@ public class Welcome extends Activity {
|
|||
* which will drop any other activities on the stack (e.g. AccountFolderList or MessageList).
|
||||
*/
|
||||
public static void actionStart(Activity fromActivity) {
|
||||
Intent i = new Intent(fromActivity, Welcome.class);
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
Intent i = Utility.createRestartAppIntent(fromActivity, Welcome.class);
|
||||
fromActivity.startActivity(i);
|
||||
}
|
||||
|
||||
|
@ -102,8 +102,7 @@ public class Welcome extends Activity {
|
|||
* Create an Intent to open account's inbox.
|
||||
*/
|
||||
public static Intent createOpenAccountInboxIntent(Context context, long accountId) {
|
||||
Intent i = new Intent(context, Welcome.class);
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
Intent i = Utility.createRestartAppIntent(context, Welcome.class);
|
||||
if (accountId != -1) {
|
||||
i.putExtra(EXTRA_ACCOUNT_ID, accountId);
|
||||
}
|
||||
|
@ -115,8 +114,7 @@ public class Welcome extends Activity {
|
|||
*/
|
||||
public static Intent createOpenMessageIntent(Context context, long accountId,
|
||||
long mailboxId, long messageId) {
|
||||
Intent i = new Intent(context, Welcome.class);
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
Intent i = Utility.createRestartAppIntent(context, Welcome.class);
|
||||
if (accountId != -1) {
|
||||
i.putExtra(EXTRA_ACCOUNT_ID, accountId);
|
||||
i.putExtra(EXTRA_MAILBOX_ID, mailboxId);
|
||||
|
|
Loading…
Reference in New Issue