当我收到短信时,我需要将短信存储到 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是我为了简化读/写操作而编写的单例类,我确信它处理长文本没有问题!
根据几个应用程序,似乎多部分 SMS 是以相同的意图接收的,并且它们由消息数组表示。
基本上,您检索完整的消息:
StringBuffer content = new StringBuffer();
for (Message sms : messages) {
content.append(sms.getDisplayMessageBody());
}
String mySmsText = content.toString();
据我所知,消息的顺序似乎是正确的。不管怎样,我不知道有什么方法可以检索消息头(除了自己解析 pdu)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)