Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android]Créer une liste de contacts

Comme dans l'applis standard

    24 janvier 2013 à 22:17:15

    Bonjour,

    Pour un programme je dois créer une liste de contact comme dans l'appli standard donc dans l'ordre alphabetique et avec les lettres sur le coté (si possible).

    Je n'ai aucune idée de comment faire que se soit sur la liste (avec chaque lettre en titre et les accès rapide au lettre) ou pour récuperer les contacts.

    J'ai regarder des tuto tous obsolète sinon je n'ai rien trouvé.

    Evidement j'ai la permissions :

    <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

    Mais ce tuto (le seul que j'ai trouvé) est obsolète et l'appli se ferme instantanément.

    Merci pour vos futures réponse et désolé pour les fautes d'orthographes.

    • Partager sur Facebook
    • Partager sur Twitter

    AtomicServer, un moyen rapide pour crée une application Client-Serveur (Topic OpenClassrooms).

    Anonyme
      29 janvier 2013 à 9:25:11

      Bonjour à toi,

      Voici le code que j'ai écris pour mon application. J'espère qu'il marchera chez toi!

      /**
           * Returns a list of all the contacts in the phonebook
           *
           * @version 1.0
           * @since 2012-03-28
           * @return Returns a list of all the contacts in the phonebook
          */
          public ArrayList<Relation> loadContacts()
          {
              String select = "((" + ContactsContract.Contacts.DISPLAY_NAME + " NOTNULL) AND (" + ContactsContract.Contacts.HAS_PHONE_NUMBER + " == 1))";
              Cursor c = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, CONTACTS_SUMMARY_PROJECTION, select, null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
              context.startManagingCursor(c);
      
              ArrayList<Relation> cList = new ArrayList<Relation>();
              int a = 0;
              Relation relation;
              while (c.moveToNext() && a<CARD_LIMIT)
              {
                  relation = new Relation();
                  relation.setBook_id(new Integer(c.getString(0)).intValue());
      
                  String[] name_splitted = c.getString(1).split(" ");
                  relation.setFirstName(name_splitted[0]);
                  if (name_splitted.length > 1) relation.setLastName(name_splitted[1]);
      
                  ArrayList<String> numbers = getPhoneNumbers(c.getString(0));
                  relation.setNumber(numbers.size() > 0 ? numbers.get(0) : "" );
      
                  relation.setConcept("Any");
                  relation.setPhoto(loadContactPhoto(c) == null ? "android.resource://com.orange.rd.kramer/drawable/default_photo" : loadContactPhoto(c));
      
                  cList.add(relation);
                  a++;
              }
              c.close();
              return cList;
          }
      /**
           * Returns an uri pointing to the contact's photo
           *
           * @version 1.0
           * @since 2012-03-28
           * @param cursor Cursor on a specific contact
           * @return Returns an uri pointing to the contact's photo
          */
          private String loadContactPhoto(Cursor cursor)
          {
              if (cursor.getString(5) != null)
              {
                  Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, cursor.getInt(0));           
                  return Uri.withAppendedPath(contactUri, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY).toString();
              }
              return null;
          }
      
          /**
           * Returns a list of all phone numbers that belong to the given contact
           *
           * @version 1.0
           * @since 2012-03-28
           * @param id Id of the given contact
           * @return Returns a list of all phone numbers that belong to the given contact
          */
          private ArrayList<String> getPhoneNumbers(String id)
          {
              ArrayList<String> phones = new ArrayList<String>();
      
              Cursor pCur = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null);
              while (pCur.moveToNext())
              {
                  phones.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
              } 
              pCur.close();
              return(phones);
          }

      L'objet "Relation" désigne un contact. Chaque contact se présente sous la forme:

      class Relation
      {
      int book_id; // Identifiant unique dans le carnet d'addresse
      String firstName; // Prénom
      String lastName; // Nom
      ArrayList<String> number; // Liste de ses numéros de téléphone
      String photo; // Lien vers sa photo de profil
      }

      En espérant que cela puisse t'aider. Si tu cherches plus de fonctions pour ajouter, éditer ou supprimer des contacts, va voir mon topic sur StackOverFlow. Le code complet est just en dessous de "Whole source code:". Le lien est ici: http://stackoverflow.com/questions/9907751/android-update-a-contact

      Bonne journée.

      Geeky


      -
      Edité par Anonyme 10 octobre 2013 à 21:45:12

      • Partager sur Facebook
      • Partager sur Twitter

      [Android]Créer une liste de contacts

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown