From bd03b17a627e0f7fc8df2513f85922a944a4725e Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Wed, 1 Apr 2020 12:01:45 +0800 Subject: [PATCH] [Settings] Avoid from crash when pull out SIM Avoid from crash through exception handling. Bug: 148803073 Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=WifiCallingSettingsForSubTest Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=WifiCallingPreferenceControllerTest Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=WifiCallingSettingsTest Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=WifiCallingSliceHelperTest Change-Id: I10aff50b6f3fc50b2f336ee320740f9f4a81e256 --- .../ims/ImsQueryEnhanced4gLteModeUserSetting.java | 13 ++++++++++--- .../network/ims/ImsQueryProvisioningStat.java | 14 +++++++++++--- .../network/ims/ImsQueryTtyOnVolteStat.java | 13 +++++++++++-- .../network/ims/ImsQueryVtUserSetting.java | 13 +++++++++++-- .../network/ims/ImsQueryWfcUserSetting.java | 13 +++++++++++-- 5 files changed, 54 insertions(+), 12 deletions(-) diff --git a/src/com/android/settings/network/ims/ImsQueryEnhanced4gLteModeUserSetting.java b/src/com/android/settings/network/ims/ImsQueryEnhanced4gLteModeUserSetting.java index c00f1df90f7..34d8430f57a 100644 --- a/src/com/android/settings/network/ims/ImsQueryEnhanced4gLteModeUserSetting.java +++ b/src/com/android/settings/network/ims/ImsQueryEnhanced4gLteModeUserSetting.java @@ -17,6 +17,7 @@ package com.android.settings.network.ims; import android.telephony.ims.ImsMmTelManager; +import android.util.Log; /** @@ -24,6 +25,7 @@ import android.telephony.ims.ImsMmTelManager; */ public class ImsQueryEnhanced4gLteModeUserSetting implements ImsQuery { + private static final String LOG_TAG = "QueryEnhanced4gLteModeUserSetting"; /** * Constructor * @param subId subscription id @@ -40,8 +42,13 @@ public class ImsQueryEnhanced4gLteModeUserSetting implements ImsQuery { * @return result of query */ public boolean query() { - final ImsMmTelManager imsMmTelManager = - ImsMmTelManager.createForSubscriptionId(mSubId); - return imsMmTelManager.isAdvancedCallingSettingEnabled(); + try { + final ImsMmTelManager imsMmTelManager = + ImsMmTelManager.createForSubscriptionId(mSubId); + return imsMmTelManager.isAdvancedCallingSettingEnabled(); + } catch (IllegalArgumentException exception) { + Log.w(LOG_TAG, "fail to get VoLte settings. subId=" + mSubId, exception); + } + return false; } } diff --git a/src/com/android/settings/network/ims/ImsQueryProvisioningStat.java b/src/com/android/settings/network/ims/ImsQueryProvisioningStat.java index 5c050b520ac..b52d22c71bf 100644 --- a/src/com/android/settings/network/ims/ImsQueryProvisioningStat.java +++ b/src/com/android/settings/network/ims/ImsQueryProvisioningStat.java @@ -19,6 +19,7 @@ package com.android.settings.network.ims; import android.telephony.ims.ProvisioningManager; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; +import android.util.Log; /** @@ -26,6 +27,8 @@ import android.telephony.ims.stub.ImsRegistrationImplBase; */ public class ImsQueryProvisioningStat implements ImsQuery { + private static final String LOG_TAG = "QueryPrivisioningStat"; + private volatile int mSubId; private volatile int mCapability; private volatile int mTech; @@ -50,8 +53,13 @@ public class ImsQueryProvisioningStat implements ImsQuery { * @return result of query */ public boolean query() { - final ProvisioningManager privisionManager = - ProvisioningManager.createForSubscriptionId(mSubId); - return privisionManager.getProvisioningStatusForCapability(mCapability, mTech); + try { + final ProvisioningManager privisionManager = + ProvisioningManager.createForSubscriptionId(mSubId); + return privisionManager.getProvisioningStatusForCapability(mCapability, mTech); + } catch (IllegalArgumentException exception) { + Log.w(LOG_TAG, "fail to get Provisioning stat. subId=" + mSubId, exception); + } + return false; } } diff --git a/src/com/android/settings/network/ims/ImsQueryTtyOnVolteStat.java b/src/com/android/settings/network/ims/ImsQueryTtyOnVolteStat.java index c2d655f5120..e2719dd27aa 100644 --- a/src/com/android/settings/network/ims/ImsQueryTtyOnVolteStat.java +++ b/src/com/android/settings/network/ims/ImsQueryTtyOnVolteStat.java @@ -17,6 +17,7 @@ package com.android.settings.network.ims; import android.telephony.ims.ImsMmTelManager; +import android.util.Log; /** @@ -24,6 +25,8 @@ import android.telephony.ims.ImsMmTelManager; */ public class ImsQueryTtyOnVolteStat implements ImsQuery { + private static final String LOG_TAG = "QueryTtyOnVolteStat"; + /** * Constructor * @param subId subscription id @@ -40,7 +43,13 @@ public class ImsQueryTtyOnVolteStat implements ImsQuery { * @return result of query */ public boolean query() { - final ImsMmTelManager imsMmTelManager = ImsMmTelManager.createForSubscriptionId(mSubId); - return imsMmTelManager.isTtyOverVolteEnabled(); + try { + final ImsMmTelManager imsMmTelManager = + ImsMmTelManager.createForSubscriptionId(mSubId); + return imsMmTelManager.isTtyOverVolteEnabled(); + } catch (IllegalArgumentException exception) { + Log.w(LOG_TAG, "fail to get VoLte Tty Stat. subId=" + mSubId, exception); + } + return false; } } diff --git a/src/com/android/settings/network/ims/ImsQueryVtUserSetting.java b/src/com/android/settings/network/ims/ImsQueryVtUserSetting.java index 6d699e36c7b..6da4a4c07c6 100644 --- a/src/com/android/settings/network/ims/ImsQueryVtUserSetting.java +++ b/src/com/android/settings/network/ims/ImsQueryVtUserSetting.java @@ -17,6 +17,7 @@ package com.android.settings.network.ims; import android.telephony.ims.ImsMmTelManager; +import android.util.Log; /** @@ -24,6 +25,8 @@ import android.telephony.ims.ImsMmTelManager; */ public class ImsQueryVtUserSetting implements ImsQuery { + private static final String LOG_TAG = "QueryVtUserSetting"; + /** * Constructor * @param subId subscription id @@ -40,7 +43,13 @@ public class ImsQueryVtUserSetting implements ImsQuery { * @return result of query */ public boolean query() { - final ImsMmTelManager imsMmTelManager = ImsMmTelManager.createForSubscriptionId(mSubId); - return imsMmTelManager.isVtSettingEnabled(); + try { + final ImsMmTelManager imsMmTelManager = + ImsMmTelManager.createForSubscriptionId(mSubId); + return imsMmTelManager.isVtSettingEnabled(); + } catch (IllegalArgumentException exception) { + Log.w(LOG_TAG, "fail to get VT settings. subId=" + mSubId, exception); + } + return false; } } diff --git a/src/com/android/settings/network/ims/ImsQueryWfcUserSetting.java b/src/com/android/settings/network/ims/ImsQueryWfcUserSetting.java index 22d2c676b79..3407413d3e8 100644 --- a/src/com/android/settings/network/ims/ImsQueryWfcUserSetting.java +++ b/src/com/android/settings/network/ims/ImsQueryWfcUserSetting.java @@ -17,6 +17,7 @@ package com.android.settings.network.ims; import android.telephony.ims.ImsMmTelManager; +import android.util.Log; /** @@ -24,6 +25,8 @@ import android.telephony.ims.ImsMmTelManager; */ public class ImsQueryWfcUserSetting implements ImsQuery { + private static final String LOG_TAG = "QueryWfcUserSetting"; + /** * Constructor * @param subId subscription id @@ -40,7 +43,13 @@ public class ImsQueryWfcUserSetting implements ImsQuery { * @return result of query */ public boolean query() { - final ImsMmTelManager imsMmTelManager = ImsMmTelManager.createForSubscriptionId(mSubId); - return imsMmTelManager.isVoWiFiSettingEnabled(); + try { + final ImsMmTelManager imsMmTelManager = + ImsMmTelManager.createForSubscriptionId(mSubId); + return imsMmTelManager.isVoWiFiSettingEnabled(); + } catch (IllegalArgumentException exception) { + Log.w(LOG_TAG, "fail to get Wfc settings. subId=" + mSubId, exception); + } + return false; } }