2011-06-15 16 views
9

Próbuję uzyskać wszystkie kontakty na liście ulubionych kontaktów systemu Android. Obecnie mogę uzyskać wszystkie identyfikatory grup, w tym identyfikator grupy ulubionych. Wygląda jednak na to, że nie ma kontaktów, które mają identyfikator grupy jako ulubiony identyfikator grupy.Uzyskiwanie ulubionych kontaktów w systemie Android

Próbuję uzyskać wszystkie grupy id i kontakty w każdej grupie. Po wydrukowaniu dwa listy, okazało się, że id grupa ulubionych nie znajduje się na liście kontaktów

ArrayList<String> favGroupId=new ArrayList<String>(); 
     final String[] GROUP_PROJECTION = new String[] { 
       ContactsContract.Groups._ID, ContactsContract.Groups.TITLE }; 
     Cursor cursor = getContentResolver().query(
     ContactsContract.Groups.CONTENT_URI, GROUP_PROJECTION, null, 
       null, ContactsContract.Groups.TITLE); 

     while (cursor.moveToNext()) { 
      String id = cursor.getString(cursor 
        .getColumnIndex(ContactsContract.Groups._ID)); 
      Log.v("Test",id); 

      String gTitle = (cursor.getString(cursor 
        .getColumnIndex(ContactsContract.Groups.TITLE))); 

      Log.v("Test",gTitle); 
      if (gTitle.contains("Favorite_")) { 
       gTitle = "Favorites"; 
       favGroupId.add(id); 
      } 
     } 
     cursor.close(); 

Odpowiedz

22

Można użyć pola STARRED w klasie ContactsContract.Contact. Jeśli zmienisz zapytanie na:

Cursor cursor = this.managedQuery(
    ContactsContract.Contacts.CONTENT_URI, projection, "starred=?", 
    new String[] {"1"}, null); 

powinno to zwrócić listę wszystkich kontaktów wyświetlanych na karcie Ulubione w domyślnej aplikacji Kontakty na Androidzie.

4

pełna odpowiedź, w tym intentUriString otwierania kontakt z zamiarem:

Map getFavoriteContacts(){ 

    Map contactMap = new HashMap(); 

    Uri queryUri = ContactsContract.Contacts.CONTENT_URI; 

    String[] projection = new String[] { 
      ContactsContract.Contacts._ID, 
      ContactsContract.Contacts.DISPLAY_NAME, 
      ContactsContract.Contacts.STARRED}; 

    String selection =ContactsContract.Contacts.STARRED + "='1'"; 

    Cursor cursor = managedQuery(queryUri, projection, selection, null, null); 

    while (cursor.moveToNext()) { 
     String contactID = cursor.getString(cursor 
       .getColumnIndex(ContactsContract.Contacts._ID)); 

     Intent intent = new Intent(Intent.ACTION_VIEW); 
     Uri uri = Uri.withAppendedPath(
      ContactsContract.Contacts.CONTENT_URI, String.valueOf(contactID)); 
     intent.setData(uri); 
     String intentUriString = intent.toUri(0); 

     String title = (cursor.getString(
      cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME))); 

     contactMap.put(title,intentUriString); 
    } 

    cursor.close(); 
    return contactMap; 
} 
Powiązane problemy