diff options
author | kaiyiz <kaiyiz@codeaurora.org> | 2014-09-04 14:42:26 +0800 |
---|---|---|
committer | Matt Garnes <matt@cyngn.com> | 2014-11-13 17:15:21 -0800 |
commit | 10cfa7c0db3c672d355e66e7b96ae339a34b0351 (patch) | |
tree | 5bc38411025a8eb5ae7057dccc6a381f3efc57bf /src | |
parent | 0f005ceec33b87b4a14933ce7a97998eb16b4018 (diff) | |
download | packages_apps_InCallUI-10cfa7c0db3c672d355e66e7b96ae339a34b0351.tar.gz packages_apps_InCallUI-10cfa7c0db3c672d355e66e7b96ae339a34b0351.tar.bz2 packages_apps_InCallUI-10cfa7c0db3c672d355e66e7b96ae339a34b0351.zip |
InCallUI: Customize features for regional package
1. Check the international prefix before showing the incoming call
number, convert it if needed.
Change-Id: Ifdf107c413f666efd75640e6ffa8708c2e382a31
(cherry picked from commit 6bcdad35a2956ba48e360a2c3617ccedb0e65212)
(cherry picked from commit 1a0ee0aeb4131d7fa6f2e13c516f065ee6a07623)
(cherry picked from commit 28d2a5f4c33f18fbbac91eb9892d7c0e8943a906)
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/incallui/CallCardPresenter.java | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/src/com/android/incallui/CallCardPresenter.java b/src/com/android/incallui/CallCardPresenter.java index 30a4d4ae..1999ff20 100644 --- a/src/com/android/incallui/CallCardPresenter.java +++ b/src/com/android/incallui/CallCardPresenter.java @@ -33,6 +33,7 @@ import android.telecom.StatusHints; import android.telecom.TelecomManager; import android.telecom.VideoProfile; import android.telephony.PhoneNumberUtils; +import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.text.format.DateUtils; @@ -62,6 +63,11 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> private static final String TAG = CallCardPresenter.class.getSimpleName(); private static final long CALL_TIME_UPDATE_INTERVAL_MS = 1000; + private static final String IDP_IDN = "+62"; + private static final String IDP_PLUS = "+"; + private static final String IDP_ZERO = "0"; + private static final String IDP_PREFIX = "01033"; + private Call mPrimary; private Call mSecondary; private ContactCacheEntry mPrimaryContactInfo; @@ -475,7 +481,9 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> final String name = getNameForCall(entry); final String number = getNumberForCall(entry); final boolean nameIsNumber = name != null && name.equals(entry.number); - ui.setPrimary(number, name, nameIsNumber, entry.label, + boolean isIncoming = mPrimary.getState() == Call.State.INCOMING; + final String checkIdpName = checkIdp(name, nameIsNumber, isIncoming); + ui.setPrimary(number, checkIdpName, nameIsNumber, entry.label, entry.photo, isConference, canManageConference, entry.isSipCall); } else { ui.setPrimary(null, null, false, null, null, isConference, canManageConference, false); @@ -483,6 +491,37 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> } + private final String checkIdp(String number, boolean nameIsNumber, boolean isIncoming) { + if (mContext.getResources().getBoolean(R.bool.def_incallui_checkidp_enabled) + && isCDMAPhone(getActiveSubscription()) && isIncoming && nameIsNumber) { + if (number.indexOf(IDP_PREFIX) == 0) { + return IDP_PLUS + number.substring(IDP_PREFIX.length()); + } else if ((number.indexOf(IDP_IDN) == 0) && (!isRoaming(getActiveSubscription()))) { + return IDP_ZERO + number.substring(IDP_IDN.length()); + } + } + return number; + } + + private boolean isCDMAPhone(long subscription) { + boolean isCDMA = false; + int phoneType = TelephonyManager.getDefault().isMultiSimEnabled() + ? TelephonyManager.getDefault().getCurrentPhoneType(subscription) + : TelephonyManager.getDefault().getPhoneType(); + if (TelephonyManager.PHONE_TYPE_CDMA == phoneType) { + isCDMA = true; + } + return isCDMA; + } + + private boolean isRoaming(long subscription) { + if (TelephonyManager.getDefault().isMultiSimEnabled()) { + return TelephonyManager.getDefault().isNetworkRoaming(subscription); + } else { + return TelephonyManager.getDefault().isNetworkRoaming(); + } + } + private void updateSecondaryDisplayInfo(boolean isConference) { final CallCardUi ui = getUi(); if (ui == null) { @@ -698,4 +737,8 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> } return mTelecomManager; } + + public long getActiveSubscription() { + return SubscriptionManager.getDefaultSubId(); + } } |