Toast Fixes
Linking snackbar in duplicates respects name order.
(No Name) contact deletion in list view fix.
Linking toast for quick contacts.
Bug: 32243988
Test: Manual testing by selecting and linking toasts from quick contact
and duplicates.
Change-Id: I4fef5c250ab5bb960ffb34c04fec01062d6f1235
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index 1dcc838..1b2c22d 100755
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -47,6 +47,7 @@
import android.provider.ContactsContract.RawContactsEntity;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.os.ResultReceiver;
+import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
@@ -61,6 +62,8 @@
import com.android.contacts.common.model.RawContactModifier;
import com.android.contacts.common.model.SimContact;
import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.contacts.common.util.ContactDisplayUtils;
import com.android.contacts.common.util.PermissionsUtil;
import com.android.contacts.compat.PinnedPositionsCompat;
import com.android.contacts.util.ContactPhotoUtils;
@@ -1407,7 +1410,11 @@
result.putString(EXTRA_DISPLAY_NAME, name);
receiver.send(CONTACTS_LINKED, result);
} else {
- showToast(R.string.contactsJoinedMessage);
+ if (TextUtils.isEmpty(name)) {
+ showToast(R.string.contactsJoinedMessage);
+ } else {
+ showToast(R.string.contactsJoinedNamedMessage, name);
+ }
}
} else {
if (receiver != null) {
@@ -1427,22 +1434,28 @@
}
whereBuilder.deleteCharAt(whereBuilder.length() - 1).append(')');
final Cursor cursor = getContentResolver().query(Contacts.CONTENT_URI,
- new String[]{Contacts._ID, Contacts.DISPLAY_NAME},
+ new String[]{Contacts._ID, Contacts.DISPLAY_NAME,
+ Contacts.DISPLAY_NAME_ALTERNATIVE},
whereBuilder.toString(), whereArgs, null);
String name = null;
+ String nameAlt = null;
long contactId = 0;
try {
if (cursor.moveToFirst()) {
contactId = cursor.getLong(0);
name = cursor.getString(1);
+ nameAlt = cursor.getString(2);
}
while(cursor.moveToNext()) {
if (cursor.getLong(0) != contactId) {
return null;
}
}
- return name == null ? "" : name;
+
+ final String formattedName = ContactDisplayUtils.getPreferredDisplayName(name, nameAlt,
+ new ContactsPreferences(getApplicationContext()));
+ return formattedName == null ? "" : formattedName;
} finally {
if (cursor != null) {
cursor.close();
@@ -1533,6 +1546,11 @@
final String name = queryNameOfLinkedContacts(new long[] {contactId1, contactId2});
Intent callbackIntent = intent.getParcelableExtra(EXTRA_CALLBACK_INTENT);
if (success && name != null) {
+ if (TextUtils.isEmpty(name)) {
+ showToast(R.string.contactsJoinedMessage);
+ } else {
+ showToast(R.string.contactsJoinedNamedMessage, name);
+ }
Uri uri = RawContacts.getContactLookupUri(resolver,
ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactIds[0]));
callbackIntent.setData(uri);
@@ -1698,6 +1716,22 @@
}
/**
+ * Shows a toast on the UI thread by formatting messageId using args.
+ * @param messageId id of message string
+ * @param args args to format string
+ */
+ private void showToast(final int messageId, final Object... args) {
+ final String message = getResources().getString(messageId, args);
+ mMainHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ Toast.makeText(ContactSaveService.this, message, Toast.LENGTH_LONG).show();
+ }
+ });
+ }
+
+
+ /**
* Shows a toast on the UI thread.
*/
private void showToast(final int message) {