Merge "Handle alternative form VVM SMS as legacy notification if the account is not activated yet."
diff --git a/java/com/android/voicemail/impl/OmtpConstants.java b/java/com/android/voicemail/impl/OmtpConstants.java
index d94e361..c04f5e2 100644
--- a/java/com/android/voicemail/impl/OmtpConstants.java
+++ b/java/com/android/voicemail/impl/OmtpConstants.java
@@ -244,4 +244,9 @@
   private static final String truncate(String string, int length) {
     return string.substring(0, Math.min(length, string.length()));
   }
+
+  // Alternative form of sync message: MBOXUPDATE?m=<new_message_count>;<key>=<value>;
+
+  public static final String ALTERNATIVE_MAILBOX_UPDATE = "MBOXUPDATE";
+  public static final String ALTERNATIVE_NUM_MESSAGE_COUNT = "m";
 }
diff --git a/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java b/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
index 3608c36..29d376b 100644
--- a/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
+++ b/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
@@ -62,11 +62,21 @@
         case OmtpConstants.NEW_MESSAGE:
         case OmtpConstants.MAILBOX_UPDATE:
           sendLegacyVoicemailNotification(context, handle, message.getNewMessageCount());
-
           break;
         default:
           break;
       }
+    } else if (OmtpConstants.ALTERNATIVE_MAILBOX_UPDATE.equals(eventType)) {
+      VvmLog.w(TAG, "receiving alternative VVM SMS on non-activated account");
+      int messageCount = 0;
+      try {
+        messageCount =
+            Integer.parseInt(
+                sms.getFields().getString(OmtpConstants.ALTERNATIVE_NUM_MESSAGE_COUNT));
+      } catch (NumberFormatException e) {
+        VvmLog.e(TAG, "missing message count");
+      }
+      sendLegacyVoicemailNotification(context, handle, messageCount);
     }
   }
 
diff --git a/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java b/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java
index eae990a..0f22c3d 100644
--- a/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java
+++ b/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java
@@ -38,6 +38,7 @@
 import com.android.voicemail.impl.sync.SyncOneTask;
 import com.android.voicemail.impl.sync.SyncTask;
 import com.android.voicemail.impl.sync.VoicemailsQueryHelper;
+import com.android.voicemail.impl.sync.VvmAccountManager;
 import com.android.voicemail.impl.utils.VoicemailDatabaseUtil;
 
 /** Receive SMS messages and send for processing by the OMTP visual voicemail source. */
@@ -69,6 +70,12 @@
       return;
     }
 
+    if (!VvmAccountManager.isAccountActivated(context, phone)) {
+      VvmLog.i(TAG, "Received message on non-activated account");
+      LegacyModeSmsHandler.handle(context, sms);
+      return;
+    }
+
     OmtpVvmCarrierConfigHelper helper = new OmtpVvmCarrierConfigHelper(this.context, phone);
     if (!helper.isValid()) {
       VvmLog.e(TAG, "vvm config no longer valid");