Send array of URIs for group MMS conversations

Bug: 145691706
Test: Tested with changes in Car/Messenger (b/145803615) to use this
      API, verified it worked by sending group MMS messages to a
      BT connected Android phone.
Change-Id: I839ae9590d39322e77f7a7a4b9976a8cc3367bf1
diff --git a/src/com/android/bluetooth/mapclient/MceStateMachine.java b/src/com/android/bluetooth/mapclient/MceStateMachine.java
index 85ba60e..1095135 100644
--- a/src/com/android/bluetooth/mapclient/MceStateMachine.java
+++ b/src/com/android/bluetooth/mapclient/MceStateMachine.java
@@ -70,7 +70,9 @@
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
 /* The MceStateMachine is responsible for setting up and maintaining a connection to a single
@@ -720,6 +722,11 @@
                         mmsBmessage.parseMsgPart(message.getBodyContent());
                         intent.putExtra(android.content.Intent.EXTRA_TEXT,
                                 mmsBmessage.getMessageAsText());
+                        ArrayList<VCardEntry> recipients = message.getRecipients();
+                        if (recipients != null && !recipients.isEmpty()) {
+                            intent.putExtra(android.content.Intent.EXTRA_CC,
+                                    getRecipientsUri(recipients));
+                        }
                     }
                     // Only send to the current default SMS app if one exists
                     String defaultMessagingPackage = Telephony.Sms.getDefaultSmsPackage(mService);
@@ -735,6 +742,29 @@
             }
         }
 
+        /**
+         * Retrieves the URIs of all the participants of a group conversation, besides the sender
+         * of the message.
+         * @param recipients
+         * @return
+         */
+        private String[] getRecipientsUri(ArrayList<VCardEntry> recipients) {
+            Set<String> uris = new HashSet<>();
+
+            for (VCardEntry recipient : recipients) {
+                List<VCardEntry.PhoneData> phoneData = recipient.getPhoneList();
+                if (phoneData != null && phoneData.size() > 0) {
+                    String phoneNumber = phoneData.get(0).getNumber();
+                    if (DBG) {
+                        Log.d(TAG, "CC Recipient number: " + phoneNumber);
+                    }
+                    uris.add(getContactURIFromPhone(phoneNumber));
+                }
+            }
+            String[] stringUris = new String[uris.size()];
+            return uris.toArray(stringUris);
+        }
+
         private void notifySentMessageStatus(String handle, EventReport.Type status) {
             if (DBG) {
                 Log.d(TAG, "got a status for " + handle + " Status = " + status);