summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorkaiyiz <kaiyiz@codeaurora.org>2014-09-04 14:42:26 +0800
committerMatt Garnes <matt@cyngn.com>2014-11-13 17:15:21 -0800
commit10cfa7c0db3c672d355e66e7b96ae339a34b0351 (patch)
tree5bc38411025a8eb5ae7057dccc6a381f3efc57bf /src
parent0f005ceec33b87b4a14933ce7a97998eb16b4018 (diff)
downloadpackages_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.java45
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();
+ }
}