• 09oct

    Développement, utiliser les sms dans ses applications



    Dans ce tuto je vais faire une application qui liste les sms reçus par le téléphone. Je vais pour cela utiliser le fournisseur de contenu (provider) sms. Certaines applications d’android peuvent se comporter comme des fournisseurs de contenu et pour les utiliser il faut connaitre leur URI.

    Dans mon application je vais utiliser content://sms

    pour créer un objet de type uri

    ?Download download.txt
    1
    
    Uri LeSmsUri = Uri.parse("content://sms");

    Pour lire les informations de notre fournisseur de contenu j’utilise l’objet Cursor

    ?Download download.txt
    1
    2
    3
    4
    5
    6
    7
    
    private Cursor objCursor = null;
     
    objCursor= managedQuery(LeSmsUri ,
    null,
    null,      
    null,      
    null);

    Ensuite avec les méthodes moveToFirst() et moveToNext() je lis ligne par ligne le contenu mes sms, j’affiche dans une listview le numéro de téléphone (-) le message;

    ?Download download.txt
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    objCursor= managedQuery(LeSmsUri,
    null,
    null,      
    null,      
    null);
    list = new ArrayList<String>(); //je cree ma list view pour affichage lire ce tuto
    if (objCursor.moveToFirst()) {
    do {
    String sms = objCursor.getString(objCursor.getColumnIndex("address")) +
    " - " + objCursor.getString(objCursor.getColumnIndex("body"));
    list.add(sms);
    } while (objCursor.moveToNext());
    }

    Résultat
    listesms2 Développement, utiliser les sms dans ses applications Android France

    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
    
    public class ListeSms extends ListActivity {
    private Cursor objCursor= null;
    private List<String> list = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //SMS URI
    Uri LeSmsUri = Uri.parse("content://sms");
    try {
    //Query to the contentProvider
    objCursor= managedQuery(LeSmsUri ,
    null,
    null,      
    null,      
    null);
    list = new ArrayList<String>();  //je cree ma list view pour affichage lire ce tuto
    if (objCursor.moveToFirst()) {
    do {
    String sms = objCursor.getString(objCursor.getColumnIndex("address")) +
    " - " + objCursor.getString(objCursor.getColumnIndex("body"));
    list.add(sms);
    } while (objCursor.moveToNext());
    }
    }
    catch (Exception e) {
    Log.e("SMS", "Access list", e);
    }
    setListAdapter(
    new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, list));
    }
    }



    Guy

    Co-fondateur du site Android france, senior lead developper, passionné de bière et de cigare cubain

    Twitter Google+ 

5 commentaires

  1. 12 février 2010 à 16 h 19 min

    bonjour,

    comment faire pour que les sms apparaissent l’un a la foi, je m’explique:
    je voudrai qu’il n’affiche que le premier et que chaque fois que j’appuie sur le bouton ‘bas’ il passe a la position suivante du curseur
    merci pour votre aide

  2. 12 février 2010 à 16 h 29 min

    @Rico la solution la plus simple c’est de récupérer les sms dans un tableau et avec bouton incrémenter la position dans ton tableau pour afficher les valeurs dans tes textview par exemle

  3. 22 mars 2011 à 6 h 49 min

    Toutes les chaussures asics sont originales et directement de l usine.Pas cher chaussures Asics dans notre magasin en France sont 30-70% de remise et livraison gratuite.

Laissez un commentaire

     Vous devez être identifié pour publier un commentaire.
     Connexion - Inscription