2016-08-08 13 views
0

Ich kann den Kontaktnamen erhalten, die der Benutzer wählen, aber nicht die TelefonnummerWie würde ich auch die Telefonnummer von dem Kontakt erhalten, den der Benutzer ausgewählt hat?

Im onclick:

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

PICK_CONTACT ist nur ein int Wert, den man sein mein requestcode gleich

dann :

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

      } 

Antwort

0

Hier ist ein kleiner Ausschnitt meiner Arbeit, der Ihnen vielleicht helfen könnte Bekommen Sie die richtige Richtung. Android-Datenbank-Interaktion ist schlecht dokumentiert und schwer zu finden, die richtigen Weg/Werte. Antworten Sie einfach, wenn Sie mehr Hilfe benötigen, um zu verstehen. Ich habe einige geschäftsrelevante Daten entfernt, so dass es auf diese Weise nicht kompiliert werden kann. Nur für einfache Post!

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

ich auf der Benutzer geklickt hat nur in der Lage sein wollen, um die Nummer und den Namen des Kontakts, ich bekam den Namen, wie Sie sollten sehen können, aber nicht, dass es nur ein oder zwei Zeilen Code sein das bekommen Anzahl der besagten Kontakte auch? Das konnte ich einfach in meine if-Anweisung @Henning stecken –

+0

Aber wie Sie sehen können, gibt es normalerweise keine "die" Nummer, die ein Kontakt mehrere haben kann. Auch Sie haben Glück, dass die erste Zeile den Namen enthält, auch dies ist nicht sicher. Versuchen Sie, durch Ihre Ergebnismenge zu iterieren und die Farbe der Zeilen auszudrucken. vielleicht können Sie sehen, was Sie brauchen –