diff options
| author | Steve Kondik <steve@cyngn.com> | 2015-12-08 03:24:16 -0800 |
|---|---|---|
| committer | Steve Kondik <steve@cyngn.com> | 2015-12-08 03:24:16 -0800 |
| commit | d988928fc7e5b7407c547b02f5579ba7e5e87f0f (patch) | |
| tree | ee84acc9c0f0049bac2c810a3a478cf5e94f6e95 /src | |
| parent | 0c0529301b645cd83aa6d1c2fc7922d8a2f1c64e (diff) | |
| parent | 57911d120a57beb906c00cfddbdae38249b205e7 (diff) | |
| download | android_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.java | 32 |
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; } /** |
