如何通过编程方式将具有出生日期的联系人添加到设备联系人?

问题描述 投票:0回答:3

我使用以下代码插入联系人,但我无法找到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);
android android-contentprovider android-contacts
3个回答
1
投票
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());

据我所知,我们可以以上述格式添加生日,但仅限于设备支持。由于许多设备在默认设备联系人中没有生日列。以编程方式创建联系人时,在设备上创建联系人,其中生日字段不可用。它稍后与谷歌帐户同步,生日字段可见。我发布这个,因为它可能对某人有用。


0
投票

我想你需要:ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY

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


0
投票
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);
© www.soinside.com 2019 - 2024. All rights reserved.