@ Mike M. và tôi thấy một vấn đề với câu trả lời được chấp nhận (xem ý kiến của chúng tôi):
về cơ bản, không có điểm nào trong trải qua các vòng lặp for nếu chúng ta không concatenating thông điệp nhiều phần dữ liệu mỗi lần:
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();
}
Chú ý rằng chúng ta chỉ cần đặt msgBody
đến chuỗi giá trị của các phần tương ứng của thông điệp không có vấn đề những gì chúng tôi đang trên chỉ mục, mà làm cho toàn bộ các điểm của looping thông qua các phần khác nhau của tin nhắn SMS vô dụng, vì nó sẽ chỉ được thiết lập để các giá trị chỉ số cuối cùng. Thay vào đó chúng ta nên sử dụng +=
, hoặc như Mike ghi chú khác, StringBuilder
:
Tất cả trong tất cả, đây là những gì SMS tôi nhận mã trông giống như:
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
}
Chỉ cần đặt câu trả lời này ngoài kia trong trường hợp bất cứ ai khác có cùng một sự nhầm lẫn.
Nguồn
2017-01-16 22:55:53
Tôi biết tạo ứng dụng để gửi SMS, nhưng ở đây tôi cần tạo ứng dụng SMS nhận thông tin từ SMS và lưu vào Cơ sở dữ liệu SQLite ..... Làm cách nào để phát triển ứng dụng như vậy – iShader
@iShader tôi hy vọng bạn đã thành công trong việc tạo ứng dụng, chỉ muốn biết làm cách nào bạn quản lý để đồng bộ hóa thông điệp b/w thiết bị và máy chủ –
Kiểm tra blog này http://www.gadgetsaint.com/android/read -sms-messages-android/#. WLrJHRJ97fY – ASP