如何以编程方式将出生日期的联系人添加到设备联系人中?

How to Add a contact with Date of Birth into device contacts programmatically?

我正在使用以下代码插入联系人,但我无法找到 Date_Of_Birth 字段来添加它。

ContentValues values = new ContentValues();
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, "0123456789");
values.put(Phone.TYPE, Phone.TYPE_CUSTOM);
values.put(Phone.LABEL, "Ravi");
Uri dataUri = getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values);

我认为你需要:ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY

但要小心:一些 OEM 确实提供了他们自己的 ContactProvider...

values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.Event.TYPE, ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY);
values.put(ContactsContract.CommonDataKinds.Event.START_DATE, birthdayStartDate);

Uri dataUri = getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                        .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID)
                        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE)
                        .withValue(ContactsContract.CommonDataKinds.Event.START_DATE, "26-05-2015")
                        .withValue(ContactsContract.CommonDataKinds.Event.TYPE, ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY)
                        .build());

据我所知,我们可以添加上述格式的生日,但前提是设备支持。由于很多设备在默认设备联系人中没有生日列。当您以编程方式创建联系人时,它是在设备上创建的,生日字段不可用。它稍后会与 google 帐户同步,并且生日字段会显示。 我发布这个是因为它有时可能对某人有用。