• Développement-Utiliser la liste de ses contacts dans ses applications Android

    Publié le 04 novembre 2009 par Guy (GuyTouch)


    Dans ce tuto je vais développer une petite application qui affiche la liste de mes contacts sous la forme Nom=>Numéro. Ce tutoriel permet de voir comment on peut récupérer la liste de ses contacts de son téléphone.

    Après avoir créer mon projet dans eclipse, je vais donner l’autorisation à mon application d’accéder à ma liste de contact. Dans mon fichier AndroidManifest je rajoute la permission android.permission.READ_CONTACTS

    ?Download download.txt
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="org.com.listecontact"
          android:versionCode="1"
          android:versionName="1.0">
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".ListeContact"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
     
        </application>
        <uses-sdk android:minSdkVersion="3" />
    <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
    </manifest>

    Ma classe principale est une extention de la classe ListActivity pour afficher ma listview. J’ai une variable Mescontacts de type ArrayList qui contiendra la liste de mes contacts

    ?Download download.txt
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    public class ListeContact extends ListActivity {
    	//tableau dans lequel je range mes contacts
    	private ArrayList<String> Mescontacts;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //Methode qui récupérer mes contact
            ListContact();;
            setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Mescontacts));
        }

    .

    La méthode qui récupère mes contacts et remplit mon tableau MesContacts et La méthode ListContact(). Dans cette méthode mon objet ConnectApp de type ContentResolver qui permet de communique avec d’autres applications. J’ai mon objet uri de Type Uri dans lequel je mets l’adresse (Android) de l’application avec laquelle je vais communiquer.

    ?Download download.txt
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
     private void ListContact() {
        	// notre tableau de contact
        	Mescontacts = new ArrayList<String>();
            // instance qui permet d'acceder au contenu d'autre application
        	ContentResolver ConnectApp = this.getContentResolver();
        	Uri uri = Contacts.People.CONTENT_URI;
             String[] projection = new String[] {People.NAME, People.NUMBER, People._ID };
            // on récupere les contacts dans un curseur
             Cursor cur = ConnectApp.query(uri, projection, null, null, null);
             this.startManagingCursor(cur);
     
             if (cur.moveToFirst()) {
                 do {
                     String name = cur.getString(cur.getColumnIndex(People.NAME));
                     String num = cur.getString(cur.getColumnIndex(People.NUMBER));
                     String id = cur.getString(cur.getColumnIndex(Contacts.People._ID));
                     Mescontacts.add(name+"=>"+num);
     
     
                 } while (cur.moveToNext());
             }
         }

    Résultat
    contactappli
    code complet

    ?Download download.txt
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    
    package org.com.listecontact;
     
    import java.util.ArrayList;
     
    import android.app.Activity;
    import android.app.ListActivity;
    import android.content.ContentResolver;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.Contacts;
    import android.provider.Contacts.People;
    import android.widget.ArrayAdapter;
     
    public class ListeContact extends ListActivity {
    	//tableau dans lequel je range mes contacts
    	private ArrayList<String> Mescontacts;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            ListContact();
            setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Mescontacts));
        }
     
     
        private void ListContact() {
        	// notre tableau de contact
        	Mescontacts = new ArrayList<String>();
            // instance qui permet d'acceder au contenu d'autre application
        	ContentResolver ConnectApp = this.getContentResolver();
        	Uri uri = Contacts.People.CONTENT_URI;
             String[] projection = new String[] {People.NAME, People.NUMBER, People._ID };
            // on récupere les contacts dans un curseur
             Cursor cur = ConnectApp.query(uri, projection, null, null, null);
             this.startManagingCursor(cur);
     
             if (cur.moveToFirst()) {
                 do {
                     String name = cur.getString(cur.getColumnIndex(People.NAME));
                     String num = cur.getString(cur.getColumnIndex(People.NUMBER));
                     String id = cur.getString(cur.getColumnIndex(Contacts.People._ID));
                     Mescontacts.add(name+"=>"+num);
     
     
                 } while (cur.moveToNext());
             }
         }
     
        }

    Discutez de ce billet sur le forum

  • 7 Commentaires pour ce billet

    1. 1 - kushy dit:

      bonjour,
      j’ai essaye votre code, il compile, mais au moment de l’execution, il est brutalement arreté.. et tous les people sont barrés (eclipse me dit que people est obsolete) quelqu’un aurai-t-il la solution?
      merci

    2. 2 - Guy dit:

      @kushy tu developpes avec quelle version android quand j’ai fait ce tuto on était encore à la version 1.5 de Android

    3. 3 - kushy dit:

      bonjour,

      je l’avait fait initialement avec le 2.0 puis j’ai retenté ton code avec le 1.5 et des que l’application se lance, elle se coupe brutalement.. je ne comprend vraiment pas d’ou peut venir le probleme
      merci

    4. 4 - Guy dit:

      @kushy quand tu te mets en debug eclipse de donne quoi comme erreur

    5. 5 - kushy dit:

      alors, il me met: ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord)line:2269
      ==> SOURCE NOT FOUND

      dans la console, il met met:
      ActivityManager: Can’t dispatch DDM chunk 46454154: no handler defined

      et dans le logcat:
      java.lang.RuntimeException: your content must have a ListView whose id attribute is ‘android.R.id.list’

    6. 6 - kushy dit:

      c bon, j’ai resolu mon probleme,
      merci beaucoup pour ton temps :)

    7. 7 - Guy dit:

      @kushy c’est quoi donc la solution??

  • Laissez un commentaire


  • Wikio - Top des blogs title=


    téléphone portable