Android 安卓:短信广播接收器无法获取较大短信的全文
似乎如果一条短信中有一些较大的文字,它会因为某种原因被剪切,因此不会出现整个短信,以下是我的代码:Android 安卓:短信广播接收器无法获取较大短信的全文,android,broadcastreceiver,Android,Broadcastreceiver,似乎如果一条短信中有一些较大的文字,它会因为某种原因被剪切,因此不会出现整个短信,以下是我的代码: public class SmsReceiver extends BroadcastReceiver { // vars here @Override public void onReceive(Context context, Intent intent) { // Get SMS map from Intent Bundle extra
public class SmsReceiver extends BroadcastReceiver {
// vars here
@Override
public void onReceive(Context context, Intent intent) {
// Get SMS map from Intent
Bundle extras = intent.getExtras();
if (extras != null) {
// Get received SMS array
Object[] smsExtra = (Object[]) extras.get(SMS_EXTRA_NAME);
String address = "";
String body = "";
for (int i = 0; i < smsExtra.length; ++i) {
SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]);
body = sms.getMessageBody().toString();
address = sms.getOriginatingAddress();
}
// show the popup
Intent intnt = new Intent(context, ShowNotification.class);
intnt.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intnt.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intnt.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intnt.putExtra("address", address);
intnt.putExtra("body", body);
context.startActivity(intnt);
}
}
}
因此,出于某种原因,并非所有的短信都会出现:(
有人能告诉我如何处理这个问题吗?正如我所看到的其他短信应用程序,如sms Popup或Go sms Pro,它们会获得完整的短信文本,并显示在弹出窗口或对话中
谢谢你的帮助好吧,我想起来了,我使用的代码只收到了最后一条短信,只需要附加所有短信: 这: 应该是:
body += sms.getMessageBody().toString();
也许会有帮助
String sender = "";
StringBuilder messageBody= new StringBuilder();
for (Object pdu : pdus) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
messageBody.append( smsMessage.getMessageBody());
sender = smsMessage.getDisplayOriginatingAddress();
}
if (BuildConfig.DEBUG){
Log.i("OKK", "SMS Body: " + messageBody.toString());
}
首先,我肯定您已经检查过了,但是
sms.getMessageBody().toString()
是否返回完整的sms正文?如果是,问题可能是Toast不能显示大量文本。不过,我还没有找到它的实际限制。@Smokez:谢谢您的提示,这就是问题所在:)
body += sms.getMessageBody().toString();
String sender = "";
StringBuilder messageBody= new StringBuilder();
for (Object pdu : pdus) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
messageBody.append( smsMessage.getMessageBody());
sender = smsMessage.getDisplayOriginatingAddress();
}
if (BuildConfig.DEBUG){
Log.i("OKK", "SMS Body: " + messageBody.toString());
}