Correct behavior of "Mobile data" button on opportunistic subscriptions.

A check was added earlier to make sure in DSDS mode only one sub
shows data on, which is not true for opportunistic subscriptions. For
them, it should always be on (enforced by Telephony) and be disabled
as it shouldn't be turned off.

Bug: 124331860
Bug: 124683219
Test: manual, robolectric
Change-Id: I53c8d881ff71ad25c418085d3eee63e55c786b8f
This commit is contained in:
Malcolm Chen
2019-02-12 15:55:12 -08:00
committed by Xiangyu/Malcolm Chen
parent 88d6b2f9ad
commit 5506e0c732
2 changed files with 36 additions and 7 deletions

View File

@@ -22,21 +22,21 @@ import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
import android.provider.Settings;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.FragmentManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
/**
* Preference controller for "Mobile data"
*/
@@ -115,8 +115,18 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
@Override
public boolean isChecked() {
return mTelephonyManager.isDataEnabled()
&& mSubId == SubscriptionManager.getDefaultDataSubscriptionId();
return mTelephonyManager.isDataEnabled();
}
@Override
public void updateState(Preference preference) {
super.updateState(preference);
preference.setEnabled(!isOpportunistic());
}
private boolean isOpportunistic() {
SubscriptionInfo info = mSubscriptionManager.getActiveSubscriptionInfo(mSubId);
return info != null && info.isOpportunistic();
}
public static Uri getObservableUri(int subId) {