代码之家  ›  专栏  ›  技术社区  ›  user153498

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

  •  3
  • user153498  · 技术社区  · 16 年前

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

    我可以用 Cursor 还有 ContactsContract.Contacts 班级。但是,我从该提供商获得的列表只提供来自用户谷歌帐户的联系人,或具有两个或更多来源(例如,谷歌+Facebook、两个Facebook帐户等)的联系人。它没有给我完整的清单。

    那些似乎被排除在外的主要是那些只来自用户的facebook账户,没有其他来源。

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

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

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

    谢谢!

    2 回复  |  直到 11 年前
        1
  •  2
  •   MKJParekh    14 年前

    ContactManager

    笨蛋: 这段代码使用了一个不推荐使用的方法, managedQuery() 您需要使用 android.content.CursorLoader .

    OBI2: 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);
    }
    
        2
  •  0
  •   Mahdi    11 年前

    我用了这个代码,很好。

    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");
                      }
    
    推荐文章