Sms aus Service heraus versenden.

  • Antworten:1
Daniel online
  • Forum-Beiträge: 282

13.02.2012, 19:32:23 via Website

Hallo,

ich will eine Sms aus einem Service heraus versenden. Das komische daran: Der Code klappt einwandfrei wenn ich ihn in einer Activity habe, allerdings wird aus dem Service heraus nichts versendet. Die Methode läuft einfach durch und es gibt auch keine Fehlermeldung.

Hier mal der Code:

1private void sendSmS() {
2 //Zu Beginn soll einmalig eine Sms verschickt werden. (Wenn aktiviert).
3
4
5 Log.d(TAG,"sms send to "+smsNummber+" text:"+smsMsg);
6 String SENT = "SMS_SENT";
7 String DELIVERED = "SMS_DELIVERED";
8
9 PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
10 new Intent(SENT), PendingIntent.FLAG_UPDATE_CURRENT);
11
12 PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
13 new Intent(DELIVERED), PendingIntent.FLAG_UPDATE_CURRENT);
14
15 //---when the SMS has been sent---
16 registerReceiver(new BroadcastReceiver(){
17 @Override
18 public void onReceive(Context arg0, Intent arg1) {
19 Log.d("sms","onReceive - sent");
20 switch (getResultCode())
21 {
22 case Activity.RESULT_OK:
23 Log.d("sms","SMS sent");
24 break;
25 case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
26 Log.d("sms","Generic failure");
27 break;
28 case SmsManager.RESULT_ERROR_NO_SERVICE:
29 Log.d("sms","No service");
30 break;
31 case SmsManager.RESULT_ERROR_NULL_PDU:
32 Log.d("sms","Null PDU");
33 break;
34 case SmsManager.RESULT_ERROR_RADIO_OFF:
35 Log.d("sms","Radio off");
36 break;
37 }
38 }
39 }, new IntentFilter(SENT));
40
41 //---when the SMS has been delivered---
42 registerReceiver(new BroadcastReceiver(){
43
44 @Override
45 public void onReceive(Context arg0, Intent arg1) {
46 Log.d("sms","onReceive - deliverd");
47 switch (getResultCode())
48 {
49 case Activity.RESULT_OK:
50 Log.d("sms","SMS delivered");
51 break;
52 case Activity.RESULT_CANCELED:
53 Log.d("sms","SMS not delivered");
54 break;
55 }
56 }
57 }, new IntentFilter(DELIVERED));
58
59 SmsManager sms = SmsManager.getDefault();
60 smsNummber = smsNummber.trim();
61 sms.sendTextMessage(smsNummber, null, smsMsg, sentPI, deliveredPI);
62 Log.d(TAG,"sms gesendet");
63
64 }

An der Nummer kann es nicht liegen, das habe ich schon getestet. (Hardcoded String in Acivity geht, hier nicht).
Im Log sehe ich nur:
"sms send to "+smsNummber+" text:"+smsMsg (mit ausgefüllten variablen)
sms gesendet

Ich hoffe ihr könnt mir helfen :)

Daniel

Antworten
Daniel online
  • Forum-Beiträge: 282

13.02.2012, 19:49:14 via Website

okay, es scheint als hätte ich eben die Lösung gefunden. Für alle die evtl. später auf das Problem stoßen:
Eine Sms darf nie mehr als 160 Zeichen haben, ansonsten wird nämlich einfach nichts gemacht. Leider auch keine Fehlermeldung ausgegeben.

Lg,
Daniel

Antworten