2013-06-08 6 views
2

Voici mon code qui me donne le nom du contact et le numéro de téléphone en cliquant sur un élément de liste:Afficher tous les numéros de téléphone attribués à un contact?

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

    final String contactName = cursor.getString(cursor.getColumnIndexOrThrow("DISPLAY_NAME")); 
    Cursor contCursor =(Cursor) listStarred.getItemAtPosition(position); 
    String strid = contCursor.getString(contCursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); 

    ContentResolver cr = getContentResolver(); 

    String name = null; 
    String lname ="..."; 

    contCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
      null, 
      ContactsContract.CommonDataKinds.Phone.CONTACT_ID +"='"+strid+"'", 
      null, null); 

    int phoneNumberIndex = contCursor 
      .getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER); 
    Log.d("Count", String.valueOf(contCursor.getCount())); 

    if (contCursor != null) { 
     Log.v("CurNotNull", "Cursor Not null"); 
     try { 
      if (contCursor.moveToNext()) { 
       Log.v("MoveToFirst", "Moved to first"); 
       Log.v("CheckMTF", "Cursor Moved to first and checking"); 
       lname = contCursor.getString(phoneNumberIndex); 
       Toast.makeText(getApplicationContext(), contactName + " " + lname, Toast.LENGTH_SHORT).show(); 
      } 
     } finally { 
      Log.v("Finally", "In finally"); 
      contCursor.close(); 
     } 
} 
} 

Le code ci-dessus semble que fonctionne très bien, mais comment au lieu d'obtenir un numéro de téléphone pour obtenir une liste tous les numéros de contact? Quels changements doivent être faits pour obtenir un tableau avec les nombres (et le type de chacun) pour le contact sélectionné?

Répondre

0

L'utilisateur qui a répondu a supprimé sa réponse, mais il m'a réellement aidé avec le code qu'il/elle a fourni. J'ai été en mesure d'obtenir les autres numéros en utilisant une partie du code fourni. Donc, voici le code amélioré:

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

    final String contactName = cursor.getString(cursor.getColumnIndexOrThrow("DISPLAY_NAME")); 
    contCursor =(Cursor) listStarred.getItemAtPosition(position); 
    String strid = contCursor.getString(contCursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); 

    ContentResolver cr = getContentResolver(); 

    ArrayList<String> phones = new ArrayList<String>(); 
    contCursor = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
      null, 
      ContactsContract.CommonDataKinds.Phone.CONTACT_ID +"='"+strid+"'", 
      null, null); 

    while (contCursor.moveToNext()){ 
     String phoneNo = contCursor.getString(contCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
     Toast.makeText(getApplicationContext(), "Name: " + name + ", Phone No: " + phoneNo, Toast.LENGTH_SHORT).show(); 

    } 
} 

Maintenant juste besoin d'enregistrer les numéros sur un tableau ou d'une liste pour remplir un ListView.

Questions connexes