加入DATAS(电话号码,备注等)到一个现有的联系人(Android 2.1的)备注、电话号码、联系人、DATAS

2023-09-04 10:42:15 作者:你的未来我预定了 つ

我已经 我要面临的一个大问题:我不能添加DATAS到现有联系人:( 我的深化发展至极管理联系人应用程序,我可以添加,删除或编辑联系人。 创造是好的,因为我创建各种类型DATAS(即使是空的)的接触(这是不是一个好办法,我会改变这个版本)。所以,当我想编辑这些DATAS我可以找到他们的数据库(含Datas.CONTENT_URI)因为他们媒体链接存在!

I've I'm faced to a big issue : I can't add datas to an existing contact :( I'm developping an application wich manage contacts, I can add, delete or edit contacts. The creation is ok, because I create all types of datas (even if they are empty) for the contact (this is NOT a good way, I will change this later). So when I want to edit those datas I can find them to the data base (with Datas.CONTENT_URI) 'cause they allready exist !

但是,如果我创建一个只填充fatas的联系人创建的ANDROID应用接触一个新的联系人。当我尝试添加新的电话号码,例如我的申请,我得到一个错误:(

But if I create a new contact with the ANDROID contact application only the fill fatas are created for a contact. When I try to add new phone number for example with my application I get a error :(

下面是我的code尝试添加电话号码:

Here is my code to try to add phone number :

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

下面是错误:

06-23 09:21:54.030: ERROR/DatabaseUtils(111): Writing exception to parcel
06-23 09:21:54.030: ERROR/DatabaseUtils(111): java.lang.NullPointerException
06-23 09:21:54.030: ERROR/DatabaseUtils(111):     at com.android.providers.contacts.ContactsProvider2.insertData(ContactsProvider2.java:2206)
06-23 09:21:54.030: ERROR/DatabaseUtils(111):     at com.android.providers.contacts.ContactsProvider2.insertInTransaction(ContactsProvider2.java:2096)
06-23 09:21:54.030: ERROR/DatabaseUtils(111):     at com.android.providers.contacts.SQLiteContentProvider.insert(SQLiteContentProvider.java:101)
06-23 09:21:54.030: ERROR/DatabaseUtils(111):     at com.android.providers.contacts.ContactsProvider2.insert(ContactsProvider2.java:1941)
06-23 09:21:54.030: ERROR/DatabaseUtils(111):     at android.content.ContentProviderOperation.apply(ContentProviderOperation.java:211)
06-23 09:21:54.030: ERROR/DatabaseUtils(111):     at com.android.providers.contacts.SQLiteContentProvider.applyBatch(SQLiteContentProvider.java:200)
06-23 09:21:54.030: ERROR/DatabaseUtils(111):     at com.android.providers.contacts.ContactsProvider2.applyBatch(ContactsProvider2.java:1960)
06-23 09:21:54.030: ERROR/DatabaseUtils(111):     at android.content.ContentProvider$Transport.applyBatch(ContentProvider.java:169)
06-23 09:21:54.030: ERROR/DatabaseUtils(111):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:167)
06-23 09:21:54.030: ERROR/DatabaseUtils(111):     at android.os.Binder.execTransact(Binder.java:287)
06-23 09:21:54.030: ERROR/DatabaseUtils(111):     at dalvik.system.NativeStart.run(Native Method)

所以,我有一个数据库的问题,确定。但是,在我错了?

So I have a database problem, OK. But where am I wrong ?

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

If you know how to solve this problem : let me know :) Thank you

推荐答案

我觉得

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

缺失。

 
精彩推荐
图片推荐