如何在 Android 中获取联系人的所有详细信息

Posted

技术标签:

【中文标题】如何在 Android 中获取联系人的所有详细信息【英文标题】:How to obtain all details of a contact in Android 【发布时间】:2011-01-13 09:32:42 【问题描述】:

给定一个联系人 ID,我可以通过对每个字段进行不同的查询来获取各种联系人详细信息(如姓名、电话、电子邮件 ID 等)。

但是有没有一种方法可以通过一次查询来获取与此联系人 ID 相关的所有详细信息?

【问题讨论】:

@Octavian:我不确定我是否同意从问题标题中删除 android。对于其他技术的问题,这似乎很常见。这可能是元的编辑问题 @ChrisLively 我不得不承认你可能是对的。我会改回来的。 【参考方案1】:

不得不更改 Content Providers 上的一些教程,因为它引用了已弃用的类,这可能会有所帮助。

import android.provider.ContactsContract.Contacts;
import android.database.Cursor;

// Form an array specifying which columns to return, you can add more.
String[] projection = new String[] 
                         ContactsContract.Contacts.DISPLAY_NAME,
                         ContactsContract.CommonDataKinds.Phone
                         ContactsContract.CommonDataKinds.Email
                      ;

Uri contacts =  ContactsContract.Contacts.CONTENT_LOOKUP_URI;
// id of the Contact to return.
long id = 3;

// Make the query. 
Cursor managedCursor = managedQuery(contacts,
                     projection, // Which columns to return 
                     null,       // Which rows to return (all rows)
                                 // Selection arguments (with a given ID)
                     ContactsContract.Contacts._ID = "id", 
                                 // Put the results in ascending order by name
                     ContactsContract.Contacts.DISPLAY_NAME + " ASC");

【讨论】:

感谢您的及时回复。但我使用的是 1.6 SDK,而 ContactsContract 似乎适用于 2.0 及更高版本。 Android 1.6 及以下版本的任何解决方案 @frieza 返回并查看答案顶部链接的内容提供者教程。显然 Anthony 在发布答案时将教程更新为 2.0,但您需要的是原始教程。 呃,那是我的错,我继续认为它是 2.0 SDK,但 mbaird 是对的,Content Providers 链接中的教程应该适合你。 我的投影有问题 ContactsContract.CommonDataKinds.Phone ContactsContract.CommonDataKinds.Email android 2.2

以上是关于如何在 Android 中获取联系人的所有详细信息的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 READ_CONTACTS 权限的情况下获取 Android 联系人详细信息

Android:在 Contact Uri 列表中显示所有有电话号码的联系人详细信息

如何一次查询联系人的所有详细信息

如何从 Android 中的 Intent 中获取联系信息?

可以在 Android 中获取“所有者”联系信息吗?

如何通过Android手机联系人列表中的代码添加联系人详细信息..?