2013-08-02 157 views
0

我想更新聯繫人的新信息。我需要更新3個字段:姓名,電話號碼和公司名稱的聯繫人。這是我的代碼。我的問題是:方法不更新任何新信息Android中的聯繫人更新信息

你能告訴我爲什麼我有錯誤的原因。並告訴我如何解決它!多謝你們!

public void editContact(String _id, String name, String phone, String company) { 
    ContentResolver cr = getContentResolver(); 

    String where = ContactsContract.Data._ID + " = ?" ; 
    String[] params = new String[] {_id}; 

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
    ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) 
     .withSelection(where, params) 
     .withValue(ContactsContract.Data.DISPLAY_NAME, name) 
     .withValue(ContactsContract.CommonDataKinds.Phone.DATA, phone) 
     .withValue(ContactsContract.CommonDataKinds.Organization.DATA, company) 
     .build()); 

    try { 
     cr.applyBatch(ContactsContract.AUTHORITY, ops); 
    } catch (Exception e) { 
     Log.e("ERROR UPDATE: ", e.getMessage()); 
    } 
    this.finish(); 
    Toast.makeText(getApplicationContext(), "Contact saved", Toast.LENGTH_SHORT).show(); 
    this.callHomeActivity(); 
} 
+0

你是否得到任何eroor如果是善意發佈logcat在這裏 – KOTIOS

+0

等我約8個小時。 Stackoverflow不允許我發佈答案。 – R700

+0

所以你解決了這個問題? – KOTIOS

回答

0

@ Stacks28:這就是我 - Mr.Pakapun

我嘗試使用下面的代碼更新的聯繫人的名稱即可。但是,沒有事情發生!聯繫人姓名未更新。代碼有什麼問題?

public void editContact(String _id, String name, String phone, String company) {   
    String where = ContactsContract.Data._ID + " = ? AND " + 
      ContactsContract.Data.MIMETYPE + "= ?"; 
    String[] params = new String[] {_id, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE }; 
    ContentResolver cr = getContentResolver(); 
    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 

    ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI) 
      .withSelection(where, params) 
      .withValue(StructuredName.DISPLAY_NAME, name) 
      .build()); 
    try {   
     cr.applyBatch(ContactsContract.AUTHORITY, ops); 
    } catch (Exception e) { 
     Log.e("ERROR UPDATE: ", e.getMessage()); 
    } 

}