0

我想更新联系人的新信息。我需要更新 3 个字段:联系人的姓名、电话号码和公司名称。这是我的代码。我的问题是:该方法没有更新任何新信息

你能告诉我我有错误的原因吗?并告诉我如何解决它!多谢你们!

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();
}
4

1 回答 1

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());
    }

}
于 2013-08-02T10:04:04.300 回答