背景
我正在尝试更新联系人数据,并在其中添加每个人的出生日期。
问题
似乎对于我尝试的每个设备(我并没有尝试那么多设备),插入都存在以下一个或多个问题:
- 在查看/编辑联系人时,无法单击和编辑出生日期。
- 在查看/编辑联系人时,显示的格式与用户输入的格式不同。
- 缺少年份,或者完全错误的年份。
- 在查看联系人时,出生日期未显示,但在编辑时显示。反之亦然。
我尝试过的方法
我尝试使用时间戳和完整的 ISO8601 格式(因为根据 这个链接,它是 "yyyy-MM-dd HH:mm:ss")。我也尝试了 "yyyy-MM-dd",并尝试使用设备日期的默认格式。
所有方法都存在上述至少一种问题。
下面是一段代码:
final Date birthdate = ...
// String birthdateStr = new SimpleDateFormat("yyyy-MM-dd").format(birthdate);
// String birthdateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(birthdate);
// String birthdateStr = new SimpleDateFormat(((SimpleDateFormat) java.text.DateFormat.getDateInstance(java.text.DateFormat.DEFAULT, Locale.getDefault())).toLocalizedPattern(),Locale.getDefault()).format(birthdate);
String birthdateStr = Long.toString(birthdate.getTime()/1000);
final Builder builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValue(Data.RAW_CONTACT_ID, ...)
.withValue(ContactsContract.Data.MIMETYPE, Event.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Event.START_DATE, birthdateStr)
.withValue(ContactsContract.CommonDataKinds.Event.TYPE,
ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY);
当然,我也在这个问题上进行了调查,并发现类似的问题,但是没有任何建议的解决方案似乎很好用。
问题
如何将出生日期真正地插入联系人?为什么每个设备都有自己解释日期的方式?正确的标准是什么?