Java 如何将两条短信合并为一条短信?
我使用以下代码创建广播:Java 如何将两条短信合并为一条短信?,java,android,smsmanager,Java,Android,Smsmanager,我使用以下代码创建广播: public class IncomingSms extends BroadcastReceiver { // Get the object of SmsManager final SmsManager sms = SmsManager.getDefault(); public void onReceive(Context context, Intent intent) { // Retrieves a map of ext
public class IncomingSms extends BroadcastReceiver {
// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();
public void onReceive(Context context, Intent intent) {
// Retrieves a map of extended data from the intent.
final Bundle bundle = intent.getExtras();
try {
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage.getDisplayOriginatingAddress();
String senderNum = phoneNumber;
String message = currentMessage.getMessageBody();
Log.i("SmsReceiver", "senderNum: " + senderNum + "; message: " + message+"; Date="+currentMessage.getTimestampMillis());
//sending to API
} // end for loop
} // bundle is null
} catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" +e);
}
}
此消息的唯一日期不同
如何检查它是否是一条短信的一部分?SmsMessage中是否有任何字段表示这是一条消息?您需要手动连接多部分消息。 在您的代码中,您需要做一些修改来分别处理多部分消息,如下所示
public class IncomingSms extends BroadcastReceiver {
// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();
public void onReceive(Context context, Intent intent) {
// Retrieves a map of extended data from the intent.
final Bundle bundle = intent.getExtras();
SmsMessage messages = null;
try {
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdusObj.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
} // end for loop
} // bundle is null
} catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" +e);
}
SmsMessage sms = messages[0];
String message;
try {
if (messages.length == 1 || sms.isReplace()) {
String phoneNumber = sms.getDisplayOriginatingAddress();
String senderNum = phoneNumber;
message = sms.getMessageBody();
Log.info("SmsReceiver", "senderNum: " + senderNum + "; message: " + message+"; Date="+sms.getTimestampMillis());
//sending to API
} else {
StringBuilder bodyText = new StringBuilder();
for (int j = 0; j < messages.length; j++) {
bodyText.append(messages[j].getMessageBody());
}
message = bodyText.toString();
}
} catch (Exception e) {
}
}
}
public class IncomingSms扩展广播接收器{
//获取SmsManager的对象
final smsmsmanager sms=smsmsmanager.getDefault();
公共void onReceive(上下文、意图){
//从意图检索扩展数据的映射。
final Bundle=intent.getExtras();
SmsMessage messages=null;
试一试{
if(bundle!=null){
最终对象[]pdusObj=(对象[])bundle.get(“pdus”);
消息=新的SmsMessage[pdus.length];
对于(int i=0;i
但如果我收到来自不同电话号码的消息,它不会崩溃吗?因为,您先收到第一条消息,然后再从其他用户处添加正文。即使同时收到来自不同用户的多条消息,这也非常完美。
public class IncomingSms extends BroadcastReceiver {
// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();
public void onReceive(Context context, Intent intent) {
// Retrieves a map of extended data from the intent.
final Bundle bundle = intent.getExtras();
SmsMessage messages = null;
try {
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdusObj.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
} // end for loop
} // bundle is null
} catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" +e);
}
SmsMessage sms = messages[0];
String message;
try {
if (messages.length == 1 || sms.isReplace()) {
String phoneNumber = sms.getDisplayOriginatingAddress();
String senderNum = phoneNumber;
message = sms.getMessageBody();
Log.info("SmsReceiver", "senderNum: " + senderNum + "; message: " + message+"; Date="+sms.getTimestampMillis());
//sending to API
} else {
StringBuilder bodyText = new StringBuilder();
for (int j = 0; j < messages.length; j++) {
bodyText.append(messages[j].getMessageBody());
}
message = bodyText.toString();
}
} catch (Exception e) {
}
}
}