我一直在尝试制作一个基于 2.0 构建的 Android 应用程序,它需要获取所有用户的联系人并以格式化的方式显示它们。
我已经能够使用 Cursor
和 ContactsContract.Contacts
类获取列表。但是,我从该提供商那里获得的列表只提供了来自用户 Google 帐户的联系人,或具有两个或多个来源的联系人(例如 Google + Facebook、两个 Facebook 帐户等)。它没有给我完整的列表。
那些似乎被遗漏的主要是那些仅来自用户的 Facebook 帐户且没有其他来源的内容。
这是我正在使用的查询调用:
Cursor contactsCursor = getContentResolver()
.query(android.provider.ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
我的问题是是否可以从用户电话簿中的每个来源(Google、Facebook 等)获取所有联系人?
谢谢!
最佳答案
OBS1:此代码使用了一个已弃用的方法,managedQuery()
您需要使用 android.content.CursorLoader 重新实现这部分代码
。
OBS2 mShowInvisible
- 如果为 true,则无论用户偏好如何,都会列出所有联系人
/**
* Obtains the contact list for the currently selected account.
*
* @return A cursor for for accessing the contact list.
*/
private Cursor getContacts(){
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME
};
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '"(mShowInvisible ? "0" : "1") + "'";
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
关于Android - 从所有来源获取所有联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987797/