summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/com/android/voicemail/impl/OmtpConstants.java5
-rw-r--r--java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java12
-rw-r--r--java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java7
3 files changed, 23 insertions, 1 deletions
diff --git a/java/com/android/voicemail/impl/OmtpConstants.java b/java/com/android/voicemail/impl/OmtpConstants.java
index d94e36138..c04f5e23d 100644
--- a/java/com/android/voicemail/impl/OmtpConstants.java
+++ b/java/com/android/voicemail/impl/OmtpConstants.java
@@ -244,4 +244,9 @@ public class OmtpConstants {
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 3608c3602..29d376b35 100644
--- a/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
+++ b/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
@@ -62,11 +62,21 @@ public class LegacyModeSmsHandler {
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 eae990ab0..0f22c3d62 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.settings.VisualVoicemailSettingsUtil;
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 @@ public class OmtpMessageReceiver extends BroadcastReceiver {
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");