am eadb55b0
: Implement hooks from Settings->Accounts to Exchange account setu
Merge commit 'eadb55b04eae126fdef442bae6d72c804df735d0' into eclair-plus-aosp * commit 'eadb55b04eae126fdef442bae6d72c804df735d0': Implement hooks from Settings->Accounts to Exchange account setu
This commit is contained in:
commit
83954a28fe
@ -453,6 +453,8 @@
|
|||||||
<string name="account_settings_default_summary">Send email from this account by default</string>
|
<string name="account_settings_default_summary">Send email from this account by default</string>
|
||||||
<!-- On Settings screen, setting option name -->
|
<!-- On Settings screen, setting option name -->
|
||||||
<string name="account_settings_notify_label">Email notifications</string>
|
<string name="account_settings_notify_label">Email notifications</string>
|
||||||
|
<!-- On Settings screen, summary line when called via AccountManager for Exchange accounts -->
|
||||||
|
<string name="account_settings_exchange_summary">Sync frequency, notifications, etc.</string>
|
||||||
<!-- On Settings screen, setting summary text -->
|
<!-- On Settings screen, setting summary text -->
|
||||||
<string name="account_settings_notify_summary">Notify in status bar when email arrives</string>
|
<string name="account_settings_notify_summary">Notify in status bar when email arrives</string>
|
||||||
<!-- On Settings screen, setting option name and title of dialog box that opens -->
|
<!-- On Settings screen, setting option name and title of dialog box that opens -->
|
||||||
|
34
res/xml/account_preferences.xml
Normal file
34
res/xml/account_preferences.xml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2009 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- NOTE: The string in android:action must match the one in AccountSettings.java -->
|
||||||
|
|
||||||
|
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<PreferenceCategory
|
||||||
|
android:title="@string/account_settings_title_fmt" />
|
||||||
|
|
||||||
|
<PreferenceScreen
|
||||||
|
android:key="account_settings"
|
||||||
|
android:title="@string/account_settings_action"
|
||||||
|
android:summary="@string/account_settings_exchange_summary">
|
||||||
|
<intent
|
||||||
|
android:action="com.android.email.activity.setup.ACCOUNT_MANAGER_ENTRY"
|
||||||
|
android:targetPackage="com.android.email"
|
||||||
|
android:targetClass="com.android.email.activity.setup.AccountSettings" />
|
||||||
|
</PreferenceScreen>
|
||||||
|
|
||||||
|
</PreferenceScreen>
|
@ -95,11 +95,6 @@
|
|||||||
android:defaultValue="true"
|
android:defaultValue="true"
|
||||||
android:title="@string/account_settings_sync_contacts_enable"
|
android:title="@string/account_settings_sync_contacts_enable"
|
||||||
android:summary="@string/account_settings_sync_contacts_summary" />
|
android:summary="@string/account_settings_sync_contacts_summary" />
|
||||||
|
|
||||||
<PreferenceScreen
|
|
||||||
android:key="add_account"
|
|
||||||
android:title="@string/account_settings_add_account_label" />
|
|
||||||
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
@ -24,4 +24,5 @@
|
|||||||
android:accountType="com.android.exchange"
|
android:accountType="com.android.exchange"
|
||||||
android:icon="@drawable/ic_exchange_accounts"
|
android:icon="@drawable/ic_exchange_accounts"
|
||||||
android:label="@string/exchange_name"
|
android:label="@string/exchange_name"
|
||||||
|
android:accountPreferences="@xml/account_preferences"
|
||||||
/>
|
/>
|
||||||
|
@ -22,13 +22,16 @@ import com.android.email.mail.MessagingException;
|
|||||||
import com.android.email.mail.Sender;
|
import com.android.email.mail.Sender;
|
||||||
import com.android.email.mail.Store;
|
import com.android.email.mail.Store;
|
||||||
import com.android.email.provider.EmailContent.Account;
|
import com.android.email.provider.EmailContent.Account;
|
||||||
|
import com.android.email.provider.EmailContent.AccountColumns;
|
||||||
import com.android.email.provider.EmailContent.HostAuth;
|
import com.android.email.provider.EmailContent.HostAuth;
|
||||||
|
import com.android.email.provider.EmailContent.HostAuthColumns;
|
||||||
import com.android.exchange.Eas;
|
import com.android.exchange.Eas;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
import android.database.Cursor;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.CheckBoxPreference;
|
import android.preference.CheckBoxPreference;
|
||||||
import android.preference.EditTextPreference;
|
import android.preference.EditTextPreference;
|
||||||
@ -42,8 +45,6 @@ import android.util.Log;
|
|||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
|
|
||||||
public class AccountSettings extends PreferenceActivity {
|
public class AccountSettings extends PreferenceActivity {
|
||||||
private static final String EXTRA_ACCOUNT_ID = "account_id";
|
|
||||||
|
|
||||||
private static final String PREFERENCE_TOP_CATEGORY = "account_settings";
|
private static final String PREFERENCE_TOP_CATEGORY = "account_settings";
|
||||||
private static final String PREFERENCE_DESCRIPTION = "account_description";
|
private static final String PREFERENCE_DESCRIPTION = "account_description";
|
||||||
private static final String PREFERENCE_NAME = "account_name";
|
private static final String PREFERENCE_NAME = "account_name";
|
||||||
@ -55,10 +56,17 @@ public class AccountSettings extends PreferenceActivity {
|
|||||||
private static final String PREFERENCE_SERVER_CATERGORY = "account_servers";
|
private static final String PREFERENCE_SERVER_CATERGORY = "account_servers";
|
||||||
private static final String PREFERENCE_INCOMING = "incoming";
|
private static final String PREFERENCE_INCOMING = "incoming";
|
||||||
private static final String PREFERENCE_OUTGOING = "outgoing";
|
private static final String PREFERENCE_OUTGOING = "outgoing";
|
||||||
private static final String PREFERENCE_ADD_ACCOUNT = "add_account";
|
|
||||||
private static final String PREFERENCE_SYNC_CONTACTS = "account_sync_contacts";
|
private static final String PREFERENCE_SYNC_CONTACTS = "account_sync_contacts";
|
||||||
|
|
||||||
private long mAccountId;
|
// NOTE: This string must match the one in res/xml/account_preferences.xml
|
||||||
|
public static final String ACTION_ACCOUNT_MANAGER_ENTRY =
|
||||||
|
"com.android.email.activity.setup.ACCOUNT_MANAGER_ENTRY";
|
||||||
|
// NOTE: This constant should eventually be defined in android.accounts.Constants, but for
|
||||||
|
// now we define it here
|
||||||
|
private static final String ACCOUNT_MANAGER_EXTRA_ACCOUNT = "account";
|
||||||
|
private static final String EXTRA_ACCOUNT_ID = "account_id";
|
||||||
|
|
||||||
|
private long mAccountId = -1;
|
||||||
private Account mAccount;
|
private Account mAccount;
|
||||||
private boolean mAccountDirty;
|
private boolean mAccountDirty;
|
||||||
|
|
||||||
@ -86,14 +94,29 @@ public class AccountSettings extends PreferenceActivity {
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
Intent i = getIntent();
|
Intent i = getIntent();
|
||||||
mAccountId = i.getLongExtra(EXTRA_ACCOUNT_ID, -1);
|
if (i.getAction().equals(ACTION_ACCOUNT_MANAGER_ENTRY)) {
|
||||||
|
// This case occurs if we're changing account settings from Settings -> Accounts
|
||||||
|
setAccountIdFromAccountManagerIntent();
|
||||||
|
} else {
|
||||||
|
// Otherwise, we're called from within the Email app and look for our extra
|
||||||
|
mAccountId = i.getLongExtra(EXTRA_ACCOUNT_ID, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there's no accountId, we're done
|
||||||
|
if (mAccountId == -1) {
|
||||||
|
finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
mAccount = Account.restoreAccountWithId(this, mAccountId);
|
mAccount = Account.restoreAccountWithId(this, mAccountId);
|
||||||
|
// Similarly, if the account has been deleted
|
||||||
if (mAccount == null) {
|
if (mAccount == null) {
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mAccount.mHostAuthRecv = HostAuth.restoreHostAuthWithId(this, mAccount.mHostAuthKeyRecv);
|
mAccount.mHostAuthRecv = HostAuth.restoreHostAuthWithId(this, mAccount.mHostAuthKeyRecv);
|
||||||
mAccount.mHostAuthSend = HostAuth.restoreHostAuthWithId(this, mAccount.mHostAuthKeySend);
|
mAccount.mHostAuthSend = HostAuth.restoreHostAuthWithId(this, mAccount.mHostAuthKeySend);
|
||||||
|
// Or if HostAuth's have been deleted
|
||||||
if (mAccount.mHostAuthRecv == null || mAccount.mHostAuthSend == null) {
|
if (mAccount.mHostAuthRecv == null || mAccount.mHostAuthSend == null) {
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
@ -235,16 +258,42 @@ public class AccountSettings extends PreferenceActivity {
|
|||||||
PREFERENCE_SERVER_CATERGORY);
|
PREFERENCE_SERVER_CATERGORY);
|
||||||
serverCategory.removePreference(mSyncContacts);
|
serverCategory.removePreference(mSyncContacts);
|
||||||
}
|
}
|
||||||
|
|
||||||
findPreference(PREFERENCE_ADD_ACCOUNT).setOnPreferenceClickListener(
|
|
||||||
new Preference.OnPreferenceClickListener() {
|
|
||||||
public boolean onPreferenceClick(Preference preference) {
|
|
||||||
onAddNewAccount();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setAccountIdFromAccountManagerIntent() {
|
||||||
|
// First, get the AccountManager account that we've been ask to handle
|
||||||
|
android.accounts.Account acct =
|
||||||
|
(android.accounts.Account)getIntent()
|
||||||
|
.getParcelableExtra(ACCOUNT_MANAGER_EXTRA_ACCOUNT);
|
||||||
|
// Find a HostAuth using eas and whose login is the name of the AccountManager account
|
||||||
|
Cursor c = getContentResolver().query(HostAuth.CONTENT_URI,
|
||||||
|
new String[] {HostAuthColumns.ID}, HostAuth.LOGIN + "=? AND "
|
||||||
|
+ HostAuthColumns.PROTOCOL + "=?",
|
||||||
|
new String[] {acct.name, "eas"}, null);
|
||||||
|
try {
|
||||||
|
if (c.moveToFirst()) {
|
||||||
|
// This gives us the HostAuth's id
|
||||||
|
String hostAuthId = c.getString(0);
|
||||||
|
// Now, find the EmailProvider Account for this HostAuth
|
||||||
|
Cursor ac = getContentResolver().query(Account.CONTENT_URI,
|
||||||
|
new String[] {AccountColumns.ID},
|
||||||
|
AccountColumns.HOST_AUTH_KEY_RECV + "=? OR "
|
||||||
|
+ AccountColumns.HOST_AUTH_KEY_SEND + "=?",
|
||||||
|
new String[] {hostAuthId, hostAuthId}, null);
|
||||||
|
try {
|
||||||
|
// And if we find one, set mAccountId accordingly
|
||||||
|
if (ac.moveToFirst()) {
|
||||||
|
mAccountId = ac.getLong(0);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
ac.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
c.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
@ -339,9 +388,4 @@ public class AccountSettings extends PreferenceActivity {
|
|||||||
Log.d(Email.LOG_TAG, "Error while trying to invoke sender settings.", e);
|
Log.d(Email.LOG_TAG, "Error while trying to invoke sender settings.", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAddNewAccount() {
|
|
||||||
AccountSetupBasics.actionNewAccount(this);
|
|
||||||
finish();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user