Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓:短信广播接收器无法获取较大短信的全文_Android_Broadcastreceiver - Fatal编程技术网

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());
            }