Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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
Java 如何将两条短信合并为一条短信?_Java_Android_Smsmanager - Fatal编程技术网

Java 如何将两条短信合并为一条短信?

Java 如何将两条短信合并为一条短信?,java,android,smsmanager,Java,Android,Smsmanager,我使用以下代码创建广播: public class IncomingSms extends BroadcastReceiver { // Get the object of SmsManager final SmsManager sms = SmsManager.getDefault(); public void onReceive(Context context, Intent intent) { // Retrieves a map of ext

我使用以下代码创建广播:

public class IncomingSms extends BroadcastReceiver {

    // Get the object of SmsManager
    final SmsManager sms = SmsManager.getDefault();

    public void onReceive(Context context, Intent intent) {

        // Retrieves a map of extended data from the intent.
        final Bundle bundle = intent.getExtras();

        try {

            if (bundle != null) {

                final Object[] pdusObj = (Object[]) bundle.get("pdus");

                for (int i = 0; i < pdusObj.length; i++) {

                    SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                    String phoneNumber = currentMessage.getDisplayOriginatingAddress();

                    String senderNum = phoneNumber;
                    String message = currentMessage.getMessageBody();

                    Log.i("SmsReceiver", "senderNum: " + senderNum + "; message: " + message+"; Date="+currentMessage.getTimestampMillis());
//sending to API
                   } // end for loop
            } // bundle is null

        } catch (Exception e) {
            Log.e("SmsReceiver", "Exception smsReceiver" +e);

        }
    }
此消息的唯一日期不同


如何检查它是否是一条短信的一部分?SmsMessage中是否有任何字段表示这是一条消息?

您需要手动连接多部分消息。 在您的代码中,您需要做一些修改来分别处理多部分消息,如下所示

public class IncomingSms extends BroadcastReceiver {
    // Get the object of SmsManager
    final SmsManager sms = SmsManager.getDefault();
    public void onReceive(Context context, Intent intent) {
        // Retrieves a map of extended data from the intent.
        final Bundle bundle = intent.getExtras();
        SmsMessage messages = null;
        try {
            if (bundle != null) {
                final Object[] pdusObj = (Object[]) bundle.get("pdus");
                messages = new SmsMessage[pdus.length];
                for (int i = 0; i < pdusObj.length; i++) {
                    messages[i] = SmsMessage.createFromPdu((byte[]) pdusObj[i]);

                   } // end for loop
            } // bundle is null
        } catch (Exception e) {
            Log.e("SmsReceiver", "Exception smsReceiver" +e);
        }
        SmsMessage sms = messages[0];
        String message;
        try {
            if (messages.length == 1 || sms.isReplace()) {

                String phoneNumber = sms.getDisplayOriginatingAddress();
                    String senderNum = phoneNumber;
                     message = sms.getMessageBody();
                    Log.info("SmsReceiver", "senderNum: " + senderNum + "; message: " + message+"; Date="+sms.getTimestampMillis());
//sending to API
            } else {
            StringBuilder bodyText = new StringBuilder();
            for (int j = 0; j < messages.length; j++) {
                bodyText.append(messages[j].getMessageBody());
            }
            message = bodyText.toString();
        }
        } catch (Exception e) {

        }

    }
}
public class IncomingSms扩展广播接收器{
//获取SmsManager的对象
final smsmsmanager sms=smsmsmanager.getDefault();
公共void onReceive(上下文、意图){
//从意图检索扩展数据的映射。
final Bundle=intent.getExtras();
SmsMessage messages=null;
试一试{
if(bundle!=null){
最终对象[]pdusObj=(对象[])bundle.get(“pdus”);
消息=新的SmsMessage[pdus.length];
对于(int i=0;i
但如果我收到来自不同电话号码的消息,它不会崩溃吗?因为,您先收到第一条消息,然后再从其他用户处添加正文。即使同时收到来自不同用户的多条消息,这也非常完美。
public class IncomingSms extends BroadcastReceiver {
    // Get the object of SmsManager
    final SmsManager sms = SmsManager.getDefault();
    public void onReceive(Context context, Intent intent) {
        // Retrieves a map of extended data from the intent.
        final Bundle bundle = intent.getExtras();
        SmsMessage messages = null;
        try {
            if (bundle != null) {
                final Object[] pdusObj = (Object[]) bundle.get("pdus");
                messages = new SmsMessage[pdus.length];
                for (int i = 0; i < pdusObj.length; i++) {
                    messages[i] = SmsMessage.createFromPdu((byte[]) pdusObj[i]);

                   } // end for loop
            } // bundle is null
        } catch (Exception e) {
            Log.e("SmsReceiver", "Exception smsReceiver" +e);
        }
        SmsMessage sms = messages[0];
        String message;
        try {
            if (messages.length == 1 || sms.isReplace()) {

                String phoneNumber = sms.getDisplayOriginatingAddress();
                    String senderNum = phoneNumber;
                     message = sms.getMessageBody();
                    Log.info("SmsReceiver", "senderNum: " + senderNum + "; message: " + message+"; Date="+sms.getTimestampMillis());
//sending to API
            } else {
            StringBuilder bodyText = new StringBuilder();
            for (int j = 0; j < messages.length; j++) {
                bodyText.append(messages[j].getMessageBody());
            }
            message = bodyText.toString();
        }
        } catch (Exception e) {

        }

    }
}