从 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 联系人中获取电子邮件和电话的主要内容,如果未能解决你的问题,请参考以下文章