summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/network
diff options
context:
space:
mode:
authorBonian Chen <bonianchen@google.com>2020-05-28 14:59:47 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-05-28 14:59:47 +0000
commite2da25108a8cd0bd1549e850d8a71e9b18b08b0e (patch)
tree9b2109070bf8a53ccb1754e89a9d785d8ac94b7b /src/com/android/settings/network
parent259e6288c9f91f8144c12127bda672ee1f0b7258 (diff)
parentce0f3c66a080e43867bf11ec50275e2bec171b6c (diff)
downloadpackages_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/com/android/settings/network')
-rw-r--r--src/com/android/settings/network/telephony/DefaultSubscriptionController.java32
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());
}