I am new when it comes to working with contacts. Here is my code I am using. It only errors when I supply a first and last name. If I supply only a display name it works fine. I am guessing it is something to do with my selection line.
private void deleteContact(String displayName, String firstName,
String lastName) {
String selection = "";
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ContentProviderOperation.Builder op = ContentProviderOperation.newDelete(ContactsContract.RawContacts.CONTENT_URI);
//Check is display name not empty
if(!displayName.isEmpty()) {
String[] selectionArgs1 = new String[] {displayName};
selection = ContactsContract.Data..DISPLAY_NAME + " = ? ";
op.withSelection(selection, selectionArgs1);
ops.add(op.build());
}
//Check is first and last name not empty
if(!firstName.isEmpty() && !lastName.isEmpty()) {
String[] selectionArgs2 = new String[] {firstName,lastName};
selection = String.valueOf(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME) + " = ? AND " + String.valueOf(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME) + " = ? " ;
op.withSelection(selection, selectionArgs2);
ops.add(op.build());
}
try {
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
e.printStackTrace();
} catch (OperationApplicationException e) {
e.printStackTrace();
}
}
private void deleteContact(String displayName, String firstName,
String lastName) {
String selection = "";
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ContentProviderOperation.Builder op = ContentProviderOperation.newDelete(ContactsContract.RawContacts.CONTENT_URI);
//Check is display name not empty
if(!displayName.isEmpty()) {
String[] selectionArgs1 = new String[] {displayName};
selection = ContactsContract.Data..DISPLAY_NAME + " = ? ";
op.withSelection(selection, selectionArgs1);
ops.add(op.build());
}
//Check is first and last name not empty
if(!firstName.isEmpty() && !lastName.isEmpty()) {
String[] selectionArgs2 = new String[] {firstName,lastName};
selection = String.valueOf(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME) + " = ? AND " + String.valueOf(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME) + " = ? " ;
op.withSelection(selection, selectionArgs2);
ops.add(op.build());
}
try {
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
e.printStackTrace();
} catch (OperationApplicationException e) {
e.printStackTrace();
}
}