gpt4 book ai didi

android - 尝试使用电子邮件地址获取联系人 _ID

转载 作者:行者123 更新时间:2023-11-29 16:11:06 25 4
gpt4 key购买 nike

我知道聚合联系人 _id 不是静态的,但可能会随时间变化(参见:Google Group Discussion)。

因此,在我的应用程序中,我存储了内容查找 key 和所选联系人的当前 ID。

我想做的是:当一条消息来自特定的电子邮件地址时,查询电话联系人并查看来自电子邮件地址的联系人是否与其中任何一个相关联,然后将该联系人与我存储的联系人进行比较,首先使用我存储的联系人 _id 和查找键进行新查询以获取当前联系人 _id。

以下是我尝试使用电子邮件地址查找联系人 _id 的方式:

String[] projection = {
ContactsContract.Contacts.LOOKUP_KEY,
ContactsContract.Contacts._ID
}

uri = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Email.CONTENT_LOOKUP_URI, Uri.encode(data)); //data = email address
cur = resolver.query(uri, projection, null, null, null);

if (cur != null){
while (cur.moveToNext()){
msg.set_contact(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY)), cur.getLong(cur.getColumnIndex(ContactsContract.Contacts._ID)));
}
}

上述代码的工作原理是它发现电子邮件地址与手机上的联系人相关联。

问题:我想我得到的是原始电子邮件地址条目的 _id,而不是整个联系人的 _id。因为当我刷新我存储的联系人 _id 并将其与上面返回的内容进行比较时,它们不匹配,即使我已经确认该电子邮件与我存储的联系人相关联。

以下是我查找存储的联系人的方式:

String[] projection = {
ContactsContract.Contacts.LOOKUP_KEY,
ContactsContract.Contacts._ID
}

Uri uri = ContactsContract.Contacts.getLookupUri(contact_id, contact_lookup);

Cursor cur = resolver.query(cLookupUri, projection, null, null, null);
if(cur != null){
while (cur.moveToNext()){
msg.set_contact(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY)), cur.getLong(cur.getColumnIndex(ContactsContract.Contacts._ID)));
}
}

我做错了什么?基本上我只想获取与传入电子邮件地址关联的任何联系人的 contact_id ...

非常感谢任何帮助!

最佳答案

    public Long getContactIdByEmail(String email) {
Uri uri = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Email.CONTENT_FILTER_URI, Uri.encode(email));
String name = "?";
long contactId =0;

ContentResolver contentResolver = v.getContext().getContentResolver();
Cursor contactLookup = contentResolver.query(uri, new String[] {ContactsContract.Data.CONTACT_ID, ContactsContract.Data.DISPLAY_NAME }, null, null, null);

try {
if (contactLookup != null && contactLookup.getCount() > 0) {

contactLookup.moveToNext();
name = contactLookup.getString(contactLookup.getColumnIndex( ContactsContract.Data.DISPLAY_NAME ));
contactId = contactLookup.getLong(contactLookup.getColumnIndex(ContactsContract.Data.CONTACT_ID));

}
} finally {
if (contactLookup != null) {
contactLookup.close();
}
}

return contactId;
}

关于android - 尝试使用电子邮件地址获取联系人 _ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13202403/

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