[Provider Model] Connect carrier network issue fix
- Need to check if the data is enabled on the second SIM in the case of dual SIM. Bug: 177411771 Test: manual test Change-Id: Ieead7a4550628d5380b8d0150cfd7a67c47980ca
This commit is contained in:
@@ -173,22 +173,31 @@ public class ProviderModelSlice extends WifiSlice {
|
|||||||
if (!SubscriptionManager.isUsableSubscriptionId(defaultSubId)) {
|
if (!SubscriptionManager.isUsableSubscriptionId(defaultSubId)) {
|
||||||
return; // No subscription - do nothing.
|
return; // No subscription - do nothing.
|
||||||
}
|
}
|
||||||
boolean requestConnectCarrier = !intent.hasExtra(EXTRA_TOGGLE_STATE);
|
|
||||||
// Enable the mobile data always if the user requests to connect to the carrier network.
|
|
||||||
boolean newState = requestConnectCarrier ? true
|
|
||||||
: intent.getBooleanExtra(EXTRA_TOGGLE_STATE, mHelper.isMobileDataEnabled());
|
|
||||||
|
|
||||||
|
boolean isToggleAction = intent.hasExtra(EXTRA_TOGGLE_STATE);
|
||||||
|
boolean newState = intent.getBooleanExtra(EXTRA_TOGGLE_STATE,
|
||||||
|
mHelper.isMobileDataEnabled());
|
||||||
|
if (isToggleAction) {
|
||||||
|
// The ToggleAction is used to set mobile data enabled.
|
||||||
MobileNetworkUtils.setMobileDataEnabled(mContext, defaultSubId, newState,
|
MobileNetworkUtils.setMobileDataEnabled(mContext, defaultSubId, newState,
|
||||||
false /* disableOtherSubscriptions */);
|
false /* disableOtherSubscriptions */);
|
||||||
|
}
|
||||||
|
doCarrierNetworkAction(isToggleAction, newState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doCarrierNetworkAction(boolean isToggleAction, boolean isDataEnabled) {
|
||||||
final NetworkProviderWorker worker = getWorker();
|
final NetworkProviderWorker worker = getWorker();
|
||||||
if (worker == null) {
|
if (worker == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (requestConnectCarrier) {
|
|
||||||
|
if (isToggleAction) {
|
||||||
|
worker.setCarrierNetworkEnabled(isDataEnabled);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MobileNetworkUtils.isMobileDataEnabled(mContext)) {
|
||||||
worker.connectCarrierNetwork();
|
worker.connectCarrierNetwork();
|
||||||
} else {
|
|
||||||
worker.setCarrierNetworkEnabled(newState);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -498,7 +498,7 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl
|
|||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
public void connectCarrierNetwork() {
|
public void connectCarrierNetwork() {
|
||||||
if (mTelephonyManager == null || !mTelephonyManager.isDataEnabled()) {
|
if (!MobileNetworkUtils.isMobileDataEnabled(mContext)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mWifiPickerTrackerHelper != null) {
|
if (mWifiPickerTrackerHelper != null) {
|
||||||
|
@@ -293,6 +293,22 @@ public class MobileNetworkUtils {
|
|||||||
&& isCurrentCountrySupported(context)));
|
&& isCurrentCountrySupported(context)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return {@code true} if mobile data is enabled
|
||||||
|
*/
|
||||||
|
public static boolean isMobileDataEnabled(Context context) {
|
||||||
|
final TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
|
||||||
|
if (!telephonyManager.isDataEnabled()) {
|
||||||
|
// Check if the data is enabled on the second SIM in the case of dual SIM.
|
||||||
|
final TelephonyManager tmDefaultData = telephonyManager.createForSubscriptionId(
|
||||||
|
SubscriptionManager.getDefaultDataSubscriptionId());
|
||||||
|
if (tmDefaultData == null || !tmDefaultData.isDataEnabled()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set whether to enable data for {@code subId}, also whether to disable data for other
|
* Set whether to enable data for {@code subId}, also whether to disable data for other
|
||||||
* subscription
|
* subscription
|
||||||
|
@@ -371,6 +371,7 @@ public class ProviderModelSliceTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onNotifyChange_intentPrimaryAction_shouldConnectCarrierNetwork() {
|
public void onNotifyChange_intentPrimaryAction_shouldConnectCarrierNetwork() {
|
||||||
|
when(mTelephonyManager.isDataEnabled()).thenReturn(true);
|
||||||
Intent intent = mMockProviderModelSlice.getBroadcastIntent(mContext).getIntent();
|
Intent intent = mMockProviderModelSlice.getBroadcastIntent(mContext).getIntent();
|
||||||
|
|
||||||
mMockProviderModelSlice.onNotifyChange(intent);
|
mMockProviderModelSlice.onNotifyChange(intent);
|
||||||
|
Reference in New Issue
Block a user