summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNancy Chen <nancychen@google.com>2014-12-05 01:53:35 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-12-05 01:53:36 +0000
commit32cc8c02aec4859c678c931d719e86b2566ba774 (patch)
tree0c94df0e245b40ee20e7bebead7de8d418a6572d /src
parent40e3c80da4f56adf6c8ab751337c469b31c6ec9f (diff)
parent39c18f27ed2929fae220a9b4a101d8dc7c83e217 (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.java38
-rw-r--r--src/com/android/dialer/dialpad/DialpadFragment.java14
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.