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é.
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
[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.
AtomicServer, un moyen rapide pour crée une application Client-Serveur (Topic OpenClassrooms).