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ération d’un SMS


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 23
    Points : 9
    Points
    9
    Par défaut Récupération d’un SMS
    Bonjour,
    Je suis débutant sur androïd. Mon projet ce de récupérer un rendez-vous dans un SMS. Quelqu’un pourrait m’aider s’il vous plait ?

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 072
    Points : 7 974
    Points
    7 974
    Par défaut
    Peut être en commencent par ici http://www.developpez.net/forums/d12...s-application/ ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup wax78,
    je vais voir le lien

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    J'ai encore une question. J'ai déja fait quelque recherche et, j'arrive à récuperer le corp du message et l'affiché dans le logcat. Alors j'imagine que je viens de récuperer le corp du message,ou je me trompe? Si j'ai raison,mon problème est maintenant de récuperer la date et l'heure dans le corp du sms. Merci encore pour votre aide

  5. #5
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Et bien au lieu de récupérer uniquement le champs BODY, récupère aussi le champs DATE :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      ContentResolver cr =getContentResolver();
      Uri uri = Uri.parse("content://sms/inbox");
      Cursor messagesCursor = cr.query(uri, new String[] {,"body","date"}, null,null, null);
      //A toi de jouer...

    Pour connaitre les champs disponibles, sous forme de constantes : https://developer.android.com/refere...msColumns.html
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    Merci Hephaistos007. En faite voilà mon code.
    Alors vous peuvez m'expliquer comment je doit faire avec le code que vous m'avez donner.Nom : Capture.PNG
Affichages : 251
Taille : 28,9 Ko

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    Pour plus de precision mon but c'est de recuperer le message text qui contient une date mais pas la date d'arriver du sms.

  8. #8
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Ah ok. Dans ce cas, oublies ma solution. Recherche simplement la présence d'une date dans le corps du message à l'aide d'une expression régulière. Pour t'aider, voici le motif à rechercher :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    static final String DATE_PATTERN = "(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/((19|20)\\d\\d)";
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup Hephaistos007.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    je n'y arrive pas a faire quelque chose avec le motif que vous m'avez donné. Pouvez-vous me donner un petit coup de pousse?

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    c'est bon maintenant. Merci beaucoup pour votre aide. Juste une dernière question: es ce qu'il est possible d'envoyer des evenements dans l'agenda qui est déjà installé dans le telephone depuis une autre application?

  12. #12
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Logiquement, à l'aide du ContentProvider de l'Agenda, tu peux insérer des données. http://developer.android.com/guide/t...-provider.html
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    Merci pour votre aide. Tous cela m'a beaucoup aidé.

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    J'ai encore besoin de votre aide s'il vous plait. j'ai essayé de recuperer des multiples de date dans le SMS pour mettre dans un tableau date[]. Et une erreur se produit (l'emulateur affiche que l'application s'est arrêté) sauf si je remplace date[] par String date. Alors j'ai changé le code (envoyer le message texte par intent vers un service) et j'ai de très gros problème maintenant par ce que peut import le code que j'essai de compiler l'erreur se produit toujours.
    voilà l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    09-08 22:51:15.382: E/ThrottleService(164): problem during onPollAlarm: java.lang.IllegalStateException: problem parsing stats: java.io.FileNotFoundException: /proc/net/xt_qtaguid/iface_stat_all: open failed: ENOENT (No such file or directory)
     
    09-08 22:52:00.392: I/Choreographer(467): Skipped 33 frames!  The application may be doing too much work on its main thread.
    Aide moi s'il vous plaît.

    et voila le 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.telephony.SmsMessage;
    import android.util.Log;
    import android.widget.Toast;
     
    public class MainSms extends BroadcastReceiver
    {
    	 private final String   ACTION_RECEIVE_SMS  = "android.provider.Telephony.SMS_RECEIVED";
    	 private static Pattern pattern;
    	    private static Matcher matcher;
    	    static final String DATE_PATTERN = "(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/((19|20)\\d\\d)";
    	    String splitString;
    	    String[] date;
    	    String delim=" ";
     
    	 @Override
    	 public void onReceive(Context context, Intent intent)
    	 {Toast.makeText(context, "Action", Toast.LENGTH_SHORT).show();
    		 if (intent.getAction().equals(ACTION_RECEIVE_SMS))
    		 {
    			 Bundle bundle = intent.getExtras();
    			 if (bundle != null)
    			 {
    				 Object[] pdus = (Object[]) bundle.get("pdus");
     
    				 final SmsMessage[] messages = new SmsMessage[pdus.length];
    				 for (int i = 0; i < pdus.length; i++)  {  messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);  }  if (messages.length > -1)
    				 {
    					final String messageBody = messages[0].getMessageBody();
     
    					for(SmsMessage message : messages)
    					{
    						String messagBody=messageBody.toLowerCase();
     
    						String[] messageSplit=messagBody.split(delim);
    						int count=messageSplit.length;
     
    						int j=0;
    						for (int i=0; i<count;i++)
    						{
     
    							 pattern = Pattern.compile(DATE_PATTERN);
    						     matcher = pattern.matcher(messageSplit[i]);
    						        if(matcher.find())
    								{
     
    						        	date[j]=matcher.group();
    						        	Toast.makeText(context,date[j] , Toast.LENGTH_LONG).show();
    						        	j++;
     
    						        }
     
    						}
    						if (messagBody.contains("reunion")){
    						Log.i("",message.getOriginatingAddress()+"::"+message.getMessageBody());
    						Log.i("",message.getOriginatingAddress()+"::"+messagBody);
     
    						}
     
     
    						Toast.makeText(context, "Parfait", Toast.LENGTH_SHORT).show();
    				 }
    				}
    			 }
    		}
    	}
     
     
    }

  15. #15
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Le traitement dans onReceive() est probablement trop long. Un BroadcastReceiver est juste là pour intercepter un évènement et ne dois pas prendre plus de quelques milli-secondes. Dans ton cas, transfères l'intent à un Service qui pourra réaliser le traitement.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé de compiler un simple BroadcastReceiver mais ça reste toujours le même.
    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
     
    package com.exampleSm.sm;
     
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.telephony.SmsMessage;
    import android.util.Log;
    import android.widget.Toast;
     
    public class MainSms extends BroadcastReceiver
    {
    	 private final String   ACTION_RECEIVE_SMS  = "android.provider.Telephony.SMS_RECEIVED";
     
    	 @Override
    	 public void onReceive(Context context, Intent intent)
    	 {Toast.makeText(context, "Action", Toast.LENGTH_SHORT).show();
    		 if (intent.getAction().equals(ACTION_RECEIVE_SMS))
    		 {
    			 Bundle bundle = intent.getExtras();
    			 if (bundle != null)
    			 {
    				 Object[] pdus = (Object[]) bundle.get("pdus");
     
    				 final SmsMessage[] messages = new SmsMessage[pdus.length];
    				 for (int i = 0; i < pdus.length; i++)  {  messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);  }  if (messages.length > -1)
    				 {
    					final String messageBody = messages[0].getMessageBody();
    					for(SmsMessage message : messages)
    					{
    						Log.i("",message.getOriginatingAddress()+"::"+message.getMessageBody());
     
    				 }}
    			 }
    		}
    	}
     
     
    }

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    je crois maintenant que l'erreur vient de l'eclipse ou d'android parce que j'ai essayé de faire un nouveau projet "activite". Je ne modifie rien?J'ai tout de suite lencé l'application mais l'emulateur n'affiche même pas "Hello word". Je devais faire à votre avis?

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    Bonjour,
    Maintenant il n'y a plus d'erreur mais pouvez-vous me dire qu'est ce qui ne vas pas dans ce code. L'emulateur n'affiche plus le toast.
    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
     
    package com.exampletoast.toastexemple;
     
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.telephony.SmsMessage;
    import android.widget.Toast;
     
    public class MonToast extends BroadcastReceiver {
     
    	@Override
    public void onReceive(Context context, Intent intent) {
    	if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED"))
    	{
    		Bundle bundle = intent.getExtras();
     
     
    		if(bundle != null) {
    			Object[] pdus = (Object[]) bundle.get("pdus");
    			final SmsMessage[] messages= new SmsMessage[pdus.length];
     
    			for(int i=0; i<pdus.length;i++) {
    				messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
    			String message = messages[i].getMessageBody();
    				Toast.makeText(context,message,Toast.LENGTH_SHORT).show();
    			}
     
    		}
     
    	}
     
    }}
    Voici le manifest:
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.exampletoast.toastexemple"
        android:versionCode="1"
        android:versionName="1.0" >
     
        <uses-sdk
            android:minSdkVersion="16"
            android:targetSdkVersion="20" />
        <uses-permission android:name="android.permission.READ_SMS"/>
        <uses-permission android:name=""/>
     
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
     
                <receiver android:name=".MonToast"
    	android:enabled="true">
    		<intent-filter>
    			<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
    			<category android:name="android.intent.category.DEFAULT"/>
    		</intent-filter>		  
    </receiver>
        </application>
     
    </manifest>

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/08/2015, 12h19
  2. Récupération contenu SMS envoyé par un service (sans numéro)
    Par Saphir09 dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 19/06/2015, 15h24
  3. Passerelle SMS
    Par Segalla dans le forum Développement
    Réponses: 14
    Dernier message: 07/02/2012, 12h15
  4. [WMI] Récupération des lots SMS
    Par Darkenshin dans le forum Windows
    Réponses: 5
    Dernier message: 04/11/2005, 10h57
  5. Réponses: 4
    Dernier message: 05/06/2002, 13h15

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