2014-08-28 26 views
0

接觸我使用下面的代碼來更新聯繫人:機器人:更新使用批處理方法

Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
        new String[] {Phone.NUMBER, ContactsContract.Data.CONTACT_ID}, null, null, null); 
    while (cursor.moveToNext()) { 

     String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA)); 
     String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.CONTACT_ID)); 

     ArrayList<ContentProviderOperation> ops = 
           new ArrayList<ContentProviderOperation>(); 
     Builder builder= ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI); 
     builder.withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " + 
       ContactsContract.Data.MIMETYPE + "=?"+ " AND " + 
       ContactsContract.CommonDataKinds.Organization.TYPE + "=?", new String[]{contactId, 
       ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, 
       String.valueOf(ContactsContract.CommonDataKinds.Phone.TYPE_HOME)}); 
     builder.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, newNumber); 
      ops.add(builder.build()); 
     try { 
       getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
     } catch (RemoteException e) { 
       Log.i("SirwanError", e.getMessage()); 
     } catch (OperationApplicationException e) { 
       Log.i("SirwanError", e.getMessage()); 
     } 

    } 

計劃工作沒有任何錯誤,但接觸沒有更新。
有什麼想法?

回答

0

最後我解決我的問題是這樣的:

ContentValues contentValues = new ContentValues(); 

contentValues.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); 
contentValues.put(ContactsContract.CommonDataKinds.Phone.NUMBER, newNumber); 
contentValues.put(ContactsContract.CommonDataKinds.Phone.TYPE, contactType); 
contentValues.put(ContactsContract.Data.RAW_CONTACT_ID, contactId); 


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

ops.add(ContentProviderOperation.newUpdate(
     ContactsContract.Data.CONTENT_URI) 
     .withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " + 
     ContactsContract.Data.MIMETYPE + "=?"+ " AND " + 
     ContactsContract.CommonDataKinds.Organization.TYPE + "=?", new String[]{contactId, 
           ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, 
           String.valueOf(contactType)}).withValues(contentValues).build()); 


try 
{ 
      getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
} 

catch (Exception e) 
{ 

      Log.e("Error", e.getMessage()); 
}