Bonjour,

J'ai réalisé une petite application au démarrage du téléphone qui lance un service. Sous certaines conditions, ce service devra envoyer un sms.

Le code d'envoi du sms fonctionne parfaitement quand je suis dans mon application et que je clique sur un bouton (le sms est envoyé et bien reçu).

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
private void SendSms(String sPhoneNumber, String sMessage)
    {        
    	String SENT = "SMS_SENT";
        String DELIVERED = "SMS_DELIVERED";
 
        Toast.makeText(this, sPhoneNumber,Toast.LENGTH_SHORT).show();
 
        PendingIntent sentPI = PendingIntent.getActivity(getBaseContext(), 0, new Intent(SENT), 0);
        PendingIntent deliveredPI = PendingIntent.getActivity(getBaseContext(), 0, new Intent(DELIVERED), 0);
 
        registerReceiver(new BroadcastReceiver(){
            @Override
            public void onReceive(Context arg0, Intent arg1){
                switch (getResultCode())
                {
                    case Activity.RESULT_OK:
                        Toast.makeText(getBaseContext(), "SMS envoyé", Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                        Toast.makeText(getBaseContext(), "Generic failure", 
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_NO_SERVICE:
                        Toast.makeText(getBaseContext(), "No service", Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_NULL_PDU:
                        Toast.makeText(getBaseContext(), "Null", Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_RADIO_OFF:
                        Toast.makeText(getBaseContext(), "Radio off",  Toast.LENGTH_SHORT).show();
                        break;
                }
            }
        }, new IntentFilter(SENT));
 
        registerReceiver(new BroadcastReceiver(){
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode())
                {
                    case Activity.RESULT_OK:
                        Toast.makeText(getBaseContext(), "SMS reçu", Toast.LENGTH_SHORT).show();
                        break;
                    case Activity.RESULT_CANCELED:
                        Toast.makeText(getBaseContext(), "SMS non reçu", Toast.LENGTH_SHORT).show();
                        break;                        
                }
            }
        }, new IntentFilter(DELIVERED));        
 
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(sPhoneNumber, null, sMessage, sentPI, deliveredPI);  
    }
Est ce que quelqu'un aurait une idée svp ? Je n'ai aucune erreur. Avec eclipse, je n'arrive pas à éteindre le téléphone de l'émulateur, donc je ne sais pas comment faire pour avoir un log.

Cette fonction se trouve dans une classe d'un service. Faut il préciser quelque chose de spécial dans le manifest si l'envoi du sms se fait dans le service ?

Je vous remercie d'avance,

Cordialement