Liste des contacts

Pour n’afficher que les contacts avec des numéros de téléphone et récupérer le numéro et le nom du contact :

On affiche tous les contacts :

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, 9999);

Et on récupère le numéro du contact sélectionné dans le OnResult :

  @Override  
   public void onActivityResult(int requestCode, int resultCode, Intent data) {  
     super.onActivityResult(requestCode, resultCode, data);  
     switch (requestCode) {  
       case (9999):  
         if (resultCode == Activity.RESULT_OK) {  
           Uri contactData = data.getData();  
           Cursor cur = this.getContentResolver().query(contactData, null, null, null, null);  
           if (cur == null) return;  
           try {  
             if (cur.moveToFirst()) {  
               int phoneName = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);  
               String sname = cur.getString(phoneName);  
               int phoneIndex = cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);  
               Log.d("Phonexxx", cur.getString(phoneIndex)+" "+sname);  
               infos.setText("Contact = "+"\n"+sname+"\n"+cur.getString(phoneIndex));  
             }  
           } finally {  
             cur.close();  
           }  
         }  
     }  
   }  

Ne pas oublier d’ajouter la permission read contacts dans le manifest :

uses-permission android:name="android.permission.READ_CONTACTS"

Pour récupérer les contacts du téléphone :

  private void getContacts(Context cont)  
    {Uri uri;  
     Cursor cursor;  
     String number, sNom, sMail, sNomProfile, sortOrder;  
     int type;  
     /*  
     uri = Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI, ContactsContract.Contacts.Data.CONTENT_DIRECTORY);  
     //-- Récupération du contact propriétaire du téléphone  
     cursor = getContentResolver().query(uri, new String[]{  
               ContactsContract.Profile.DISPLAY_NAME,        
               },  
         null, null, null);   
     cursor.moveToFirst();  
     do{  
          sNomProfile = cursor.getString(cursor.getColumnIndex(ContactsContract.Profile.DISPLAY_NAME));  
       tData.add("propriétaire = "+sNomProfile);  
     }while(cursor.moveToNext());  
     */  
     sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME  
         + " COLLATE LOCALIZED ASC";   
     uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;  
     cursor = getContentResolver().query(uri, new String[]{   
         ContactsContract.CommonDataKinds.Phone.NUMBER,   
         ContactsContract.CommonDataKinds.Phone.TYPE,   
         ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,  
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID,  
         ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER,  
         },  
       null, null, sortOrder);  
     cursor.moveToFirst();  
     do{  
         if (cursor.getString(4)!="0")  
          {number = cursor.getString(0);  
       sNom  = cursor.getString(2).toUpperCase();  
       type  = cursor.getInt(1);  
       sNom.replace(':',';');  
       //sMail=getEmail(this,cursor.getLong(3));  
       //if (sNom.toUpperCase().equals(sNomProfile.toUpperCase()))  
       //      tData.add("USER.... ; "+number+" :"+sMail);  
       //else  
       //  tData.add(sNom+" ; "+numbe+" ; "+sMail);}  
       contacts.add(sNom);  
       numcontacts.add(number);}  
     }while(cursor.moveToNext());  
     cursor.close();  
    }  

Pour récupérer la liste des contacts filtrée sur un nom :

 String sPrenom="ver";  
 sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME  
                     + " COLLATE LOCALIZED ASC";  
 uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;  
 cursor = cont  
         .getContentResolver()  
        .query(uri,  
               new String[] {  
                 ContactsContract.CommonDataKinds.Phone.NUMBER,  
                 ContactsContract.CommonDataKinds.Phone.TYPE,  
                 ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,  
                 ContactsContract.CommonDataKinds.Phone.CONTACT_ID,  
                 ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER, },  
                 ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+ " like ?",  
                 new String[]{"%" + sPrenom + "%"}, sortOrder);  
cursor.moveToFirst();  

Pour afficher la liste des contacts via Intent :

  //-- Read Contact  
   public void readContact(){  
     Intent intent = new Intent(Intent.ACTION_GET_CONTENT);  
     intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);  
     startActivityForResult(intent, Var_result);  
   }  
   @Override  
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
     if (resultCode == RESULT_OK) {  
       switch (requestCode) {  
         case Var_result:  
           handleContactSelection(data);  
           break;  
       }  
     }  
   }  
  ////  
   private void handleContactSelection(Intent data) {  
     if (data != null) {  
       Uri uri = data.getData();  
       if (uri != null) {  
         Cursor cursor = null;  
         Cursor nameCursor = null;  
         try {  
           cursor = getContentResolver().query(uri, new String[]{  
                   ContactsContract.CommonDataKinds.Phone.NUMBER,  
                   ContactsContract.CommonDataKinds.Phone.CONTACT_ID},  
               null, null, null);  
           String phoneNumber = null;  
           String contactId = null;  
           if (cursor != null && cursor.moveToFirst()) {  
             contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));  
             phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));  
           }  
           String givenName = null;///first name.  
           String familyName = null;//last name.  
           String projection[] = new String[]{ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,  
               ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME};  
           String whereName = ContactsContract.Data.MIMETYPE + " = ? AND " +  
               ContactsContract.CommonDataKinds.StructuredName.CONTACT_ID + " = ?";  
           String[] whereNameParams = new String[]{ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE, contactId};  
           nameCursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,  
               projection, whereName, whereNameParams, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME);  
           if (nameCursor != null && nameCursor.moveToNext()) {  
             givenName = nameCursor.getString(nameCursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));  
             if (givenName==null)  
               givenName="";  
             familyName = nameCursor.getString(nameCursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));  
             if (familyName==null)  
               familyName="";  
           }  
           Toast.makeText(this, givenName + " / " + familyName + " : " + phoneNumber, Toast.LENGTH_LONG).show();  
           //***** Appel d'une fonction ***** 
         } finally {  
           if (cursor != null) {  
             cursor.close();  
           }  
           if (nameCursor != null) {  
             nameCursor.close();  
           }  
         }  
       }  
     }  
   }  

Références :

https://stackoverflow.com/questions/8612531/how-can-i-choose-a-phone-number-with-androids-contacts-dialog

http://stackoverflow.com/questions/4301064/how-to-get-the-first-name-and-last-name-from-android-contacts

http://stackoverflow.com/questions/10117049/get-only-email-address-from-contact-list-android

http://stackoverflow.com/questions/7114573/get-contacts-mobile-number-only

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

Articles récents
Commentaires récents
fatima dans Bienvenue !
AdminDroid dans Bienvenue !
fatima dans Bienvenue !
Archives
Catégories
%d blogueurs aiment cette page :