gpt4 book ai didi

java - 如何将两个 SmsMessage 合并为一个 SmsMessage?

转载 作者:行者123 更新时间:2023-11-30 01:56:49 26 4
gpt4 key购买 nike

我使用以下代码创建广播(来自 this article ):

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);

}
}

但是当我收到一条长短信(两条短信合二为一)时,例如。短信发送:“bodyOfTheFirstSMS,bodyOfTheSecondSMS”,然后被截成两条日志:

1) senderNum: +333333333333; message: "bodyOfTheFirstSMS,"; Date=1439968674000
2) senderNum: +333333333333; message: "bodyOfTheSecondSMS"; Date=1439968677000

不同的只是这条消息的日期。

如何检查它是单个短信的一部分? 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) {

}

}
}

关于java - 如何将两个 SmsMessage 合并为一个 SmsMessage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32089392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com