diff --git a/src/com/android/email/MessageListContext.java b/src/com/android/email/MessageListContext.java index 448bdcf90..03d3b2d6d 100644 --- a/src/com/android/email/MessageListContext.java +++ b/src/com/android/email/MessageListContext.java @@ -78,6 +78,9 @@ public class MessageListContext implements Parcelable { } else { if (accountId == Account.NO_ACCOUNT) { accountId = Account.getDefaultAccountId(context); + if (accountId == Account.NO_ACCOUNT) { + return null; + } } if (mailboxId == Mailbox.NO_MAILBOX) { mailboxId = (accountId == Account.ACCOUNT_ID_COMBINED_VIEW) diff --git a/src/com/android/email/activity/EmailActivity.java b/src/com/android/email/activity/EmailActivity.java index 0cd842907..50667cbff 100644 --- a/src/com/android/email/activity/EmailActivity.java +++ b/src/com/android/email/activity/EmailActivity.java @@ -199,19 +199,22 @@ public class EmailActivity extends Activity implements View.OnClickListener, Fra if (savedInstanceState != null) { mUIController.onRestoreInstanceState(savedInstanceState); } else { - initFromIntent(); + final Intent intent = getIntent(); + final MessageListContext viewContext = MessageListContext.forIntent(this, intent); + if (viewContext == null) { + // This might happen if accounts were deleted on another thread, and there aren't + // any remaining + Welcome.actionStart(this); + finish(); + return; + } else { + final long messageId = intent.getLongExtra(EXTRA_MESSAGE_ID, Message.NO_MESSAGE); + mUIController.open(viewContext, messageId); + } } mUIController.onActivityCreated(); } - private void initFromIntent() { - final Intent intent = getIntent(); - final MessageListContext viewContext = MessageListContext.forIntent(this, intent); - final long messageId = intent.getLongExtra(EXTRA_MESSAGE_ID, Message.NO_MESSAGE); - - mUIController.open(viewContext, messageId); - } - @Override protected void onSaveInstanceState(Bundle outState) { if (Logging.DEBUG_LIFECYCLE && Email.DEBUG) {