Ich habe auf Android ein seltsames Problem. Ich möchte auf eine Lieferabsicht achten, wenn ich eine SMS über meine App sende. Hier ist, was ich bisher gemacht habe:
%Vor% Jetzt ist das Problem, dass, wenn die onReceive()
-Methoden meiner Broadcast-Empfänger aufgerufen werden, ich die Methode getResultCode()
aufrufen und sie immer -1 zurückliefern! Selbst wenn das Telefon ausgeschaltet ist, ist es unmöglich zu verfolgen, ob die SMS zugestellt wird oder nicht!
Ich habe die Nummer mit dem GoSMSPro überprüft und eine SMS geschickt, die fehlgeschlagen ist. Das Interessante daran ist, dass wenn ich mein Handy in den Flugmodus setze, ein Ergebniscode gleich 2
ist, was SmsManager.RESULT_ERROR_RADIO_OFF
Jetzt ist die Frage, was ist hier falsch?
Die Dokumentation zu sendTextMessage gibt Folgendes an:
sentIntent: Wenn nicht NULL, wird PendingIntent gesendet, wenn die Nachricht erfolgreich gesendet wurde oder fehlgeschlagen ist. Der Ergebniscode lautet Activity.RESULT_OK ...
Wenn Sie Activity.RESULT_OK aufrufen, lautet der Wert -1.
Also ist der resultCode von -1 tatsächlich RESULT_OK.
Im Allgemeinen ist es am besten, nicht auf numerische Werte zu schauen, sondern zu versuchen herauszufinden, welche Konstante sie darstellen.
Versuchen Sie diesen Ansatz: Um eine Textnachricht zu senden, verwenden Sie sendTextMessage von SMS Manager.
%Vor%Der erste Parameter "Pending Intent" (sentIntent) wird ausgelöst, wenn die Nachricht erfolgreich gesendet wurde oder fehlgeschlagen ist. Der Ergebniscode für den Broadcast-Empfänger, der diese Absicht empfängt, ist einer der folgenden.
%Vor%Der zweite ausstehende Parameter (deliveryIntent) wird nur ausgelöst, nachdem der Empfänger Ihre SMS-Nachricht erhalten hat.
Nach Sende- und Auslieferungsereignissen werden entsprechende Nachrichten über Toast angezeigt.
activity_main.xml
%Vor%MainActivity.java
%Vor%Hoffe das hat geholfen!
Tags und Links sms android-intent