Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android(Java)-通过电子邮件查找联系人并预览(如果存在)_Java_Android - Fatal编程技术网

Android(Java)-通过电子邮件查找联系人并预览(如果存在)

Android(Java)-通过电子邮件查找联系人并预览(如果存在),java,android,Java,Android,现在我们有一个应用程序,我们(在获得权限后)可以在其中查找联系人,如果他们存在,则显示他们的联系人卡。然而,查找似乎效率很低,它在每个人中循环,似乎并不正确。是否有更好的查询联系人数据库,以便仅查找具有我们需要的电子邮件地址的联系人 以下当前代码(无效): 是的,您可以直接在Email.CONTENT\u URI上查询,并使用选择查找正确的联系人: public static Long lookupByEmail(String email, Context context) { Con

现在我们有一个应用程序,我们(在获得权限后)可以在其中查找联系人,如果他们存在,则显示他们的联系人卡。然而,查找似乎效率很低,它在每个人中循环,似乎并不正确。是否有更好的查询联系人数据库,以便仅查找具有我们需要的电子邮件地址的联系人

以下当前代码(无效):


是的,您可以直接在
Email.CONTENT\u URI
上查询,并使用选择查找正确的联系人:

public static Long lookupByEmail(String email, Context context) {

    ContentResolver cr = context.getContentResolver();
    Long contactId = null;

    String[] projection = new String[] { Email.CONTACT_ID };
    String selection = Email.ADDRESS + "='" + email + "'";
    Cursor cur = cr.query(Email.CONTENT_URI, projection, selection, null, null);

    if (cur != null) {
       if (cur.moveToFirst()) {
          contactId = cur.getLong(0);      
       }
       cur.close();
    }

    return contactId;
}

非常感谢。这起作用了。只需稍作修改,在电子邮件周围加上单引号,否则SDK将进行错误的搜索查询。字符串选择=ContactsContract.CommonDataTypes.Email.ADDRESS+“='”+电子邮件+”;是的,对,我已经忘了。。。答案已更新。
public static Long lookupByEmail(String email, Context context) {

    ContentResolver cr = context.getContentResolver();
    Long contactId = null;

    String[] projection = new String[] { Email.CONTACT_ID };
    String selection = Email.ADDRESS + "='" + email + "'";
    Cursor cur = cr.query(Email.CONTENT_URI, projection, selection, null, null);

    if (cur != null) {
       if (cur.moveToFirst()) {
          contactId = cur.getLong(0);      
       }
       cur.close();
    }

    return contactId;
}