Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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联系人内容提供商的姓名、电话、电子邮件_Android_Android Contentprovider_Android Contacts - Fatal编程技术网

显示来自Android联系人内容提供商的姓名、电话、电子邮件

显示来自Android联系人内容提供商的姓名、电话、电子邮件,android,android-contentprovider,android-contacts,Android,Android Contentprovider,Android Contacts,首先,我根据姓名获取我感兴趣的联系人的id,然后再次查询联系人的id是我检索到的id 所以我的投影和where子句是: String[] projection = new String[] { ContactsContract.Data.DISPLAY_NAME, ContactsContract.CommonDataKinds.Email.ADDRESS,

首先,我根据姓名获取我感兴趣的联系人的id,然后再次查询联系人的id是我检索到的id

所以我的投影和where子句是:

            String[] projection = new String[] {
                    ContactsContract.Data.DISPLAY_NAME,
                    ContactsContract.CommonDataKinds.Email.ADDRESS,
                    ContactsContract.CommonDataKinds.Phone.NUMBER
            };

            String where = ContactsContract.Data.CONTACT_ID + " = " + id 
                        + " AND " + ContactsContract.Data.MIMETYPE + " = '" +
                        ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE + "'"
                        + " AND " + ContactsContract.Data.MIMETYPE + " = '" +
                        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "'";
如果我从投影中删除where子句和相应字段上的两个检查中的一个,我将得到正确的结果。但是对于而言,电子邮件和电话都是不可能发生的。我得到了两倍相同的结果。这意味着对于上面的代码,我将得到2倍的电子邮件地址。如果我将Phone.NUMBER字段移到Email.ADDRESS之前,我将得到电话号码的2倍

查询的代码为:

            Cursor dCursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI, projection, where,
                null, null);

        int nameIdx = dCursor.getColumnIndexOrThrow(ContactsContract.Data.DISPLAY_NAME);
        int emailIdx = dCursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Email.ADDRESS);
        int phoneIdx = dCursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER);

你找到解决办法了吗?我也有同样的问题。提前感谢:)