我需要在收到短信时将短信存储到sqlite数据库中。此时它可以正常使用短信(160个字符),但如果我收到一个多部分短信,它会将短信截断为大约155个字符。
这是我的代码:
SmsBR.java
public class SmsBR extends BroadcastReceiver {
private DBManager dbm;
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[])bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
}
if (messages.length > 0) {
dbm=DBManager.getDBM(null);
dbm.insertSMS(messages[0]);
}}}}
DBManager是我编写的单例类,用于简化读/写操作,我确信它对长文本没有问题!
答案 0 :(得分:7)
根据几个应用程序,似乎多部分SMS以相同的意图接收,并且它们由消息数组表示。
所以基本上,你检索完整的消息:
StringBuffer content = new StringBuffer();
for (Message sms : messages) {
content.append(sms.getDisplayMessageBody());
}
String mySmsText = content.toString();
据我所知,似乎邮件的顺序正确。无论如何,我不知道有任何方法来检索邮件头(除了自己解析pdu)。
答案 1 :(得分:0)
当考虑多部分SMS的用户数据头时,155个字符听起来像用户数据的长度。换句话说,听起来这里没有问题 - 正确存储PDU。您需要收集SMS的其他PDU以显示/存储完整的内容。