From e4d27317b48f06f199c392f85f99ab8d98e90c47 Mon Sep 17 00:00:00 2001 From: Roman Birg Date: Fri, 13 May 2016 13:58:50 -0700 Subject: Messaging: properly handle "always ask" SMS sending option Before the app would require the system to have an SMS subscription actively selected, but the app also allows the user to override that sub and send an SMS with another SIM. If the user overrides it, we should respect their choice and allow the SMS to send if no system one is ever selected. Ticket: CYNGNOS-2185, CYNGNOS-2570 Change-Id: I04c1e8bd5c0c41c90af870c4336c0c7f5ba83d4c Signed-off-by: Roman Birg --- .../android/messaging/datamodel/data/ConversationData.java | 10 ++-------- .../messaging/ui/conversation/ComposeMessageView.java | 6 +++--- src/com/android/messaging/util/PhoneUtils.java | 14 +++++++++++++- 3 files changed, 18 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/com/android/messaging/datamodel/data/ConversationData.java b/src/com/android/messaging/datamodel/data/ConversationData.java index 71bd167..06a8260 100644 --- a/src/com/android/messaging/datamodel/data/ConversationData.java +++ b/src/com/android/messaging/datamodel/data/ConversationData.java @@ -69,8 +69,6 @@ public class ConversationData extends BindableData { private static final long LAST_MESSAGE_TIMESTAMP_NaN = -1; private static final int MESSAGE_COUNT_NaN = -1; - private static int mOverrideSubId = -1; - /** * Takes a conversation id and a list of message ids and computes the positions * for each message. @@ -592,10 +590,6 @@ public class ConversationData extends BindableData { return mParticipantData.isLoaded(); } - public void setOverrideSendingSubId(int subId) { - mOverrideSubId = subId; - } - public void sendMessage(final BindingBase binding, final MessageData message) { Assert.isTrue(TextUtils.equals(mConversationId, message.getConversationId())); @@ -605,8 +599,8 @@ public class ConversationData extends BindableData { InsertNewMessageAction.insertNewMessage(message); } else { final int systemDefaultSubId = PhoneUtils.getDefault().getDefaultSmsSubscriptionId(); - if (mOverrideSubId != ParticipantData.DEFAULT_SELF_SUB_ID) { - InsertNewMessageAction.insertNewMessage(message, mOverrideSubId); + if (PhoneUtils.getOverrideSendingSubId() != ParticipantData.DEFAULT_SELF_SUB_ID) { + InsertNewMessageAction.insertNewMessage(message, PhoneUtils.getOverrideSendingSubId()); } else if (systemDefaultSubId != ParticipantData.DEFAULT_SELF_SUB_ID && mSelfParticipantsData.isDefaultSelf(message.getSelfId())) { // Lock the sub selection to the system default SIM as soon as the user clicks on diff --git a/src/com/android/messaging/ui/conversation/ComposeMessageView.java b/src/com/android/messaging/ui/conversation/ComposeMessageView.java index 9bf3635..9bcd00e 100644 --- a/src/com/android/messaging/ui/conversation/ComposeMessageView.java +++ b/src/com/android/messaging/ui/conversation/ComposeMessageView.java @@ -78,6 +78,7 @@ import com.android.messaging.util.ContentType; import com.android.messaging.util.LogUtil; import com.android.messaging.util.MediaUtil; import com.android.messaging.util.OsUtil; +import com.android.messaging.util.PhoneUtils; import com.android.messaging.util.UiUtils; import com.android.messaging.util.UnicodeFilter; @@ -339,8 +340,7 @@ public class ComposeMessageView extends LinearLayout @Override public void onClick(final View clickView) { - mConversationDataModel.getData().setOverrideSendingSubId( - ParticipantData.DEFAULT_SELF_SUB_ID); + PhoneUtils.setOverrideSendingSubId(ParticipantData.DEFAULT_SELF_SUB_ID); if (isSMSPromptEnabled()) { showSimSelector((Activity)mOriginalContext, new OnSimSelectedCallback() { @Override @@ -713,7 +713,7 @@ public class ComposeMessageView extends LinearLayout } private void sendMessageWithSubId(int subId) { - mConversationDataModel.getData().setOverrideSendingSubId(subId); + PhoneUtils.setOverrideSendingSubId(subId); sendMessageInternal(true /* checkMessageSize */); } diff --git a/src/com/android/messaging/util/PhoneUtils.java b/src/com/android/messaging/util/PhoneUtils.java index cd89551..1eb410c 100644 --- a/src/com/android/messaging/util/PhoneUtils.java +++ b/src/com/android/messaging/util/PhoneUtils.java @@ -75,6 +75,16 @@ public abstract class PhoneUtils { private static final ArrayMap> sCanonicalPhoneNumberCache = new ArrayMap<>(); + public static int sOverrideSendingSubId = -1; + + public static int getOverrideSendingSubId() { + return sOverrideSendingSubId; + } + + public static void setOverrideSendingSubId(int subId) { + sOverrideSendingSubId = subId; + } + protected final Context mContext; protected final TelephonyManager mTelephonyManager; protected final int mSubId; @@ -561,7 +571,9 @@ public abstract class PhoneUtils { @Override public boolean getHasPreferredSmsSim() { - return getDefaultSmsSubscriptionId() != ParticipantData.DEFAULT_SELF_SUB_ID; + return getDefaultSmsSubscriptionId() != ParticipantData.DEFAULT_SELF_SUB_ID + || (sOverrideSendingSubId != ParticipantData.DEFAULT_SELF_SUB_ID + && SmsManager.getDefault().isSMSPromptEnabled()); } @Override -- cgit v1.2.3