Merge "Show "add account" dialog when it needs to appear" into ub-contactsdialer-h-dev
diff --git a/src/com/android/contacts/common/preference/ContactsPreferences.java b/src/com/android/contacts/common/preference/ContactsPreferences.java
index 8865e91..ac7b0e0 100644
--- a/src/com/android/contacts/common/preference/ContactsPreferences.java
+++ b/src/com/android/contacts/common/preference/ContactsPreferences.java
@@ -16,13 +16,10 @@
package com.android.contacts.common.preference;
-import android.content.ContentResolver;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
-import android.net.Uri;
-import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.preference.PreferenceManager;
@@ -219,7 +216,8 @@
return defaultAccount == null || !defaultAccount.isNullAccount();
}
- if (currentWritableAccounts.size() == 1) {
+ if (currentWritableAccounts.size() == 1
+ && !currentWritableAccounts.get(0).isNullAccount()) {
return false;
}
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index 65c30e8..42ef513 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -987,6 +987,9 @@
mStatus = Status.SUB_ACTIVITY;
startActivityForResult(intent, REQUEST_CODE_ACCOUNTS_CHANGED);
} else {
+ // Make sure the default account is automatically set if there is only one non-device
+ // account.
+ mEditorUtils.maybeUpdateDefaultAccount();
// Otherwise, there should be a default account. Then either create a local contact
// (if default account is null) or create a contact with the specified account.
AccountWithDataSet defaultAccount = mEditorUtils.getOnlyOrDefaultAccount();
diff --git a/src/com/android/contacts/editor/ContactEditorUtils.java b/src/com/android/contacts/editor/ContactEditorUtils.java
index fc1a887..5b80b04 100644
--- a/src/com/android/contacts/editor/ContactEditorUtils.java
+++ b/src/com/android/contacts/editor/ContactEditorUtils.java
@@ -132,6 +132,20 @@
return mContactsPrefs.shouldShowAccountChangedNotification(getWritableAccounts());
}
+ /**
+ * Sets the only non-device account to be default if it is not already.
+ */
+ public void maybeUpdateDefaultAccount() {
+ final List<AccountWithDataSet> currentWritableAccounts = getWritableAccounts();
+ if (currentWritableAccounts.size() == 1) {
+ final AccountWithDataSet onlyAccount = currentWritableAccounts.get(0);
+ if (!onlyAccount.isNullAccount()
+ && !onlyAccount.equals(mContactsPrefs.getDefaultAccount())) {
+ mContactsPrefs.setDefaultAccount(onlyAccount);
+ }
+ }
+ }
+
@VisibleForTesting
String[] getWritableAccountTypeStrings() {
final Set<String> types = Sets.newHashSet();