summaryrefslogtreecommitdiff
path: root/java/com
diff options
context:
space:
mode:
authortwyen <twyen@google.com>2018-06-11 14:32:23 -0700
committerCopybara-Service <copybara-piper@google.com>2018-06-11 16:40:05 -0700
commit5dcad7edd3ca8a052f888a7bb7cb73c4d1524d05 (patch)
tree97c4a98be8c0c203f58ca475321d7983333d188d /java/com
parent564c41f33b05262610ef171008a15957fb99878d (diff)
Handle alternative form VVM SMS as legacy notification if the account is not activated yet.
On VVM3 if subscription failed, the alternative form SMS will still be sent by the carrier. In this state dialer should fallback to legacy voicemail notification. TEST=manual - disable auto subscription in code, check legacy voicemail notification functionality. Bug: 109896901 Test: manual - disable auto subscription in code, check legacy voicemail notification functionality. PiperOrigin-RevId: 200113818 Change-Id: I55b70e7a8b2cd3d8b40864fa03b2ba209037f4e8
Diffstat (limited to 'java/com')
-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");