如何在 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 列表中显示所有有电话号码的联系人详细信息