我有一个应用程序,它必须侦听特定的SMS.到目前为止容易.
但是当我收到消息时,它是多部分的.是否有正确的方式接收短信作为一条消息?
现在我的活动开始两次,对于短信的每一部分.我应该手动连接短信吗?
om2*_*345 11
Bundle bundle = intent.getExtras();
Object[] pdus = (Object[]) bundle.get("pdus");
messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++)
{
messages[i] =
SmsMessage.createFromPdu((byte[]) pdus[i]);
}
SmsMessage sms = messages[0];
try {
if (messages.length == 1 || sms.isReplace()) {
body = sms.getDisplayMessageBody();
} else {
StringBuilder bodyText = new StringBuilder();
for (int i = 0; i < messages.length; i++) {
bodyText.append(messages[i].getMessageBody());
}
body = bodyText.toString();
}
} catch (Exception e) {
}
Run Code Online (Sandbox Code Playgroud)
是的,您应该手动连接短信,但显然您不希望为每个消息段启动新的活动。
我建议将您的 ActivitylaunchMode属性设置为singleTask或 ,singleInstance这样就不会发生这种情况。
或者,让 接收您的短信,只有在收到完整消息后Service才会发送新短信。Activity