diff options
author | Bonian Chen <bonianchen@google.com> | 2020-05-28 14:59:47 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-05-28 14:59:47 +0000 |
commit | e2da25108a8cd0bd1549e850d8a71e9b18b08b0e (patch) | |
tree | 9b2109070bf8a53ccb1754e89a9d785d8ac94b7b /src | |
parent | 259e6288c9f91f8144c12127bda672ee1f0b7258 (diff) | |
parent | ce0f3c66a080e43867bf11ec50275e2bec171b6c (diff) | |
download | packages_apps_Settings-e2da25108a8cd0bd1549e850d8a71e9b18b08b0e.tar.gz packages_apps_Settings-e2da25108a8cd0bd1549e850d8a71e9b18b08b0e.tar.bz2 packages_apps_Settings-e2da25108a8cd0bd1549e850d8a71e9b18b08b0e.zip |
Merge "[Settings] Avoid crash for VoIP account displayed as default voice" into rvc-dev
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/settings/network/telephony/DefaultSubscriptionController.java | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/src/com/android/settings/network/telephony/DefaultSubscriptionController.java b/src/com/android/settings/network/telephony/DefaultSubscriptionController.java index 779802a22a..1d82f659b8 100644 --- a/src/com/android/settings/network/telephony/DefaultSubscriptionController.java +++ b/src/com/android/settings/network/telephony/DefaultSubscriptionController.java @@ -34,6 +34,7 @@ import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; +import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.SubscriptionsChangeListener; @@ -64,7 +65,6 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere public DefaultSubscriptionController(Context context, String preferenceKey) { super(context, preferenceKey); mManager = context.getSystemService(SubscriptionManager.class); - mTelecomManager = mContext.getSystemService(TelecomManager.class); mChangeListener = new SubscriptionsChangeListener(context, this); } @@ -184,12 +184,12 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere */ public PhoneAccountHandle getDefaultCallingAccountHandle() { final PhoneAccountHandle currentSelectPhoneAccount = - mTelecomManager.getUserSelectedOutgoingPhoneAccount(); + getTelecomManager().getUserSelectedOutgoingPhoneAccount(); if (currentSelectPhoneAccount == null) { return null; } final List<PhoneAccountHandle> accountHandles = - mTelecomManager.getCallCapablePhoneAccounts(false); + getTelecomManager().getCallCapablePhoneAccounts(false); final PhoneAccountHandle emergencyAccountHandle = new PhoneAccountHandle( PSTN_CONNECTION_SERVICE_COMPONENT, EMERGENCY_ACCOUNT_HANDLE_ID); if (currentSelectPhoneAccount.equals(emergencyAccountHandle)) { @@ -203,14 +203,30 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere return null; } + @VisibleForTesting + TelecomManager getTelecomManager() { + if (mTelecomManager == null) { + mTelecomManager = mContext.getSystemService(TelecomManager.class); + } + return mTelecomManager; + } + + @VisibleForTesting + PhoneAccount getPhoneAccount(PhoneAccountHandle handle) { + return getTelecomManager().getPhoneAccount(handle); + } + /** * Check if calling account bind to subscription * * @param handle {@link PhoneAccountHandle} for specific calling account */ public boolean isCallingAccountBindToSubscription(PhoneAccountHandle handle) { - return mTelecomManager.getPhoneAccount(handle) - .hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION); + final PhoneAccount account = getPhoneAccount(handle); + if (account == null) { + return false; + } + return account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION); } /** @@ -220,7 +236,11 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere * @return label of calling account */ public CharSequence getLabelFromCallingAccount(PhoneAccountHandle handle) { - CharSequence label = mTelecomManager.getPhoneAccount(handle).getLabel(); + CharSequence label = null; + final PhoneAccount account = getPhoneAccount(handle); + if (account != null) { + label = account.getLabel(); + } if (label != null) { label = mContext.getPackageManager().getUserBadgedLabel(label, handle.getUserHandle()); } |