Only enable data for one SIM in DSDS.
Only enable mobile data for one SIM for simplicity. Which means When turning on mobile data on non-default sub, pop a notification to user that it will turn off data of the other one. Bug: 120515679 Test: manual and unittest Change-Id: I7c190bb70d771b7f280c246038a380e4fc7338a3
This commit is contained in:
committed by
Xiangyu/Malcolm Chen
parent
1ad5c9805a
commit
42055cbe50
@@ -22,7 +22,6 @@ import android.net.Uri;
|
|||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.telephony.SubscriptionInfo;
|
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
@@ -131,16 +130,12 @@ public class MobileDataPreferenceController extends TogglePreferenceController
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
boolean isDialogNeeded() {
|
boolean isDialogNeeded() {
|
||||||
final boolean enableData = !mTelephonyManager.isDataEnabled();
|
final boolean enableData = !mTelephonyManager.isDataEnabled();
|
||||||
final SubscriptionInfo currentSir = mSubscriptionManager.getActiveSubscriptionInfo(
|
|
||||||
mSubId);
|
|
||||||
final SubscriptionInfo nextSir = mSubscriptionManager.getDefaultDataSubscriptionInfo();
|
|
||||||
final boolean isMultiSim = (mTelephonyManager.getSimCount() > 1);
|
final boolean isMultiSim = (mTelephonyManager.getSimCount() > 1);
|
||||||
final boolean isMultipleDataOnCapable =
|
final int defaultSubId = mSubscriptionManager.getDefaultDataSubscriptionId();
|
||||||
(mTelephonyManager.getNumberOfModemsWithSimultaneousDataConnections() > 1);
|
final boolean needToDisableOthers = mSubscriptionManager
|
||||||
final boolean isDefaultDataSubscription = (nextSir != null && currentSir != null
|
.isActiveSubscriptionId(defaultSubId) && defaultSubId != mSubId;
|
||||||
&& currentSir.getSubscriptionId() == nextSir.getSubscriptionId());
|
|
||||||
if (enableData) {
|
if (enableData) {
|
||||||
if (isMultiSim && !isMultipleDataOnCapable && !isDefaultDataSubscription) {
|
if (isMultiSim && needToDisableOthers) {
|
||||||
mDialogType = MobileDataDialogFragment.TYPE_MULTI_SIM_DIALOG;
|
mDialogType = MobileDataDialogFragment.TYPE_MULTI_SIM_DIALOG;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -230,7 +230,8 @@ public class MobileNetworkUtils {
|
|||||||
subscriptionManager.getActiveSubscriptionInfoList();
|
subscriptionManager.getActiveSubscriptionInfoList();
|
||||||
if (subInfoList != null) {
|
if (subInfoList != null) {
|
||||||
for (SubscriptionInfo subInfo : subInfoList) {
|
for (SubscriptionInfo subInfo : subInfoList) {
|
||||||
if (subInfo.getSubscriptionId() != subId) {
|
// We never disable mobile data for opportunistic subscriptions.
|
||||||
|
if (subInfo.getSubscriptionId() != subId && !subInfo.isOpportunistic()) {
|
||||||
context.getSystemService(TelephonyManager.class).createForSubscriptionId(
|
context.getSystemService(TelephonyManager.class).createForSubscriptionId(
|
||||||
subInfo.getSubscriptionId()).setDataEnabled(false);
|
subInfo.getSubscriptionId()).setDataEnabled(false);
|
||||||
}
|
}
|
||||||
|
@@ -20,6 +20,7 @@ import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_U
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
@@ -104,9 +105,8 @@ public class MobileDataPreferenceControllerTest {
|
|||||||
public void isDialogNeeded_enableNonDefaultSimInMultiSimMode_returnTrue() {
|
public void isDialogNeeded_enableNonDefaultSimInMultiSimMode_returnTrue() {
|
||||||
doReturn(false).when(mTelephonyManager).isDataEnabled();
|
doReturn(false).when(mTelephonyManager).isDataEnabled();
|
||||||
doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID);
|
doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID);
|
||||||
doReturn(null).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
|
doReturn(true).when(mSubscriptionManager).isActiveSubscriptionId(anyInt());
|
||||||
doReturn(2).when(mTelephonyManager).getSimCount();
|
doReturn(2).when(mTelephonyManager).getSimCount();
|
||||||
doReturn(1).when(mTelephonyManager).getNumberOfModemsWithSimultaneousDataConnections();
|
|
||||||
|
|
||||||
assertThat(mController.isDialogNeeded()).isTrue();
|
assertThat(mController.isDialogNeeded()).isTrue();
|
||||||
assertThat(mController.mDialogType).isEqualTo(
|
assertThat(mController.mDialogType).isEqualTo(
|
||||||
|
Reference in New Issue
Block a user