Android 无法从联系人获取正确的生日和周年数据
我能够获取联系人的其他信息(显示姓名、组织机构、电话号码和电子邮件地址),但无法获取该联系人的生日和周年纪念日 这是我生日时使用的代码。它确实获取了数据,但给了我错误的数据,即对所有联系人重复相同的数据Android 无法从联系人获取正确的生日和周年数据,android,contactscontract,Android,Contactscontract,我能够获取联系人的其他信息(显示姓名、组织机构、电话号码和电子邮件地址),但无法获取该联系人的生日和周年纪念日 这是我生日时使用的代码。它确实获取了数据,但给了我错误的数据,即对所有联系人重复相同的数据 private String getBDate(String id) { String bday = null; ContentResolver cr = getContentResolver(); Uri uri = ContactsContract.Data.CONT
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;
}
您没有在where条件下使用字符串id参数,请再次检查 E、 g private String getAnnv(String id)函数具有id的输入,但这似乎不用于ing函数,因此请将该id置于条件检查中,这样应该可以工作 e、 g
我想这对你非常有用,实际上在一些问题上,我没有找到解决方案,因此没有接受这个答案。我需要和你@Beenal谈谈。我需要相同的生日和周年纪念日从联系人名单。你有解决这个问题的办法吗??请尽快回复。如果你有解决方案,请尽快给我代码。有急事,请帮帮我。我不明白,你能解释一下吗。
ContactsContract.CommonDataKinds.Event.CONTACT_ID + "= " + ID
AND ContactsContract.Data.MIMETYPE + "= ? AND "