2017-06-11 1 views
0

J'essaie d'obtenir le nom (prénom), le nom (nom de famille), le numéro de téléphone et le courriel d'une personne d'un contacteur. J'ai utilisé du code pris sur stackoverflow mais ça ne marche pas.Besoin d'obtenir Nom, Prénom, Numéro de téléphone et courriel d'un contacteur

Je peux prendre le téléphone mais quand j'essaie d'obtenir le nom ou le prénom, ça ne marche pas!

(Et il est possible de ne pas montrer le téléphone numéro sur la liste des contacts, mais seulement le nom?)

espère que vous pouvez me aider.

C'est le code:

Uri uri = Uri.parse("content://contacts"); 
    Intent intent = new Intent(Intent.ACTION_PICK, uri); 
    intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); 
    startActivityForResult(intent, REQUEST_CODE); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, 
           Intent intent) { 
    if (requestCode == REQUEST_CODE) { 
     if (resultCode == RESULT_OK) { 
      Uri uri = intent.getData(); 
      String[] projection = {ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, 
        ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME}; 


      Cursor cursor = getContentResolver().query(uri, projection, null, null, null); 
      cursor.moveToFirst(); 

      int numberColumnIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 
      String number = cursor.getString(numberColumnIndex); 

      int congomeCursorIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME); 
      String cognome = cursor.getString(congomeCursorIndex); 



     } 
    } 
} 

Répondre

0

avec cette ligne:

intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); 

Vous vous demandez en fait un téléphone sélecteur pas un contact sélecteur .

Essayez ceci:

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

Puis, en onActivityResult.

Uri contactUri = intent.getData(); 
long contactId = ContentUris.parseId(contactUri); 
String projection = String[] { Data.MIMETYPE, Data.DATA1, Data.DATA2, Data.DATA3 }; 
String selection = Data.CONTACT_ID + " = " + contactId + " AND " + Data.MIMETYPE + 
     " IN ('" + StructuredName.CONTENT_ITEM_TYPE + "', '" + Email.CONTENT_ITEM_TYPE + "' , '" + Phone.CONTENT_ITEM_TYPE +"')"; 
Cursor cursor = getContentResolver().query(Data.CONTENT_URI, projection, selection, null, null); 

while (cursor != null && cursor.moveToNext()) { 
    String mime = cursor.getString(0); 
    String info = cursor.getString(1); 
    if (mime.equals(CommonDataKinds.Email.CONTENT_ITEM_TYPE)) { 
    Log.d(TAG, "email = " + info; 
    } 
    if (mime.equals(CommonDataKinds.Phone.CONTENT_ITEM_TYPE)) { 
    Log.d(TAG, "phone = " + info; 
    } 
    if (mime.equals(CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)) { 
    Log.d(TAG, "given name = " + cursor.getString(2) + ", family name = " + cursor.getString(3); 
    } 
} 
if (cursor != null) { 
    cursor.close(); 
} 
+0

Le crash de l'application sur 'curseur curseur = getContentResolver() requête (ContactsContract.Data.CONTENT_URI, projection, sélection, null, null); ' – Sevengek0

+0

Quel est le crash? poster votre trace de pile – marmor