aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSteve Kondik <steve@cyngn.com>2015-12-08 03:24:16 -0800
committerSteve Kondik <steve@cyngn.com>2015-12-08 03:24:16 -0800
commitd988928fc7e5b7407c547b02f5579ba7e5e87f0f (patch)
treeee84acc9c0f0049bac2c810a3a478cf5e94f6e95 /src
parent0c0529301b645cd83aa6d1c2fc7922d8a2f1c64e (diff)
parent57911d120a57beb906c00cfddbdae38249b205e7 (diff)
downloadandroid_frameworks_opt_net_ims-d988928fc7e5b7407c547b02f5579ba7e5e87f0f.tar.gz
android_frameworks_opt_net_ims-d988928fc7e5b7407c547b02f5579ba7e5e87f0f.tar.bz2
android_frameworks_opt_net_ims-d988928fc7e5b7407c547b02f5579ba7e5e87f0f.zip
Merge tag 'android-6.0.1_r3' of https://android.googlesource.com/platform/frameworks/opt/net/ims into HEAD
Android 6.0.1 release 3
Diffstat (limited to 'src')
-rw-r--r--src/java/com/android/ims/ImsManager.java32
1 files changed, 29 insertions, 3 deletions
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
index f74e746..133d911 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -254,7 +254,8 @@ public class ImsManager {
return context.getResources().getBoolean(
com.android.internal.R.bool.config_device_volte_available)
&& getBooleanCarrierConfig(context,
- CarrierConfigManager.KEY_CARRIER_VOLTE_AVAILABLE_BOOL);
+ CarrierConfigManager.KEY_CARRIER_VOLTE_AVAILABLE_BOOL)
+ && isGbaValid(context);
}
/*
@@ -298,7 +299,8 @@ public class ImsManager {
context.getResources().getBoolean(
com.android.internal.R.bool.config_device_vt_available) &&
getBooleanCarrierConfig(context,
- CarrierConfigManager.KEY_CARRIER_VT_AVAILABLE_BOOL);
+ CarrierConfigManager.KEY_CARRIER_VT_AVAILABLE_BOOL) &&
+ isGbaValid(context);
}
/**
@@ -492,7 +494,31 @@ public class ImsManager {
context.getResources().getBoolean(
com.android.internal.R.bool.config_device_wfc_ims_available) &&
getBooleanCarrierConfig(context,
- CarrierConfigManager.KEY_CARRIER_WFC_IMS_AVAILABLE_BOOL);
+ CarrierConfigManager.KEY_CARRIER_WFC_IMS_AVAILABLE_BOOL) &&
+ isGbaValid(context);
+ }
+
+ /**
+ * If carrier requires that IMS is only available if GBA capable SIM is used,
+ * then this function checks GBA bit in EF IST.
+ *
+ * Format of EF IST is defined in 3GPP TS 31.103 (Section 4.2.7).
+ */
+ private static boolean isGbaValid(Context context) {
+ if (getBooleanCarrierConfig(context,
+ CarrierConfigManager.KEY_CARRIER_IMS_GBA_REQUIRED_BOOL)) {
+ final TelephonyManager telephonyManager = TelephonyManager.getDefault();
+ String efIst = telephonyManager.getIsimIst();
+ if (efIst == null) {
+ loge("ISF is NULL");
+ return true;
+ }
+ boolean result = efIst != null && efIst.length() > 1 &&
+ (0x02 & (byte)efIst.charAt(1)) != 0;
+ if (DBG) log("GBA capable=" + result + ", ISF=" + efIst);
+ return result;
+ }
+ return true;
}
/**