Fixed incorrect data network type when device is on IWLAN

When the device is configured as AP-assisted mode, the cellular
network service should reports the cellular data RAT instead of
IWLAN. However, before we clean up all usages of
ServiceState.getDataNetworkType(), we still need to simulate the
old behavior, which is reporting IWLAN as the data network type.
Once all places are cleaned up, we can remove this temporary
solution.

Test: Manual
Bug: 124994459
Merged-In: I37256517af3bcf7330cefe55a33d6f09af7e1353
Change-Id: I37256517af3bcf7330cefe55a33d6f09af7e1353
(cherry picked from commit 2bd032071b)
This commit is contained in:
Jack Yu
2019-02-20 15:48:07 -08:00
parent 07037a86d3
commit c9747b94f0

View File

@@ -1569,6 +1569,17 @@ public class ServiceState implements Parcelable {
/** @hide */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
public @TelephonyManager.NetworkType int getDataNetworkType() {
final NetworkRegistrationState iwlanRegState = getNetworkRegistrationState(
NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TransportType.WLAN);
if (iwlanRegState != null
&& iwlanRegState.getRegState() == NetworkRegistrationState.REG_STATE_HOME) {
// If the device is on IWLAN, return IWLAN as the network type. This is to simulate the
// behavior of legacy mode device. In the future caller should use
// getNetworkRegistrationState() to retrieve the actual data network type on cellular
// or on IWLAN.
return iwlanRegState.getAccessNetworkTechnology();
}
final NetworkRegistrationState regState = getNetworkRegistrationState(
NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TransportType.WWAN);
if (regState != null) {