Batch deletion
Also: when re-opening the Activity from the launcher, clear the
mIsInSelectionMode variable in memory.
Bug: 19549465
Change-Id: If589983d3d84c9c18066da08f9879c22db1a75ed
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index c43941f..1668521 100644
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -99,7 +99,9 @@
public static final String ACTION_SET_STARRED = "setStarred";
public static final String ACTION_DELETE_CONTACT = "delete";
+ public static final String ACTION_DELETE_MULTIPLE_CONTACTS = "deleteMultipleContacts";
public static final String EXTRA_CONTACT_URI = "contactUri";
+ public static final String EXTRA_CONTACT_IDS = "contactIds";
public static final String EXTRA_STARRED_FLAG = "starred";
public static final String ACTION_SET_SUPER_PRIMARY = "setSuperPrimary";
@@ -203,6 +205,8 @@
setSuperPrimary(intent);
} else if (ACTION_CLEAR_PRIMARY.equals(action)) {
clearPrimary(intent);
+ } else if (ACTION_DELETE_MULTIPLE_CONTACTS.equals(action)) {
+ deleteMultipleContacts(intent);
} else if (ACTION_DELETE_CONTACT.equals(action)) {
deleteContact(intent);
} else if (ACTION_JOIN_CONTACTS.equals(action)) {
@@ -945,6 +949,17 @@
return serviceIntent;
}
+ /**
+ * Creates an intent that can be sent to this service to delete multiple contacts.
+ */
+ public static Intent createDeleteMultipleContactsIntent(Context context,
+ long[] contactIds) {
+ Intent serviceIntent = new Intent(context, ContactSaveService.class);
+ serviceIntent.setAction(ContactSaveService.ACTION_DELETE_MULTIPLE_CONTACTS);
+ serviceIntent.putExtra(ContactSaveService.EXTRA_CONTACT_IDS, contactIds);
+ return serviceIntent;
+ }
+
private void deleteContact(Intent intent) {
Uri contactUri = intent.getParcelableExtra(EXTRA_CONTACT_URI);
if (contactUri == null) {
@@ -955,6 +970,19 @@
getContentResolver().delete(contactUri, null, null);
}
+ private void deleteMultipleContacts(Intent intent) {
+ final long[] contactIds = intent.getLongArrayExtra(EXTRA_CONTACT_IDS);
+ if (contactIds == null) {
+ Log.e(TAG, "Invalid arguments for deleteMultipleContacts request");
+ return;
+ }
+ for (long contactId : contactIds) {
+ final Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
+ getContentResolver().delete(contactUri, null, null);
+ }
+
+ }
+
/**
* Creates an intent that can be sent to this service to join two contacts.
*/