如何在没有一年的情况下检索从 Google 通讯录同步的联系人事件?
Posted
技术标签:
【中文标题】如何在没有一年的情况下检索从 Google 通讯录同步的联系人事件?【英文标题】:How can I retrieve contact events synced from Google Contacts without a year? 【发布时间】:2011-10-03 05:27:22 【问题描述】:我正在使用下面的代码来检索事件和联系人的光标,它对于指定年份的事件工作得很好。不幸的是,此查询不返回仅设置日期和月份的事件。
我在Google Contacts 中为一些联系人的生日设置了这些日期,我想知道是否需要使用 RawContacts 而不是 ContactsContract 来获取这些值?
更新:似乎检索到没有年份输入手机的事件。只有通过http://www.google.com/contacts 添加的事件不会被检索。我可以在联系人应用程序中看到这些事件 - 显示为 --05-23
。
String[] projection = new String[]
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
Event.CONTACT_ID,
Event.START_DATE,
Event.TYPE
;
Cursor c = mContext.getContentResolver().query(
ContactsContract.Data.CONTENT_URI,
projection,
ContactsContract.Data.MIMETYPE + "= ?",
new String[] Event.CONTENT_ITEM_TYPE ,
Event.START_DATE);
c.moveToFirst();
int nameIndex = c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
int dateIndex = c.getColumnIndex(Event.START_DATE);
String name, date;
while (c.moveToNext())
name = c.getString(nameIndex);
date = c.getString(dateIndex);
Log.d(TAG, "Event for " + name + " is " + date);
c.close();
【问题讨论】:
【参考方案1】:我在 Nexus S (2.3.4) 上运行,我使用了你的确切代码,我打印了所有联系人,包括没有年份的联系人。
07-19 17:08:36.847: DEBUG/test(24646): Event for Warren Upton is --12-01
07-19 17:08:36.851: DEBUG/test(24646): Event for Marion Atkins is 1934-11-24
您能否详细说明如何重现该问题?
【讨论】:
嗨,杰夫,感谢您对此进行调查。问题实际上似乎只是在google.com/contacts在线编辑的联系人@【参考方案2】:我猜没有年份的事件没有设置Event.START_DATE
(因为根据定义,日期是日/月/年)。如果您将其从投影中移除并排序,它们会被检索到吗?
【讨论】:
没有,恐怕还没有退回来。以上是关于如何在没有一年的情况下检索从 Google 通讯录同步的联系人事件?的主要内容,如果未能解决你的问题,请参考以下文章