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

Android-从所有来源获取所有联系人,android,contacts,android-2.0-eclair,Android,Contacts,Android 2.0 Eclair,我一直在尝试制作一个基于2.0构建的Android应用程序,它需要获取用户的所有联系人并以格式化的方式显示 我已经能够使用光标和Contacts contract.Contacts类获取列表。但是,我从该提供商处获得的列表仅提供了来自用户Google帐户的联系人,或者有两个或更多来源的联系人(例如Google+Facebook、两个Facebook帐户等)。它没有给我完整的清单 那些似乎被忽略的主要是那些只来自用户的Facebook帐户,没有其他来源的 这是我正在使用的查询调用: Cursor

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

我已经能够使用
光标和
Contacts contract.Contacts
类获取列表。但是,我从该提供商处获得的列表仅提供了来自用户Google帐户的联系人,或者有两个或更多来源的联系人(例如Google+Facebook、两个Facebook帐户等)。它没有给我完整的清单

那些似乎被忽略的主要是那些只来自用户的Facebook帐户,没有其他来源的

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

Cursor contactsCursor = getContentResolver()
    .query(android.provider.ContactsContract.Contacts.CONTENT_URI, 
        null, null, null, null);
我的问题是,是否有可能从用户电话簿中的每个来源(谷歌、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);
}

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

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");
                  }
ContentResolver cr=getContentResolver();
Cursor Cursor=cr.query(ContactsContract.Contacts.CONTENT\u URI,null,null,null);
所有联系人\u nu=cursor.getCount();
if(cursor!=null&&cursor.getCount()>0)
{
cursor.moveToFirst();
Log.i(“MAHDI”,“cursor.getCount()=”+cursor.getCount());
对于(int i=0;i