Undemote contact when starring
Bug: 10727765
Change-Id: Icc661cd01f52fbde5ab9354415b5d929165a8bd1
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index 7c8782f..32fb190 100644
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -40,6 +40,7 @@
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.Groups;
+import android.provider.ContactsContract.PinnedPositions;
import android.provider.ContactsContract.Profile;
import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.RawContactsEntity;
@@ -834,6 +835,20 @@
final ContentValues values = new ContentValues(1);
values.put(Contacts.STARRED, value);
getContentResolver().update(contactUri, values, null, null);
+
+ // Undemote the contact if necessary
+ final Cursor c = getContentResolver().query(contactUri, new String[] {Contacts._ID},
+ null, null, null);
+ try {
+ if (c.moveToFirst()) {
+ final long id = c.getLong(0);
+ values.clear();
+ values.put(String.valueOf(id), PinnedPositions.UNDEMOTE);
+ getContentResolver().update(PinnedPositions.UPDATE_URI, values, null, null);
+ }
+ } finally {
+ c.close();
+ }
}
/**