[Wi-Fi] Check default data SIM instead of all active subscriptions for

'Switch to mobile data automatically' setting

To align with framework design.

Bug: 138956509
Test: CellularFallbackPreferenceControllerTest
      manual test:
          1. Insert feature supported SIM and check UI.
          2. Remove feature supported SIM and check UI.
          3. Turn airplane mode on and check 1. and 2..

Change-Id: If10616c9b47fae490521479c5abc99c5df87f409
This commit is contained in:
Arc Wang
2019-08-16 11:25:30 +08:00
parent 6ef36e9c34
commit 35b7b6d078
2 changed files with 26 additions and 39 deletions

View File

@@ -19,7 +19,6 @@ package com.android.settings.wifi;
import android.content.Context;
import android.content.res.Resources;
import android.provider.Settings;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import com.android.internal.annotations.VisibleForTesting;
@@ -37,7 +36,7 @@ public class CellularFallbackPreferenceController extends TogglePreferenceContro
@Override
public int getAvailabilityStatus() {
return !avoidBadWifiConfig() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
return avoidBadWifiConfig() ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
}
@Override
@@ -53,20 +52,18 @@ public class CellularFallbackPreferenceController extends TogglePreferenceContro
}
private boolean avoidBadWifiConfig() {
boolean avoidBadWifiConfig = true;
final SubscriptionManager subscriptionManager =
mContext.getSystemService(SubscriptionManager.class);
for (SubscriptionInfo subscriptionInfo :
subscriptionManager.getActiveSubscriptionInfoList()) {
final Resources resources = getResourcesForSubId(subscriptionInfo.getSubscriptionId());
if (resources.getInteger(
com.android.internal.R.integer.config_networkAvoidBadWifi) == 0) {
avoidBadWifiConfig = false;
break;
}
final int activeDataSubscriptionId = getActiveDataSubscriptionId();
if (activeDataSubscriptionId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
return true;
}
return avoidBadWifiConfig;
final Resources resources = getResourcesForSubId(activeDataSubscriptionId);
return resources.getInteger(com.android.internal.R.integer.config_networkAvoidBadWifi) == 1;
}
@VisibleForTesting
int getActiveDataSubscriptionId() {
return SubscriptionManager.getActiveDataSubscriptionId();
}
@VisibleForTesting