2012-05-25 2 views
7

Ich habe das unten Ereignis, um SMS programmatisch zu senden. Es scheint jedoch nicht zu funktionieren, der Popup-Toast erscheint und es gibt keinen Eintrag in logcat, es wird einfach keine Nachricht erstellt. Ich habe auch die entsprechenden Berechtigungen hinzugefügt, um die Datei zu manifestieren.smsManager.sendTextMessage funktioniert nicht

Irgendwelche Vorschläge?

private Runnable SMSRunnable = new Runnable() 
{ 
    public void run() 
    {  
     smsManager = SmsManager.getDefault(); 

     smsNumber = edittextSmsNumber.getText().toString(); 
     smsText = edittextSmsText.getText().toString(); 


     smsManager.sendTextMessage(smsNumber, smsNumber, smsNumber , null, null); 

    } 
}; 
+0

Haben Sie dies auf einem echten Gerät versucht, funktioniert es für mich. smsManager = SmsManager.getDefault(); smsManager.sendTextMessage (getPhoneNumber(), null, getString (R.string.message), null, null); – ND27

Antwort

9

Versuchen Sie dies.

SmsManager sms = SmsManager.getDefault(); 
PendingIntent sentPI; 
String SENT = "SMS_SENT"; 

sentPI = PendingIntent.getBroadcast(this, 0,new Intent(SENT), 0); 

sms.sendTextMessage(phoneNumber, null, message, sentPI, null); 
+0

Das hat funktioniert. Wenn es dir nichts ausmacht, kannst du erklären warum? – Rhys

+0

Die sendTextMessage() - Methode sendet die SMS-Nachricht mit einem PendingIntent.PendingIntent-Objekt, um ein Ziel zu identifizieren, das zu einem späteren Zeitpunkt aufgerufen werden soll. auch wir können den Status der SMS-Nachricht senden Prozess überwachen –

1

Dies ist, was für mich funktioniert:

PendingIntent pi = PendingIntent.getActivity(this, 0, 
     new Intent(this, Next.class), 0); 
//Next is the class to move when message sent 
SmsManager sms = SmsManager.getDefault(); 
sms.sendTextMessage("phno", null, "message", null, null); 
0

Eigentlich für mich funktioniert:

String messageText = "...YOUR TEXT HERE..."; 
SmsManager sm = SmsManager.getDefault(); 
sm.sendTextMessage("PHONE NUMBER HERE", null, messageText, null, null); 

Nur um sicher zu sein, damit Sie die Nachricht nicht in gesendet finden Ihre Nachrichtenhistorie.

1

Ich verbrachte viel Zeit, dann fand ich heraus, dass ich einfach die Ländervorwahl voranstellen konnte. Für mich vor "+91" vor der Telefonnummer funktionierte wie ein Champion.

String phnNumber="+91"+editText.getText().toString(); 
+0

Ich konfrontiert auch ähnliche NPE-Szenario, aber das Problem an meinem Ende war wegen falscher Telefonnummer. Also müssen Sie auch überprüfen, ob die Telefonnummer korrekt war oder nicht. – Napolean

+0

einfach und nützlich es braucht nicht PendingIntent, um SMS zu empfangen – mehmet

Verwandte Themen