@ Mike M. y me encontré con un problema con la respuesta aceptada (ver nuestros comentarios):
Básicamente, no hay punto de ir a través del bucle si no estamos concatenando el mensaje de varias partes cada vez:
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();
}
en cuenta que acabamos de fijar msgBody
para el valor de cadena de la parte respectiva del mensaje no importa En qué índice estamos, lo que hace que el punto de recorrer las distintas partes del mensaje SMS sea inútil, ya que se establecerá en el último valor del índice. En su lugar debemos utilizar +=
, o como Mike ha señalado, StringBuilder
:
Con todo, aquí es lo que mi SMS recibir código es el siguiente:
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
}
sólo poner esta respuesta por ahí en caso de cualquier otra persona tiene la misma confusión
Sé crear una aplicación para enviar el SMS, pero aquí tengo que crear una aplicación de SMS que obtenga la información de los SMS y la guarde en la base de datos SQLite ..... ¿Cómo puedo desarrollar dicha aplicación? – iShader
@iShader Espero que haya tenido éxito en la creación de la aplicación, solo quería saber cómo se las arregló para sincronizar los msgs b/w el dispositivo y el servidor –
Consulte este blog http://www.gadgetsaint.com/android/read -sms-messages-android/#. WLrJHRJ97fY – ASP