我知道,与聚集接触_ids不是静态的,但可能会随时间而改变,以取得联系_ID(参见:Google Group Discussion)。试图使用电子邮件地址
所以,在我的应用我存储内容查找关键字和所选联系人的电流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 ...
任何帮助,非常感谢!
你是如何解决的呢?我不明白。 – 2014-12-11 18:05:43