Предполагается, что в моей адресной книге сохранен контакт, который называется TomTasche с почтовым адресом stackoverflow@gmail.com. Как я могу получить имя контакта, если я знаю только почтовый адрес?
Я уже задавал похожие вопросы о получении псевдонима контакта здесь , но если я изменю этот код для запроса почты, вот так:
Cursor cur = context.getContentResolver().query(Email.CONTENT_URI, new String[] {Email.DISPLAY_NAME, Email.TYPE, Email.CONTACT_ID}, Email.DATA + " = " + "stackoverflow@gmail.com", null, null);
final int nameIndex = cur.getColumnIndex(Email.DISPLAY_NAME);
final int typeIndex = cur.getColumnIndex(Email.TYPE);
final int idIndex = cur.getColumnIndex(Email.CONTACT_ID);
if (cur.moveToFirst()) {
name = cur.getString(nameIndex);
type = cur.getString(typeIndex);
id = cur.getString(idIndex);
} else {
name = UNKNOWN;
}
он принудительно закрывается, и logcat сообщает мне, что рядом с @ gmail есть синтаксическая ошибка.
06-22 09:21:14.260: ERROR/DatabaseUtils(110): Writing exception to parcel
06-22 09:21:14.260: ERROR/DatabaseUtils(110): android.database.sqlite.SQLiteException: near "@gmail": syntax error: , while compiling: SELECT display_name, data2, contact_id FROM view_data_restricted data WHERE (1 AND mimetype = 'vnd.android.cursor.item/phone_v2') AND (data1 = "Tom" <stackoverflow@gmail.com>)
Интересно, что кажется, что запрос в порядке. Logcat распечатывает имя контакта:
06-22 09:21:14.260: [...] AND (data1 = "Tom" <stackoverflow@gmail.com>)
Итак, как я могу получить имя?
Спасибо
Том
редактирование:
Синтаксическая ошибка вызвана отсутствием кавычек, , но курсор все равно возвращает ноль.