IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Récupérer la liste des contacts


Sujet :

Android

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Récupérer la liste des contacts
    Bonjour,

    J'ai lu beaucoup de tuto et de réponse a des questions sur différent site mais sans jamais réussir a faire quelque chose de fonctionnel.

    Je voudrais faire une application qui envoi des sms et pour cela je voudrais récuperer la liste des contact.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    findViewById(R.id.buttonContact).setOnClickListener(new Button.OnClickListener(){
            	public void onClick(View v){
            		String[] info = null;
            		int y=0;
            		Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
        			while (phones.moveToNext())
        			{
        				for (int i = 0; i < phones.getColumnCount(); i++) 
        	        	{
     
        	        			try
        	        			{
        	        				Log.i(phones.getColumnName(i) + "", phones.getString(i));
        	        			}
        	        			catch (Exception e) {
        	        				e.printStackTrace();
        						}
     
        	            }
     
        			  String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
        			  String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
        			  info[y] = phoneNumber;
    					try
    					{
    						info[y] = phoneNumber;
    					}
    					catch (Exception e) {
    						e.printStackTrace();
    					}
        			  y++;
        			}
        			phones.close();
     
        			AlertDialog.Builder ad = new AlertDialog.Builder(getApplicationContext());
        			ad.setTitle("Contact");
     
        			ad.setItems(info, new DialogInterface.OnClickListener() {
     
    					public void onClick(DialogInterface dialog, int which) {
    						// Mettre le numéro dans une textarea
     
    					}
    				});
     
        			ad.show();
            	}
            });
    Et voici mon erreur :

    FATALEXCEPTION: main
    java.lang.NullPointerException
    at com.stuffco.trollsms.Third$2.onClick(Third.java:95)
    etc ...

    Voila si quelqu'un pouvait m'aider car je n'arrive vraiment a rien au niveau de l'accès des contact.

    Cordialement

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    C'est quoi le soucis ?

    Ce qu'il y a à la ligne 95 de Third.java

    Bon... j'ai pas les bonnes lignes, mais vu le code je parie que c'est:
    info[y] = phoneNumber;

    Alors... va dans Eclipse...
    Menu "Window / Preferences"
    Déroule Java / Compiler / Errors/Warnings
    Passes tout en warning si c'est sur "ignore".... En particulier tout à la fin dans "Null Analysis".... Tu peux passer le premier "Null pointer access" à "error" directement.

    Et voila... maintenant essayer de programmer *sans* warning et le code sera bien plus propre....

    Avec les settings ci-dessus, bim, eclipse dira tout de suite (j'ai pas essayé mais je suis quasi-sur) "Attention info est null à cet endroit"...

    Ce qui est normal, puisque tu n'as jamais alloué "info" (String[] info = null)

    Maintenant, à combien d'items l'allouer ? Si l'info est dispo dans Cursor, tout va bien... sinon... ben c'est pas possible, donc on passe par les "Collections" (en particulier ici: ArrayList<String>)... Plus besoin de tableau, ArrayList est dynamique (à base de tableau)... plus besoin non plus de 'y'


    Au passage... il manque 1 truc: moveToFirst sur le cursor.... et oui... rien ne dit qu'il sera sur le premier élément....

    Le pattern des cursor est le même que celui des enumerations (ou presque):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Cursor cursor = ....;
    boolean hasMore = cursor.moveToFirst();
    while (hasMore) {
        ....
        hasMore = cursor.moveToNext();
    }
    Au passage, virer tous les try { } catch (Exception ex) { ex.printStackTrace(); } ... D'une part ils ne servent à rien (juste à passer sous silence une exception qui aurait du être traité), d'autre part, meme le ex.printStackTrace() on ne sait pas trop bien ce qu'il fait... Android propose Log.e("MonTAG","Error dans telle ou telle partie",ex); à la place...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup !

    Je vais pouvoir voir beaucoup plus d'erreur grâce a ces nouvelles configurations !

    Le code marche super bien mais je voudrais afficher le nom et le numéro dans une boite de dialogue pour pouvoir les retourner.

    Comment pourrais je mettre cela en place ?

    Cordialement

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ad.setItems(info, new DialogInterface.OnClickListener() {
     
    					public void onClick(DialogInterface dialog, int which) {
     
    							areaPhone.setText(info[which-1]);
    					}
    				});
    Mais ça ne marche pas, je voudrais rentrer dans areaPhone (une TextArea) le contenu qui correspond à l'item cliquer.

    Une solution ?

    Cordialement

  5. #5
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Rhaliwyr Voir le message
    Mais ça ne marche pas, je voudrais rentrer dans areaPhone (une TextArea) le contenu qui correspond à l'item cliquer.
    Vu d'ici, sur le click d'une view ayant l'identifiant ID, on met le texte d'un tableau à la position ID-1 (sachant que ID est supérieur à 2 milliars, il y a peu de chances que cela ne produise pas de problèmes....

    Dans tous les cas le descriptif du problème est un peu vague... "Ca ne marche pas" ....

    Déjà c'est un programme, qui n'a pas de jambes et ne peut donc pas "marcher"
    Ensuite, c'est la compilation qui échoue ? Eclipse qui indique une erreur ?
    Le programme plante ? => quel est le LogCat ?
    Le programme n'affiche pas la bonne valeur ?
    Le programme ne réagit pas au click ?

    enfin bref... voilà... "ca ne marche pas", ben ça ne marche pas pour pouvoir répondre
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Déjà c'est un programme, qui n'a pas de jambes et ne peut donc pas "marcher"
    Pourtant j'essai de les faire courir mes application ! En appuyant sur run

    A la compilation tout ce passe bien mais c'est lors du clic sur le contact, le premier contact n'a pas de problème mais les autres ne fonctionne pas, du coup je reçoit un force close et le logcat me renvoit ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    FATAL EXCEPTION: main
    javalabgNullPointerException
    at com.stuffco.trollsms.Third$2$1.onClick(Third.java:121)
    at com.android.internal.app.AlertConttollrt$AlertParams$3.onItemClick(AlertController.java:873)
    at android.widget.AdapterView.performItemClick(AdapterView.java:284)
    at android.widget.ListView.performItemClick(ListView.java:3513)
    etc ...

  7. #7
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    On y revient:

    Fichier "Third.java" , ligne 121
    On appelle une fonction sur un objet null, ou on utilise une valeur membre d'un objet null...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Le problème c'est que je déclare ceci en dehors de la fonction :

    Et ceci dans la fonction (info2 étant un arraylist contenant tout les numéro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    info = new String[info2.size()];
    Et je ne peux pas mettre un arraylist en paramètre de setItems.

    Du coup je me retrouve bloquer ...

  9. #9
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Moi je ne comprends plus rien car on a pas la vision du code dans son ensemble

    Et ceci dans la fonction (info2 étant un arraylist contenant tout les numéro :
    Quelle fonction ?

    De plus
    Et je ne peux pas mettre un arraylist en paramètre de setItems.
    http://developer.android.com/reference/android/app/AlertDialog.Builder.html#setItems(java.lang.CharSequence[], android.content.DialogInterface.OnClickListener)

    C'est pas ce que tu fais d'ailleurs ?
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  10. #10
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Si.... mais je crois qu'il a suivi mes conseils, à savoir:

    Utiliser une ArrayList<String> info2
    et une array classique String[] info

    Et à la fin, il n'arrive pas à passer de l'un à l'autre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ArrayList<String>  valuesList = new ArrayList<String>();
    boolean hasMore = cursor.moveToFirst();
    while (hasMore) {
         valuesList.add(....); // remplacer par ce qu'il faut:
         hasMore = cursor.moveToNext();
    }
     
    String[] valuesArray = valuesList.toArray(new String[valuesList.size()]);
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. Récupérer la liste des contacts
    Par Kaneda Shotaro dans le forum Android
    Réponses: 4
    Dernier message: 02/02/2017, 12h58
  2. [Web Service] Récupérer la liste des contacts Hotmail
    Par lamifr dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 09/02/2011, 22h18
  3. Comment récupérer la liste des contacts de outlook express?
    Par arnaud_verlaine dans le forum Outlook Express / Windows Mail
    Réponses: 6
    Dernier message: 12/10/2004, 15h53
  4. Comment récupérer la liste des logiciels installés sur une machine ?
    Par david_chardonnet dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 19/09/2003, 17h41
  5. Récupèrer la liste des disques durs
    Par Tililian dans le forum C++Builder
    Réponses: 4
    Dernier message: 19/06/2003, 12h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo