2010-11-26 9 views
1

J'utilise le code suivant afin d'aller chercher des contacts du téléphone je reçois des noms mais pas de numéro, aide-moi à trouver d'autres champs de contacts.Je veux aller chercher des contacts stockés dans le téléphone, mais obtenir le problème

public class DialActivity extends Activity { 

private ListView mContactList; 

public String[] fields; 
public Cursor cursor; 
public boolean mShowInvisible; 
public Uri uri; 
public String[] projection; 
public String[] selectionArgs; 
public String selection; 
public String sortOrder; 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    mContactList = (ListView) findViewById(R.id.ListView01); 

    // Populate the contact list 
    populateContactList(); 




} 

    /** 
* Populate the contact list based on account currently selected in the account spinner. 
*/ 
private void populateContactList() { 
    // Build adapter with contact entries 
    Cursor cursor = getContacts(); 
    String[] fields = new String[] { 
      ContactsContract.Data.DISPLAY_NAME 

    }; 
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.listrow, cursor, 
      fields, new int[] {R.id.TextView01}); 
    mContactList.setAdapter(adapter); 
} 

/** 
* 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); 
} 

}

Dans le code ci-dessus je suis en utilisant une mise en page de ListRow personnalisée et indiquant le nom de contact dans chaque ligne, mais que vous voulez remplir une liste qui a des noms et le nombre correspondant afin que je puisse faire une appelez ces numéros en cliquant sur ce listItem. Je sais comment faire un appel mais je n'ai pas les chiffres.

Répondre

0

ContactsContract.Contacts ne contient pas le numéro de téléphone, mais vous avez l'ID des contacts de sorte que vous pouvez maintenant demander ContactsContract.Data pour obtenir le numéro de téléphone. Un exemple de requête peut être trouvé à la documentation: http://developer.android.com/reference/android/provider/ContactsContract.Data.html

+0

l'a essayé, mais en passant des résultats NULL dans NullPointerException :( – Abhi

+0

a mis à jour ma réponse – WarrenFaith

Questions connexes