2011-06-15 7 views
9

Sto cercando di ottenere tutti i contatti nell'elenco dei preferiti dei contatti Android. Attualmente, posso ottenere tutti gli ID di gruppo incluso l'ID di gruppo preferito. Ma sembra che non ci siano contatti che hanno l'ID di gruppo come ID di gruppo preferito.Come ottenere contatti preferiti in Android

Sto cercando di ottenere tutti i gruppi ID e contatti in ciascun gruppo. Dopo aver stampato lista di secondo, ho scoperto che l'id di gruppo preferito non è nell'elenco dei contatti

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(); 

risposta

22

È possibile utilizzare il campo STARRED nella classe ContactsContract.Contact. Se si modifica la query per:

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

questo dovrebbe restituire un elenco di tutti i contatti che compaiono nella scheda Preferiti nella Contatti predefinita su Android.

4

risposta completa, tra cui intentUriString per l'apertura del contatto con un intento:

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; 
}