在Android里,我用sqlitedb.getContentResolver().delete(Uri.parse(ContactsContract.RawContacts.CONTENT_URI.toString() +"?" + ContactsContract.CALLER_IS_SYNCADAPTER+" = true"), ContactsContract.RawContacts._ID + " > 0", null);能删除所有联系人,如果我删除单个呢?我试过: String contactID = "";
         Cursor cur = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);   
         if (cur.moveToFirst()) {
          int idColumn  = cur.getColumnIndex(ContactsContract.Contacts._ID);
          String idName = cur.getColumnName(cur.getColumnIndex(ContactsContract.Contacts._ID));
          contactID = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));   
              tv.append(idName+":idName:"+contactID+"\n");
         
          //Delete the contact
          getContentResolver().delete(ContactsContract.Data.CONTENT_URI,
ContactsContract.Data.RAW_CONTACT_ID+"="+contactID ,null);
getContentResolver().delete(ContactsContract.RawContacts.CONTENT_URI,
ContactsContract.RawContacts._ID+"="+contactID ,null);
getContentResolver().delete(ContactsContract.Contacts.CONTENT_URI,
ContactsContract.Contacts._ID+"="+contactID , null);}但是行不通,请问我代码毛病出在哪

解决方案 »

  1.   

    试试这个呢?  ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
            Uri rawContactUri = Uri.parse(RawContacts.CONTENT_URI.toString() + "?" + ContactsContract.CALLER_IS_SYNCADAPTER
                    + "=true");
            ops.add(ContentProviderOperation.newDelete(ContentUris.withAppendedId(rawContactUri, rawId)).build());
            try {
                context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
            } catch (Exception e) {
                return false;
            }
            return true;