Merge "[Wi-Fi] Fix multi SIM devices switch to mobile data automatically settings missing problem" into qt-r1-dev am: 54dbed859d

am: 0e53b6293d

Change-Id: I574c161e5cdde8f879031ff403082dddefe0dbb9
This commit is contained in:
Arc Wang
2019-08-17 07:27:01 -07:00
committed by android-build-merger
2 changed files with 54 additions and 12 deletions

View File

@@ -17,8 +17,11 @@
package com.android.settings.wifi;
import android.content.Context;
import android.content.res.Resources;
import android.provider.Settings;
import android.telephony.SubscriptionManager;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.core.TogglePreferenceController;
/**
@@ -33,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
@@ -49,12 +52,28 @@ public class CellularFallbackPreferenceController extends TogglePreferenceContro
}
private boolean avoidBadWifiConfig() {
return mContext.getResources().getInteger(
com.android.internal.R.integer.config_networkAvoidBadWifi) == 1;
final int activeDataSubscriptionId = getActiveDataSubscriptionId();
if (activeDataSubscriptionId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
return true;
}
final Resources resources = getResourcesForSubId(activeDataSubscriptionId);
return resources.getInteger(com.android.internal.R.integer.config_networkAvoidBadWifi) == 1;
}
@VisibleForTesting
int getActiveDataSubscriptionId() {
return SubscriptionManager.getActiveDataSubscriptionId();
}
@VisibleForTesting
Resources getResourcesForSubId(int subscriptionId) {
return SubscriptionManager.getResourcesForSubId(mContext, subscriptionId,
false /* useRootLocale */);
}
private boolean avoidBadWifiCurrentSettings() {
return "1".equals(Settings.Global.getString(mContext.getContentResolver(),
Settings.Global.NETWORK_AVOID_BAD_WIFI));
}
}
}