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
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
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.
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()); } } |
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












11 février 2010 à 3 h 19 min
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
11 février 2010 à 8 h 47 min
@kushy tu developpes avec quelle version android quand j’ai fait ce tuto on était encore à la version 1.5 de Android
11 février 2010 à 14 h 34 min
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
11 février 2010 à 14 h 40 min
@kushy quand tu te mets en debug eclipse de donne quoi comme erreur
11 février 2010 à 15 h 02 min
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’
11 février 2010 à 16 h 02 min
c bon, j’ai resolu mon probleme,
merci beaucoup pour ton temps
11 février 2010 à 16 h 05 min
@kushy c’est quoi donc la solution??