У меня есть код для чтения контактных данных и чтения дней рождения. Но как мне получить список контактов в порядке их предстоящего дня рождения?Как получить контакты в порядке их предстоящих дней рождения?
Для одного контакта, идентифицированной id
, я получаю информацию и день рождения, как это:
Cursor c = null;
try {
Uri uri = ContentUris.withAppendedId(
ContactsContract.Contacts.CONTENT_URI, id);
c = ctx.getContentResolver().query(uri, null, null, null, null);
if (c != null) {
if (c.moveToFirst()) {
DatabaseUtils.cursorRowToContentValues(c, data);
}
}
c.close();
// read birthday
c = ctx.getContentResolver()
.query(
Data.CONTENT_URI,
new String[] { Event.DATA },
Data.CONTACT_ID + "=" + id + " AND "
+ Data.MIMETYPE + "= '"
+ Event.CONTENT_ITEM_TYPE + "' AND "
+ Event.TYPE + "=" + Event.TYPE_BIRTHDAY,
null, Data.DISPLAY_NAME);
if (c != null) {
try {
if (c.moveToFirst()) {
this.setBirthday(c.getString(0));
}
} finally {
c.close();
}
}
return super.load(id);
} catch (Exception e) {
Log.v(TAG(), e.getMessage(), e);
e.printStackTrace();
return false;
} finally {
if (c != null)
c.close();
}
и код для чтения всех контактов:
public Cursor getList() {
// Get the base URI for the People table in the Contacts content
// provider.
Uri contacts = ContactsContract.Contacts.CONTENT_URI;
// Make the query.
ContentResolver cr = ctx.getContentResolver();
// Form an array specifying which columns to return.
String[] projection = new String[] { ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME };
Cursor managedCursor = cr.query(contacts, projection, null, null,
ContactsContract.Contacts.DISPLAY_NAME
+ " COLLATE LOCALIZED ASC");
return managedCursor;
}
Мне интересно, возвращает ли этот запрос дату рождения или дату юбилея? И он возвращает все ближайшие? Например: если я запрошу 25 декабря, он вернет людей, у которых есть юбилеи после 25-го и после 1 января? – Pentium10
1) Он возвращает дату рождения в формате yyyy-MM-dd. Чтобы получить юбилейную дату, вы должны подстроить ее. 2) Я решил это, дважды вызвав запрос - проверьте отредактированный код. – krtek