@Mike M. i znalazłem problem z przyjętą odpowiedzi (patrz nasze komentarze):
Zasadniczo nie ma sensu przechodzi do pętli, jeśli nie są konkatenację wieloczęściowy wiadomość za każdym razem:
for (int i = 0; i < msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
msg_from = msgs[i].getOriginatingAddress();
String msgBody = msgs[i].getMessageBody();
}
Zauważ, że wystarczy ustawić msgBody
do wartości ciągu odpowiedniej części wiadomości bez względu w jakim indeksie jesteśmy, co powoduje, że cały punkt zapętlenia różnych części wiadomości SMS jest bezużyteczny, ponieważ zostanie ustawiony na ostatnią wartość indeksu. Zamiast tego powinniśmy używać +=
, lub jak Mike zauważył, StringBuilder
:
W sumie Oto co mój SMS otrzymaniu kodu wygląda następująco:
if (myBundle != null) {
Object[] pdus = (Object[]) myBundle.get("pdus"); // pdus is key for SMS in bundle
//Object [] pdus now contains array of bytes
messages = new SmsMessage[pdus.length];
for (int i = 0; i < messages.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); //Returns one message, in array because multipart message due to sms max char
Message += messages[i].getMessageBody(); // Using +=, because need to add multipart from before also
}
contactNumber = messages[0].getOriginatingAddress(); //This could also be inside the loop, but there is no need
}
tylko wprowadzenie tej odpowiedzi tam w przypadku kogoś innego ma takie samo zamieszanie.
Wiem, aby utworzyć aplikację do wysyłania wiadomości SMS, ale tutaj muszę utworzyć aplikację SMS, która pobiera informacje z SMS i zapisuje je w bazie danych SQLite ..... Jak mogę rozwinąć taką aplikację – iShader
@iShader Mam nadzieję, że udało Ci się pomyślnie utworzyć aplikację, chciałem tylko wiedzieć, w jaki sposób udało Ci się zsynchronizować wiadomości w urządzeniu i na serwerze. –
Zobacz ten blog http://www.gadgetsaint.com/android/read -sms-messages-android/#. WLrJHRJ97fY – ASP