无法从联系人获取正确的生日和周年纪念数据
问题描述:
我能够获取联系人的其他信息(显示名称,组织,电话号码和email_id),但无法获取该联系人的生日和周年纪念。无法从联系人获取正确的生日和周年纪念数据
这是我用于生日的代码。它取数据,但给我错误的数据,即重复所有联系人的相同数据。
private String getBDate(String id) {
String bday = null;
ContentResolver cr = getContentResolver();
Uri uri = ContactsContract.Data.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Event.CONTACT_ID,
ContactsContract.CommonDataKinds.Event.START_DATE };
String where = ContactsContract.Data.MIMETYPE + "= ? AND "
+ ContactsContract.CommonDataKinds.Event.TYPE + "="
+ ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY;
String[] selectionArgs = new String[] { ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE };
String sortOrder = null;
Cursor cur = cr.query(uri, projection, where, selectionArgs, sortOrder);
while (cur.moveToNext()) {
bday = cur
.getString(cur
.getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE));
Log.v("Birthday", bday);
}
cur.close();
return bday;
}
周年纪念日的情况也是如此,这里是它的代码。在某些情况下,不会添加周年纪念,但它仍会显示来自其他联系人的数据。
private String getAnnv(String id) {
String annv = null;
ContentResolver cr = getContentResolver();
Uri uri = ContactsContract.Data.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Event.CONTACT_ID,
ContactsContract.CommonDataKinds.Event.START_DATE };
String where = ContactsContract.Data.MIMETYPE + "= ? AND "
+ ContactsContract.CommonDataKinds.Event.TYPE + "="
+ ContactsContract.CommonDataKinds.Event.TYPE_ANNIVERSARY;
String[] selectionArgs = new String[] { ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE };
// String sortOrder = null;
Cursor cur = cr.query(uri, projection, where, selectionArgs, null);
while (cur.moveToNext()) {
annv = cur
.getString(cur
.getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE));
Log.v("Anniversary", annv);
}
cur.close();
return annv;
}
答
你没有使用字符串ID参数在哪里条件,所以请再次检查。
E,g private String getAnnv(String id)函数为ID输入,但似乎没有使用withing函数,所以请把这个ID在条件检查,这应该工作。
如
ContactsContract.CommonDataKinds.Event.CONTACT_ID + "= " + ID
AND ContactsContract.Data.MIMETYPE + "= ? AND "
+0
我不明白,请你解释一下。 – Beenal 2012-08-01 05:21:54
+0
回答更新请看现在... – 2012-08-01 07:58:44
我认为这将是对你非常有用 http://stackoverflow.com/questions/2482631/how-to-get-contacts-in-order-of-their-即将到来的生日 – Ramkumar 2012-07-30 13:23:14
其实在一些问题中,我没有找到解决方案,所以没有接受答案。 – Beenal 2012-08-01 09:35:20
我需要和你谈谈@Beenal。我需要联系人列表中的相同出生日期和周年日期。你有这个解决方案?请尽可能尽快回复。如果你有解决方案,那么请尽快给我代码。它的紧急请帮助我。 – 2016-07-23 11:51:24