Android - 从所有来源获取所有联系人

标签 android contacts android-2.0-eclair

我一直在尝试制作一个基于 2.0 构建的 Android 应用程序,它需要获取所有用户的联系人并以格式化的方式显示它们。

我已经能够使用 CursorContactsContract.Contacts 类获取列表。但是,我从该提供商那里获得的列表只提供了来自用户 Google 帐户的联系人,或具有两个或多个来源的联系人(例如 Google + Facebook、两个 Facebook 帐户等)。它没有给我完整的列表。

那些似乎被遗漏的主要是那些仅来自用户的 Facebook 帐户且没有其他来源的内容。

这是我正在使用的查询调用:

Cursor contactsCursor = getContentResolver()
    .query(android.provider.ContactsContract.Contacts.CONTENT_URI, 
        null, null, null, null);

我的问题是是否可以从用户电话簿中的每个来源(Google、Facebook 等)获取所有联系人?

谢谢!

最佳答案

参见 ContactManager

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/

相关文章:

android - gps打开/关闭时如何触发广播接收器?

android sleep 模式,套接字重置异常

java - 让用户创建业务或个人联系人的代码

android - 当 Droid/Nexus One 上的屏幕关闭时,加速度计停止提供样本,即使使用 WakeLock

Android AppCompat PreferenceActivity - 没有子类别/标题的平面设置列表

Android 对下载的 APK 设置权限

android - 联系人 ContentObserver 随机调用

swift - 如何从联系人框架检索电话号码

android - 我的自定义铃声预览但在来电时没有声音?

android - 应用程序需要您的设备上不可用的功能