MAP Client support incomming MMS

Add support for incomming MMS messages by leveraging the already
existing parser.

Bug: 119750641
Test: atest MapClientStateMachineTest
Change-Id: Iad3806e39fa11b520f7bcc3b33426f0a65779530
(cherry picked from commit f3965e7d943daa79e2868c4c27f0bda3c59ad051)

Merged-In: Iad3806e39fa11b520f7bcc3b33426f0a65779530
Change-Id: I54d1399350a5e3d89f51625dde101a1cc9129c06
diff --git a/src/com/android/bluetooth/mapclient/MceStateMachine.java b/src/com/android/bluetooth/mapclient/MceStateMachine.java
index 867ab18..cdfc986 100644
--- a/src/com/android/bluetooth/mapclient/MceStateMachine.java
+++ b/src/com/android/bluetooth/mapclient/MceStateMachine.java
@@ -58,6 +58,7 @@
 import com.android.bluetooth.BluetoothMetricsProto;
 import com.android.bluetooth.btservice.MetricsLogger;
 import com.android.bluetooth.btservice.ProfileService;
+import com.android.bluetooth.map.BluetoothMapbMessageMime;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.IState;
 import com.android.internal.util.State;
@@ -345,7 +346,9 @@
     void setDefaultMessageType(SdpMasRecord sdpMasRecord) {
         int supportedMessageTypes = sdpMasRecord.getSupportedMessageTypes();
         synchronized (mDefaultMessageType) {
-            if ((supportedMessageTypes & SdpMasRecord.MessageType.SMS_CDMA) > 0) {
+            if ((supportedMessageTypes & SdpMasRecord.MessageType.MMS) > 0) {
+                mDefaultMessageType = Bmessage.Type.MMS;
+            } else if ((supportedMessageTypes & SdpMasRecord.MessageType.SMS_CDMA) > 0) {
                 mDefaultMessageType = Bmessage.Type.SMS_CDMA;
             } else if ((supportedMessageTypes & SdpMasRecord.MessageType.SMS_GSM) > 0) {
                 mDefaultMessageType = Bmessage.Type.SMS_GSM;
@@ -666,6 +669,7 @@
             switch (message.getType()) {
                 case SMS_CDMA:
                 case SMS_GSM:
+                case MMS:
                     if (DBG) {
                         Log.d(TAG, "Body: " + message.getBodyContent());
                     }
@@ -706,6 +710,12 @@
                         intent.putExtra(BluetoothMapClient.EXTRA_SENDER_CONTACT_NAME,
                                 originator.getDisplayName());
                     }
+                    if (message.getType() == Bmessage.Type.MMS) {
+                        BluetoothMapbMessageMime mmsBmessage = new BluetoothMapbMessageMime();
+                        mmsBmessage.parseMsgPart(message.getBodyContent());
+                        intent.putExtra(android.content.Intent.EXTRA_TEXT,
+                                mmsBmessage.getMessageAsText());
+                    }
                     // Only send to the current default SMS app if one exists
                     String defaultMessagingPackage = Telephony.Sms.getDefaultSmsPackage(mService);
                     if (defaultMessagingPackage != null) {
@@ -713,8 +723,6 @@
                     }
                     mService.sendBroadcast(intent, android.Manifest.permission.RECEIVE_SMS);
                     break;
-
-                case MMS:
                 case EMAIL:
                 default:
                     Log.e(TAG, "Received unhandled type" + message.getType().toString());