【问题标题】:Add datas (phone number, notes etc...) to an existing contact (ANDROID 2.1)将数据(电话号码、备注等)添加到现有联系人(ANDROID 2.1)
【发布时间】:2012-01-25 19:30:24
【问题描述】:

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

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

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

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)

所以我有一个数据库问题,好的。但是我哪里错了?

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

【问题讨论】:

    标签: android


    【解决方案1】:

    我猜

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

    不见了。

    【讨论】:

      【解决方案2】:

      非常感谢,它运行良好。 我必须获取联系人的 rawid,然后使用您的解决方案。

      这里是工作源代码:

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

      再次感谢您;)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-17
        • 2018-05-27
        • 1970-01-01
        • 2017-12-07
        • 2014-11-01
        • 2018-01-26
        相关资源
        最近更新 更多