2013-08-02 123 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()); 
    } 

}