Search code examples
androidandroid-contactscontactgroups

When is the ANDROID Contact Group PHYSICALLY removed instead of being marked as deleted?


I am trying to permanently remove a Android Contact Group and have used the Sync parameter and it always appears the record is simply marked as deleted and not physically removed. Can anyone explain how/when, if ever, the Contract group row is deleted permanently or show a snippet of code demonstrating how to do this? The records I am trying to remove are ones that I added, so they are not Read-Only.

Linked back to https://stackoverflow.com/a/21376905/5398898

My Delete Code:

private void RemoveGroup()
{
    TextView tv = (TextView) this.findViewById(R.id.helloworld);

    int[] startId = {10};//{6, 7, 8, 9, 10, 11};
    String groupName = "My New Contacts";

    Uri mUri = ContactsContract.Groups.CONTENT_URI;
    mUri.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();

    for (int n = 0; n < startId.length; n++) {

        groupCount = startId[n];

        ContentValues values = new ContentValues();
        values.put(ContactsContract.Groups._ID, groupCount);

        try {
            getContentResolver().delete(mUri, values.toString(),null);
        } catch (Exception ex) {
            tv.setText(ex.getMessage());
        }
    }
}

Result when reading the groups:

Image can be found here https://i.sstatic.net/5OOfc.png


Solution

  • You are building the correct Uri but not using it, try like this

    Uri mUri = ContactsContract.Groups.CONTENT_URI;
    mUri = mUri.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();