/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.email.activity; import com.android.email.AccountBackupRestore; import com.android.email.activity.setup.AccountSetupBasics; import com.android.email.provider.EmailContent.Account; import com.android.email.provider.EmailContent.Mailbox; import com.android.exchange.SyncManager; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; /** * The Welcome activity initializes the application and decides what Activity * the user should start with. * If no accounts are configured the user is taken to the AccountSetupBasics Activity where they * can configure an account. * If a single account is configured the user is taken directly to the MessageList for * the INBOX of that account. * If more than one account is configured the user is taken to the AccountFolderList Activity so * they can select an account. */ public class Welcome extends Activity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); // Restore accounts, if it has not happened already // NOTE: This is blocking, which it should not be (in the UI thread) // We're going to live with this for the short term and replace with something // smarter. Long-term fix: Move this, and most of the code below, to an AsyncTask // and do the DB work in a thread. Then post handler to finish() as appropriate. AccountBackupRestore.restoreAccountsIfNeeded(this); // Because the app could be reloaded (for debugging, etc.), we need to make sure that // SyncManager gets a chance to start. There is no harm to starting it if it has already // been started // TODO More completely separate SyncManager from Email app startService(new Intent(this, SyncManager.class)); // Find out how many accounts we have, and if there's just one, go directly to it Cursor c = null; try { c = getContentResolver().query( Account.CONTENT_URI, Account.ID_PROJECTION, null, null, null); switch (c.getCount()) { case 0: AccountSetupBasics.actionNewAccount(this); break; case 1: c.moveToFirst(); long accountId = c.getLong(Account.CONTENT_ID_COLUMN); MessageList.actionHandleAccount(this, accountId, Mailbox.TYPE_INBOX); break; default: AccountFolderList.actionShowAccounts(this); break; } } finally { if (c != null) { c.close(); } } // In all cases, do not return to this activity finish(); } }