2012-05-25 4 views
3

Est-ce que quelqu'un connaît un moyen confortable d'obtenir tous les contacts et tous leurs attributs (noms, téléphone, email, ...) qui sont sauvegardés sur un appareil Android?Comment obtenir tous les contacts et tous leurs attributs

Je voudrais une solution qui fonctionne d'Android 1.5 à 4.0.

thx beaucoup

Répondre

8

pour obtenir l'utilisation du nom et le numéro de ce code ::

private void getNameNumber(){ 
     Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
     ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
     String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
         ContactsContract.CommonDataKinds.Phone.NUMBER }; 
     Cursor names = getContentResolver().query(uri, projection, null, null, null); 

     int indexName = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME); 
     int indexNumber = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 
     names.moveToFirst(); 
     do { 

      String name = names.getString(indexName); 
      Log.e("Name new:", name); 
      String number = names.getString(indexNumber); 
      Log.e("Number new:","::"+number); 

     } while (names.moveToNext()); 
    } 

et pour obtenir tous les détails ci-dessous utilisent le code et le modifier selon vos besoins.

private void getDetails(){ 
     Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
     ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
      String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
         ContactsContract.CommonDataKinds.Phone.NUMBER ,ContactsContract.CommonDataKinds.Email.DATA }; 
     Cursor names = getContentResolver().query(uri, projection, null, null, null); 

     int indexName = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME); 
     int indexNumber = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 
     names.moveToFirst(); 
     do { 

      String name = names.getString(indexName); 
      Log.e("Name new:", name); 
      String number = names.getString(indexNumber); 
      Log.e("Number new:","::"+number); 

     } while (names.moveToNext()); 
     // email 


      while (cur.moveToNext()) { 
       String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
       Cursor email = cr.query( 
         ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, 
         ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
           new String[]{id}, null); 
       while (email.moveToNext()) { 
        //to get the contact names 
        // if the email addresses were stored in an array 
        String emailid = email.getString(email.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
        Log.e("Email id ::", emailid); 
        String emailType = email.getString(email.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 
        Log.e("Email Type ::", emailType); 

       } 
       email.close(); 
      } 


     //address 
      while (cur.moveToNext()) { 
      String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
      Cursor addrCur = cr.query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,null, 
        ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID+ " = ?", 
        new String[] { id },null); 
      while(addrCur.moveToNext()) { 
       String street = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET)); 
       Log.e("Street ::", street); 
       String city = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY)); 
       Log.e("City ::", city); 
       String state = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION)); 
       Log.e("State ::", state); 
       String postalCode = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE)); 
       Log.e("Postal Code ::", postalCode); 
      } 
      addrCur.close(); 

     } 
    } 
+0

Merci pour votre code.Il fonctionne très bien. Mais je ne peux pas obtenir les détails de l'adresse .. Même pas en mesure d'imprimer en logcat aussi .. S'il vous plaît aidez-moi – AndroidRaji

+0

cur est nul quand quitter l'email tout en boucle. Vous devriez utiliser la requête d'adresse dans la boucle d'email. –

Questions connexes