Eliminar contactos (sin formato) en Android 2.x

Estoy trabajando en pruebas unitarias para mi aplicación de Android y estoy haciendo mucho con Contactos. Tengo que insertar contactos en los proveedores de contenido de Android y eliminarlos después de ejecutar mis pruebas. El problema es que en realidad no se eliminan:

Inserción

ArrayList<ContentProviderOperation> contactOps = new ArrayList<ContentProviderOperation>();

int backRefIndex = 0;

Random r = new Random();

    contactOps.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
                                           .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
                                           .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) 
                                           .build());      
    contactOps.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                                           .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, backRefIndex)
                                           .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
                                           .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "Sample Name" + r.nextInt())
                                           .build());

    contactOps.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, backRefIndex)
                       .withValue(ContactsContract.CommonDataKinds.Phone.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                       .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, "020" + r.nextInt())
                       .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, r.nextInt(20)
                       .build());

    try {
        ContentProviderResult[] result = context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, contactOps);
    } catch (Exception e) {
        e.printStackTrace();
    }

Método de eliminación 1 (devuelve el número de contactos sin procesar, pero en realidad no se eliminan):

int deletedRawContacts = context.getContentResolver().delete(ContactsContract.RawContacts.CONTENT_URI, ContactsContract.RawContacts._ID + " >= ?", new String[]{"0"});

Método de eliminación 2 (mismo resultado que el método de eliminación 1, pero enfoque diferente):

private static int deleteAllRawContacts(Context context) {
    ContentResolver cr = context.getContentResolver();
    Cursor cur = cr.query(ContactsContract.RawContacts.CONTENT_URI, null, null, null, null);
    int count = 0;
    while (cur.moveToNext()) {
        try {
            String contactId = cur.getString(cur.getColumnIndex(ContactsContract.RawContacts._ID));
                count += cr.delete(ContactsContract.RawContacts.CONTENT_URI, ContactsContract.RawContacts._ID + " = ?", new String[]{contactId});
        } catch (Exception e) {
            System.out.println(e.getStackTrace());
        }
    }
    return count;
}

El método de eliminación para Contactos funciona, pero el método de eliminación para Contactos sin formato devolverá un valor falso. Me "dirá" que eliminó todos los contactos, pero cuando ejecuto mi próximo caso de prueba, todavía se pueden encontrar los contactos sin procesar antiguos (es decir, el recuento de contactos insertados vs contactos actuales es incorrecto). Nota: Todas las pruebas se realizan en el emulador de Android.

¿Alguna idea de como resolver esto

Vi una pregunta similar aquí: ¿Cómo eliminar un contacto? - pero la solución tampoco parece resolver el problema dado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta