1
假設我有一個聯繫人保存在我的地址簿中,名爲「TomTasche」,郵件地址爲「[email protected]」。如果我只知道郵件地址,我如何檢索聯繫人的姓名?解析郵件地址到聯繫人的姓名
我已經問過有關檢索聯繫人的暱稱here一個類似的問題,但如果我改變代碼來查詢郵件,這樣的:
Cursor cur = context.getContentResolver().query(Email.CONTENT_URI, new String[] {Email.DISPLAY_NAME, Email.TYPE, Email.CONTACT_ID}, Email.DATA + " = " + "[email protected]", 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" <[email protected]>)
有趣的是,它似乎查詢罰款。 Logcat打印出聯繫人的名字:
06-22 09:21:14.260: [...] AND (data1 = "Tom" <[email protected]>)
那麼,我該如何找回名字呢?
感謝
湯姆
編輯:
語法錯誤是由缺少引號引起的,但無論如何光標返回null。
謝謝你的工作! – TomTasche 2010-06-23 07:24:51
加1表示Phone.DISPLAY_NAME有效,而Email.DISPLAY_NAME則不可以。 – 2013-10-18 18:35:18