2011-05-03 87 views
1

我知道這個問題存在很多問題。 但我找不到任何幫助我的東西。 我知道如何獲取這段代碼有電話號碼的所有Android聯繫人:在android中獲取當前聯繫人

private List fillContactsList() { 
     List tmpList = new ArrayList(); 

     Cursor c = getContentResolver().query(
       ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
     while (c.moveToNext()) { 
      String ContactID = c.getString(c 
        .getColumnIndex(ContactsContract.Contacts._ID)); 
      String name = c.getString(c 
        .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      String hasPhone = c 
        .getString(c 
          .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
      if (Integer.parseInt(hasPhone) == 1) { 
       Cursor phoneCursor = getContentResolver().query(
         ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
         null, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
           + "='" + ContactID + "'", null, null); 
       while (phoneCursor.moveToNext()) { 
        String number = phoneCursor 
          .getString(phoneCursor 
            .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
        con = new Contact(); 
        con.setName(name); 
        con.setNumber(number); 
        tmpList.add(con); 
       } 
       phoneCursor.close(); 
      } 
     } 
     c.close(); 
     Collections.sort(tmpList); 

     return tmpList; 
    }

的這個設備上的結果是360次接觸,但是當我通過手機打開我的聯繫方式我看到的只是120所以如何我可以只獲取當前在手機上的聯繫人列表中顯示的羣組嗎?

謝謝! Saar

+0

手機上顯示的內容取決於用戶正在使用的過濾器。您可以通過過濾器而不是所有聯繫人獲得聯繫人 – Spidy 2011-05-03 17:46:53

回答

5

我不知道這是否是您的問題,但您可以嘗試將IN_VISIBLE_GROUP添加到您的選擇標準。我不記得頭頂上的確切語法,但它會是這樣的:

Cursor c = getContentResolver().query(
       ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'", null, null); 
+0

謝謝!它的工作原理... – Beno 2011-05-04 16:41:03

+0

bravissimo,我花了8小時瞭解它 – user170317 2012-10-29 15:38:09