Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 642a4acd authored by Andrew Cheng's avatar Andrew Cheng
Browse files

Enable sending group MMS

Add the case of Group MMS. Single MMS messages are unaffected and will be handled as before.

Bug: 149256848
Test: Manually verify receipt of group MMS on recipient devices.
Merged-In: I0f4caf0c86c4740b4b0d8929e7684eb00dd0f454
Change-Id: I0f4caf0c86c4740b4b0d8929e7684eb00dd0f454
parent d9150f34
Loading
Loading
Loading
Loading
+20 −6
Original line number Original line Diff line number Diff line
@@ -2683,7 +2683,21 @@ public class BluetoothMapContentObserver {
                }
                }
                getMsgListMsg().put(handle, newMsg);
                getMsgListMsg().put(handle, newMsg);
            }
            }
        } else { // type SMS_* of MMS
        } else if (msg.getType().equals(TYPE.MMS) && (recipientList.size() > 1)) {
            // Group MMS
            String folder = folderElement.getName();
            ArrayList<String> telNums = new ArrayList<String>();
            for (BluetoothMapbMessage.VCard recipient : recipientList) {
                // Only send the message to the top level recipient
                if (recipient.getEnvLevel() == 0) {
                    // Only send to recipient's first phone number
                    telNums.add(recipient.getFirstPhoneNumber());
                }
            }
            // Send message if folder is outbox else just store in draft
            handle = sendMmsMessage(folder, telNums.toArray(new String[telNums.size()]),
                    (BluetoothMapbMessageMime) msg, transparent, retry);
        } else { // type SMS_* (single or mass text) or single MMS
            for (BluetoothMapbMessage.VCard recipient : recipientList) {
            for (BluetoothMapbMessage.VCard recipient : recipientList) {
                // Only send the message to the top level recipient
                // Only send the message to the top level recipient
                if (recipient.getEnvLevel() == 0) {
                if (recipient.getEnvLevel() == 0) {
@@ -2720,8 +2734,8 @@ public class BluetoothMapContentObserver {


                    if (msg.getType().equals(TYPE.MMS)) {
                    if (msg.getType().equals(TYPE.MMS)) {
                        /* Send message if folder is outbox else just store in draft*/
                        /* Send message if folder is outbox else just store in draft*/
                        handle = sendMmsMessage(folder, phone, (BluetoothMapbMessageMime) msg,
                        handle = sendMmsMessage(folder, new String[] {phone},
                                transparent, retry);
                                (BluetoothMapbMessageMime) msg, transparent, retry);
                    } else if (msg.getType().equals(TYPE.SMS_GSM) || msg.getType()
                    } else if (msg.getType().equals(TYPE.SMS_GSM) || msg.getType()
                            .equals(TYPE.SMS_CDMA)) {
                            .equals(TYPE.SMS_CDMA)) {
                        /* Add the message to the database */
                        /* Add the message to the database */
@@ -2811,7 +2825,7 @@ public class BluetoothMapContentObserver {
        return handle;
        return handle;
    }
    }


    public long sendMmsMessage(String folder, String toAddress, BluetoothMapbMessageMime msg,
    public long sendMmsMessage(String folder, String[] toAddress, BluetoothMapbMessageMime msg,
            int transparent, int retry) {
            int transparent, int retry) {
        /*
        /*
         *strategy:
         *strategy:
@@ -2896,7 +2910,7 @@ public class BluetoothMapContentObserver {
        }
        }
    }
    }


    private long pushMmsToFolder(int folder, String toAddress, BluetoothMapbMessageMime msg) {
    private long pushMmsToFolder(int folder, String[] toAddress, BluetoothMapbMessageMime msg) {
        /**
        /**
         * strategy:
         * strategy:
         * 1) parse msg into parts + header
         * 1) parse msg into parts + header
@@ -3096,7 +3110,7 @@ public class BluetoothMapContentObserver {


        values.clear();
        values.clear();
        values.put(Mms.Addr.CONTACT_ID, "null");
        values.put(Mms.Addr.CONTACT_ID, "null");
        values.put(Mms.Addr.ADDRESS, toAddress);
        values.put(Mms.Addr.ADDRESS, String.join(",", toAddress));
        values.put(Mms.Addr.TYPE, BluetoothMapContent.MMS_TO);
        values.put(Mms.Addr.TYPE, BluetoothMapContent.MMS_TO);
        values.put(Mms.Addr.CHARSET, 106);
        values.put(Mms.Addr.CHARSET, 106);