如何在广播接收器中处理超过 160 个字符(如 250 个字符)的短信
How to handle sms with more than 160 characters like 250 characters in broadcast receiver
我如何处理广播接收器中的多部分短信并在开始操作之前将其存储在一个字符串中,就像我想将多部分短信存储在一个字符串中然后用不同的分隔符拆分它然后从中获取状态代码我有 1 条 250 个字符的短信。我试过下面的代码但没有用我在模拟器上测试了它请帮助我我也输入了接收代码。
String mySmsText ;
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]);
}
StringBuffer content = new StringBuffer();
if (messages.length > 0) {
for (int i = 0; i < messages.length; i++) {
content.append(messages[i].getMessageBody());
}
}
mySmsText = content.toString();
}
instance.t1.setText(mySmsText);
}
}
我尝试打印 msg,但它显示的错误字符也覆盖了旧字符。
首先,我很抱歉,我的代码没有问题,问题仅出在我测试过的模拟器上。当我在真实设备上测试它时它运行良好我很抱歉......
我终于完成了,谢谢 AxelH 先生 的回答
DataBaseHandler db;
String mySmsText;
public void onReceive(Context context, Intent intent) {
db = new DataBaseHandler(context);
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) {
StringBuffer content = new StringBuffer();
for (SmsMessage sms : messages)
content.append(sms.getDisplayMessageBody());
mySmsText = content.toString();
}
db.update_sys_pwd(mySmsText);
instance.t1.setText(mySmsText);
}
}
我如何处理广播接收器中的多部分短信并在开始操作之前将其存储在一个字符串中,就像我想将多部分短信存储在一个字符串中然后用不同的分隔符拆分它然后从中获取状态代码我有 1 条 250 个字符的短信。我试过下面的代码但没有用我在模拟器上测试了它请帮助我我也输入了接收代码。
String mySmsText ;
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]);
}
StringBuffer content = new StringBuffer();
if (messages.length > 0) {
for (int i = 0; i < messages.length; i++) {
content.append(messages[i].getMessageBody());
}
}
mySmsText = content.toString();
}
instance.t1.setText(mySmsText);
}
}
我尝试打印 msg,但它显示的错误字符也覆盖了旧字符。
首先,我很抱歉,我的代码没有问题,问题仅出在我测试过的模拟器上。当我在真实设备上测试它时它运行良好我很抱歉......
我终于完成了,谢谢 AxelH 先生 的回答
DataBaseHandler db;
String mySmsText;
public void onReceive(Context context, Intent intent) {
db = new DataBaseHandler(context);
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) {
StringBuffer content = new StringBuffer();
for (SmsMessage sms : messages)
content.append(sms.getDisplayMessageBody());
mySmsText = content.toString();
}
db.update_sys_pwd(mySmsText);
instance.t1.setText(mySmsText);
}
}