2016-08-08 1 views
0

Je suis en mesure d'obtenir le nom du contact que l'utilisateur a choisi, mais pas le numéro de téléphoneComment pourrais-je également obtenir le numéro de téléphone du contact choisi par l'utilisateur?

Dans le onclick:

Intent intent = new Intent(Intent.ACTION_PICK,    
ContactsContract.Contacts.CONTENT_URI); 
startActivityForResult(intent,PICK_CONTACT); 

PICK_CONTACT est juste une valeur int que l'un est égal à sa ma requestcode

puis :

@Override 
protected void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 
    if (reqCode == PICK_CONTACT) { 
     if (resultCode == AppCompatActivity.RESULT_OK) { 

      Uri contactData = data.getData(); 

      Cursor c = getContentResolver().query(contactData, null, null, null, null); 
      if (c.moveToFirst()) { 
       String name = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 
        contactadder.setText(name); 


       c.close(); 

      } 

Répondre

0

Voici un petit extrait de mon travail qui pourrait peut-être vous aider à obtenir la bonne direction. L'interaction de la base de données Android est mal documentée et difficile à trouver la bonne façon/valeurs. Répondez simplement si vous avez besoin de plus d'aide pour comprendre. J'ai supprimé certaines données pertinentes pour l'entreprise, de sorte qu'il ne sera pas compilé de cette façon. Juste pour poster facile!

public static final String[] PROJECTION ={ 

       ContactsContract.Data.MIMETYPE, 
       ContactsContract.Data.DATA1, 
       ContactsContract.Data.DATA2, 
       ContactsContract.Data.DATA3, 
       ContactsContract.Data.DATA4, 
       ContactsContract.Data.DATA5, 
       ContactsContract.Data.DATA6, 
       ContactsContract.Data.DATA7, 
       ContactsContract.Data.DATA8, 
       ContactsContract.Data.DATA9, 
       ContactsContract.Data.DATA10, 
       ContactsContract.Data.DATA11, 
       ContactsContract.Data.DATA12, 
       ContactsContract.Data.DATA13, 
       ContactsContract.Data.DATA14, 
       ContactsContract.Data.DATA15 
     }; 

private static final int MIMETYPE_COLUMN=0; 
private static final int DATA_COLUMN=1; 
private static final int DATATYPE_COLUMN=2; 

private static final String SELECTION = ContactsContract.Data.CONTACT_ID + " = ?"; 

public static ContactWrapper localContact(long contactId){ 

    Cursor cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,PROJECTION, SELECTION, new String[]{String.valueOf(contactId)}, null); 

    ContactWrapper wrapper = new ContactWrapper(contact); 
    if(cursor==null){ 
     return wrapper; 
    } 
    while(cursor.moveToNext()){ 

     String mime=cursor.getString(MIMETYPE_COLUMN); 
     if (mime.equals(ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)) { 
      contact.setU8sDisplayName(cursor.getString(DATA_COLUMN)); 

     } else if (mime.equals(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)) { 
      putPhoneNumber(contact, cursor); 

     } else if (mime.equals(ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)) { 
      putEmail(contact, cursor); 

     } else if (mime.equals(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)) { 
      putAddress(contact, cursor); 

     }else if (mime.equals(ContactsContract.CommonDataKinds.SipAddress.CONTENT_ITEM_TYPE)) { 
      contact.setU8sSIPAddress(cursor.getString(DATA_COLUMN)); 
     }else if (mime.equals(ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)) { 
      wrapper.setImageBinaryString(getContactPhotoBase64(contactId)); 
     } 

    } 
    cursor.close(); 
    return wrapper; 
} 
private static void putPhoneNumber(ContactWrapper contact,Cursor data){ 

    switch (data.getInt(DATATYPE_COLUMN)){ 
     case ContactsContract.CommonDataKinds.Phone.TYPE_HOME: 
      contact.setU8sPhoneHome(data.getString(DATA_COLUMN)); 
      break; 
     case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE: 
      contact.setU8sPhoneMobile(data.getString(DATA_COLUMN)); 
      break; 
     case ContactsContract.CommonDataKinds.Phone.TYPE_WORK: 
      contact.setU8sPhoneBusiness(data.getString(DATA_COLUMN)); 
      break; 

    } 

} 
+0

Je veux juste être en mesure d'obtenir le numéro et le nom du contact que l'utilisateur a cliqué sur, je suis le nom que vous pouvez voir, mais ne devrait pas y avoir une ou deux lignes de code pour obtenir le nombre de ce contact également? Que je pourrais juste coller dans ma déclaration if @Henning –

+0

Mais comme vous pouvez le voir, il n'y a normalement pas de "le" nombre d'un contact peut avoir plusieurs. Aussi vous êtes lucke que la première rangée contient le nom, aussi ce n'est pas sûr. Essayez de parcourir le résultat et imprimez le coloum des lignes. peut-être que vous pouvez voir ce dont vous avez besoin –