从 Android 联系人中获取电子邮件和电话

Posted

技术标签:

【中文标题】从 Android 联系人中获取电子邮件和电话【英文标题】:Getting email and phone from contacts Android 【发布时间】:2014-10-16 13:56:58 【问题描述】:

我正在尝试通过如下所述的单个光标检索电子邮件和电话。我正在使用Email.CONTENT_URI,因此我没有检索电话号码,所以我的phoneColumn 正在返回电子邮件。我尝试使用Phone.CONTENT_URI,但它只返回一小部分联系人(可能是因为它只获取有电话号码的联系人)。有没有办法使用特定的 Uri 同时获取电子邮件和电话,或者我如何使用两个光标来获取?

Cursor cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                projection, null, null, order);
        int idColumn = cursor.getColumnIndex(ContactsContract.Data._ID);
        int nameColumn = cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME);
        int emailColumn = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA);
        int phoneColumn = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA);

投影在哪里:

String[] projection = new String[] 
                ContactsContract.Contacts._ID,
                ContactsContract.Data.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Email.DATA,
                ContactsContract.CommonDataKinds.Phone.DATA, 

【问题讨论】:

【参考方案1】:

请看here。您应该找到此类查询的所有必要示例。

例如,你可以通过这种方式获取一个contactId的所有信息:

Cursor data = context.getContentResolver().query( 
Data.CONTENT_URI, new String[]  Data._ID,Data.MIMETYPE,
Email.ADDRESS, Photo.PHOTO,Data.CONTACT_ID 
+ "=?" + " AND " + "(" +  Data.MIMETYPE + "='" 
+ Photo.CONTENT_ITEM_TYPE + "' OR " + Data.MIMETYPE 
+ "='" + Email.CONTENT_ITEM_TYPE +"')",
new String[] String.valueOf(contactId), null);

您可以通过这种方式获取所有联系人的信息,然后可能会根据您的标准对其进行排序。您可以根据需要构建这样的查询。

【讨论】:

该链接为我提供了一些基本信息。我不希望它用于特定的contactId,而是所有联系人。我仍然可以以相同的方式获取列cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME); 此答案与您正在寻找的相似:***.com/a/11862598/3784165【参考方案2】:

我创建了这个库来解决您的所有疑问。它只会保存至少有一个电子邮件或电话号码的联系人。它还将删除来自同一联系人的电子邮件和电话号码中的重复项(由 whatsapp 等第三方应用创建)。

请看一下。

链接:https://github.com/raghavsatyadev/ContactFetcher/

【讨论】:

以上是关于从 Android 联系人中获取电子邮件和电话的主要内容,如果未能解决你的问题,请参考以下文章

从联系人选择器意图中选择电子邮件、姓名和电话号码

从电话联系人中获取姓名、电话号码和电子邮件地址[关闭]

如何从 Android 设备中仅获取电话号码联系人

如何从联系人和类中获取联系人的电子邮件和电话号码,没有扩展活动和 oncreate() 方法?

如何从android中的联系人读取电子邮件字段?

在来自 ContactProvider 的单个查询中获取联系人列表及其主要电子邮件和电话号码