gpt4 book ai didi

android - 将邮件地址解析为联系人姓名

转载 作者:行者123 更新时间:2023-11-29 14:57:19 26 4
gpt4 key购买 nike

假设我的通讯录中保存了一个名为“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。

最佳答案

query()getColumnIndex() 中使用 Phone.DISPLAY_NAME 而不是 Email.DISPLAY_NAME (前两行)。

编辑:

还有用于电子邮件查找的特殊 uri:Email.CONTENT_LOOKUP_URI。使用起来似乎更方便(无需像您的代码那样设置配额或手动编写选择参数):

Uri uri = Uri.withAppendedPath(Email.CONTENT_LOOKUP_URI, Uri.encode("stackoverflow@gmail.com"));
Cursor cur = getContentResolver().query(uri, new String[]{Email.CONTACT_ID, mail.DISPLAY_NAME, Email.TYPE, Phone.DISPLAY_NAME}, null, null, null);

关于android - 将邮件地址解析为联系人姓名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3092176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com