diff options
author | Nancy Chen <nancychen@google.com> | 2014-12-05 01:53:35 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-12-05 01:53:36 +0000 |
commit | 32cc8c02aec4859c678c931d719e86b2566ba774 (patch) | |
tree | 0c94df0e245b40ee20e7bebead7de8d418a6572d /src | |
parent | 40e3c80da4f56adf6c8ab751337c469b31c6ec9f (diff) | |
parent | 39c18f27ed2929fae220a9b4a101d8dc7c83e217 (diff) |
Merge "Bypass Dialpad code and allow InCallUI check voicemail number for MSIM." into lmp-mr1-dev
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/dialer/SpecialCharSequenceMgr.java | 38 | ||||
-rw-r--r-- | src/com/android/dialer/dialpad/DialpadFragment.java | 14 |
2 files changed, 25 insertions, 27 deletions
diff --git a/src/com/android/dialer/SpecialCharSequenceMgr.java b/src/com/android/dialer/SpecialCharSequenceMgr.java index 2e3501925..f466c417c 100644 --- a/src/com/android/dialer/SpecialCharSequenceMgr.java +++ b/src/com/android/dialer/SpecialCharSequenceMgr.java @@ -205,16 +205,16 @@ public class SpecialCharSequenceMgr { final TelecomManager telecomManager = (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE); - List<PhoneAccountHandle> phoneAccountHandles = + List<PhoneAccountHandle> subscriptionAccountHandles = PhoneAccountUtils.getSubscriptionPhoneAccounts(context); - boolean hasUserSelectedDefault = hasDefaultSubscriptionAccount( - telecomManager.getUserSelectedOutgoingPhoneAccount(), phoneAccountHandles); + boolean hasUserSelectedDefault = subscriptionAccountHandles.contains( + telecomManager.getUserSelectedOutgoingPhoneAccount()); - if (phoneAccountHandles.size() == 1 || hasUserSelectedDefault) { + if (subscriptionAccountHandles.size() == 1 || hasUserSelectedDefault) { Uri uri = telecomManager.getAdnUriForPhoneAccount(null); handleAdnQuery(handler, sc, uri); - } else if (phoneAccountHandles.size() > 1){ + } else if (subscriptionAccountHandles.size() > 1){ SelectPhoneAccountListener listener = new SelectPhoneAccountListener() { @Override public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle, @@ -229,7 +229,7 @@ public class SpecialCharSequenceMgr { }; SelectPhoneAccountDialogFragment.showAccountDialog( - ((Activity) context).getFragmentManager(), phoneAccountHandles, + ((Activity) context).getFragmentManager(), subscriptionAccountHandles, listener); } else { return false; @@ -268,16 +268,16 @@ public class SpecialCharSequenceMgr { if ((input.startsWith("**04") || input.startsWith("**05")) && input.endsWith("#")) { final TelecomManager telecomManager = (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE); - List<PhoneAccountHandle> phoneAccountHandles = + List<PhoneAccountHandle> subscriptionAccountHandles = PhoneAccountUtils.getSubscriptionPhoneAccounts(context); - boolean hasUserSelectedDefault = hasDefaultSubscriptionAccount( - telecomManager.getUserSelectedOutgoingPhoneAccount(), phoneAccountHandles); + boolean hasUserSelectedDefault = subscriptionAccountHandles.contains( + telecomManager.getUserSelectedOutgoingPhoneAccount()); - if (phoneAccountHandles.size() == 1 || hasUserSelectedDefault) { + if (subscriptionAccountHandles.size() == 1 || hasUserSelectedDefault) { // Don't bring up the dialog for single-SIM or if the default outgoing account is // a subscription account. return telecomManager.handleMmi(input); - } else if (phoneAccountHandles.size() > 1){ + } else if (subscriptionAccountHandles.size() > 1){ SelectPhoneAccountListener listener = new SelectPhoneAccountListener() { @Override public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle, @@ -290,7 +290,7 @@ public class SpecialCharSequenceMgr { }; SelectPhoneAccountDialogFragment.showAccountDialog( - ((Activity) context).getFragmentManager(), phoneAccountHandles, + ((Activity) context).getFragmentManager(), subscriptionAccountHandles, listener); } return true; @@ -298,20 +298,6 @@ public class SpecialCharSequenceMgr { return false; } - /** - * Check if the default outgoing phone account set is a subscription phone account. - */ - static private boolean hasDefaultSubscriptionAccount(PhoneAccountHandle defaultOutgoingAccount, - List<PhoneAccountHandle> phoneAccountHandles) { - for (PhoneAccountHandle accountHandle : phoneAccountHandles) { - if (accountHandle.equals(defaultOutgoingAccount)) { - return true; - } - } - return false; - } - - // TODO: Use TelephonyCapabilities.getDeviceIdLabel() to get the device id label instead of a // hard-coded string. static boolean handleDeviceIdDisplay(Context context, String input) { diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java index 321207682..0f5a3331a 100644 --- a/src/com/android/dialer/dialpad/DialpadFragment.java +++ b/src/com/android/dialer/dialpad/DialpadFragment.java @@ -39,6 +39,7 @@ import android.provider.Contacts.Phones; import android.provider.Contacts.PhonesColumns; import android.provider.Settings; import android.telecom.PhoneAccount; +import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import android.telephony.PhoneNumberUtils; import android.telephony.PhoneStateListener; @@ -77,6 +78,7 @@ import com.android.dialer.DialtactsActivity; import com.android.dialer.NeededForReflection; import com.android.dialer.R; import com.android.dialer.SpecialCharSequenceMgr; +import com.android.dialer.calllog.PhoneAccountUtils; import com.android.dialer.util.DialerUtils; import com.android.phone.common.CallLogAsync; import com.android.phone.common.HapticFeedback; @@ -87,6 +89,7 @@ import com.android.phone.common.dialpad.DialpadView; import com.google.common.annotations.VisibleForTesting; import java.util.HashSet; +import java.util.List; /** * Fragment that displays a twelve-key phone dialpad. @@ -908,7 +911,16 @@ public class DialpadFragment extends Fragment // We'll try to initiate voicemail and thus we want to remove irrelevant string. removePreviousDigitIfPossible(); - if (isVoicemailAvailable()) { + List<PhoneAccountHandle> subscriptionAccountHandles = + PhoneAccountUtils.getSubscriptionPhoneAccounts(getActivity()); + boolean hasUserSelectedDefault = subscriptionAccountHandles.contains( + getTelecomManager().getUserSelectedOutgoingPhoneAccount()); + boolean multiSim = subscriptionAccountHandles.size() > 1; + + if ((multiSim && !hasUserSelectedDefault) || isVoicemailAvailable()) { + // On a multi-SIM phone, if the user has not selected a default + // subscription, initiate a call to voicemail so they can select an account + // from the "Call with" dialog. callVoicemail(); } else if (getActivity() != null) { // Voicemail is unavailable maybe because Airplane mode is turned on. |