将数据(电话号码、备注等)添加到现有联系人(ANDROID 2.1)

将数据(电话号码、备注等)添加到现有联系人(ANDROID 2.1),android,Android,我已经 我面临一个大问题:我无法向现有联系人添加数据:( 我正在开发一个管理联系人的应用程序,我可以添加、删除或编辑联系人。 创建是可以的,因为我为联系人创建了所有类型的数据(即使它们是空的)(这不是一个好方法,我稍后会更改)。因此,当我想要编辑这些数据时,我可以在数据库中找到它们(使用datas.CONTENT_URI)’,因为它们都已经存在 但是,如果我使用ANDROID联系人应用程序创建新联系人,则只会为联系人创建填写FATA。当我尝试添加新电话号码时,例如在我的应用程序中,我会收到一个错

我已经 我面临一个大问题:我无法向现有联系人添加数据:( 我正在开发一个管理联系人的应用程序,我可以添加、删除或编辑联系人。 创建是可以的,因为我为联系人创建了所有类型的数据(即使它们是空的)(这不是一个好方法,我稍后会更改)。因此,当我想要编辑这些数据时,我可以在数据库中找到它们(使用datas.CONTENT_URI)’,因为它们都已经存在

但是,如果我使用ANDROID联系人应用程序创建新联系人,则只会为联系人创建填写FATA。当我尝试添加新电话号码时,例如在我的应用程序中,我会收到一个错误:(

以下是我尝试添加电话号码的代码:

ContentValues contentValues = new ContentValues();

contentValues.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
contentValues.put(ContactsContract.CommonDataKinds.Phone.NUMBER, pNewPhoneNumber.number);
contentValues.put(ContactsContract.CommonDataKinds.Phone.TYPE, pNewPhoneNumber.type);
contentValues.put(ContactsContract.Data.CONTACT_ID, pContact.getContactId());

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

ops.add(ContentProviderOperation.newInsert(
  ContactsContract.Data.CONTENT_URI).withValues(contentValues).build());

try
{
 pContext.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} 
catch (Exception e)
{
        Context ctx = pContext.getApplicationContext();
        String txt = "Exception encoutered while inserting contact: " + e;
        int duration = Toast.LENGTH_SHORT;
        Toast toast = Toast.makeText(ctx, txt, duration);
        toast.show();
 Log.e(TAG, txt);
}
所以我有一个数据库问题,好吧。但我错在哪里呢

如果你知道如何解决这个问题:让我知道:) 谢谢你,我想

contentValues.put(ContactsContract.Data.RAW_CONTACT_ID, ...);

不见了。

非常感谢,它工作得非常好。 我必须得到联系人的原始ID,然后使用你的解决方案

以下是可用的源代码:

    ContentValues contentValues = new ContentValues();

    ContentValues contentValues = new ContentValues();
    contentValues.put(ContactsContract.Data.RAW_CONTACT_ID, pContact.getContactRawId());
    contentValues.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
    contentValues.put(ContactsContract.CommonDataKinds.Phone.NUMBER, pNewPhoneNumber.number);
    contentValues.put(ContactsContract.CommonDataKinds.Phone.TYPE, pNewPhoneNumber.type);

    ops.add(ContentProviderOperation.newInsert(
            ContactsContract.Data.CONTENT_URI).withValues(contentValues).build()); 
再次感谢你;)

    ContentValues contentValues = new ContentValues();

    ContentValues contentValues = new ContentValues();
    contentValues.put(ContactsContract.Data.RAW_CONTACT_ID, pContact.getContactRawId());
    contentValues.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
    contentValues.put(ContactsContract.CommonDataKinds.Phone.NUMBER, pNewPhoneNumber.number);
    contentValues.put(ContactsContract.CommonDataKinds.Phone.TYPE, pNewPhoneNumber.type);

    ops.add(ContentProviderOperation.newInsert(
            ContactsContract.Data.CONTENT_URI).withValues(contentValues).build());