3

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

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

那些似乎被忽略的主要是那些仅来自用户的 Facebook 帐户并且没有其他来源的。

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

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

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

谢谢!

4

2 回答 2

2

请参阅联系人管理器

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);
}
于 2011-04-04T19:59:52.040 回答
0

我使用了这段代码,它非常好。

ContentResolver cr = getContentResolver();
                  Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);


                  all_contacts_nu = cursor.getCount();

                  if(cursor!=null&&cursor.getCount()>0)
                  {

                      cursor.moveToFirst();

                      Log.i("MAHDI", "cursor.getCount()="+cursor.getCount());
                      for(int i =0;i<cursor.getCount();i++)                     

                      {
                          counter++;

                          FileDisplayActivity.this.get(cursor);

                          cursor.moveToNext();

                          writeToFile(vCard.get(i));
                      }


                  }
                  else
                  {
                      Log.d("TAG", "No Contacts in Your Phone");
                  }
于 2015-03-30T05:47:56.247 回答