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 ?
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 ?
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
Merci beaucoup wax78,
je vais voir le lien
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
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
Merci Hephaistos007. En faite voilà mon code.
Alors vous peuvez m'expliquer comment je doit faire avec le code que vous m'avez donner.
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.
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
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?
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?
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
Merci pour votre aide. Tous cela m'a beaucoup aidé.
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:
Aide moi s'il vous plaît.
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.
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(); } } } } } }
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
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()); }} } } } }
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?
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.
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
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(); } } } }}
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>
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager