【发布时间】:2010-06-22 10:22:32
【问题描述】:
假设我的地址簿中保存了一个联系人,名为“TomTasche”,邮件地址为“stackoverflow@gmail.com”。如果我只知道邮件地址,如何检索联系人的姓名?
我已经问过关于检索联系人昵称 here 的类似问题,但如果我更改该代码以查询邮件,如下所示:
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>)
那么,我怎样才能检索到名称?
谢谢
汤姆
编辑:
语法错误是由于缺少引号引起的,但是游标仍然返回 null。
【问题讨论】: