Do not get CM instance in getActiveModemCount unless needed.

TM#getActiveModemCount might be called before ConnectivityService is
initialized. So do not try to get ConnectivityService instance unless
it's needed (very rarely). Otherwise it will throw WTF exception.

Bug: 144373595
Test: sanity
Change-Id: I7a90ec45a0a3700a0c6852c505d68f438f26768c
This commit is contained in:
Malcolm Chen
2019-12-10 18:59:36 -08:00
committed by Xiangyu/Malcolm Chen
parent a9cfb69c9c
commit 8a4cf5e0e3

View File

@@ -430,14 +430,14 @@ public class TelephonyManager {
int modemCount = 1;
switch (getMultiSimConfiguration()) {
case UNKNOWN:
ConnectivityManager cm = mContext == null ? null : (ConnectivityManager) mContext
.getSystemService(Context.CONNECTIVITY_SERVICE);
modemCount = MODEM_COUNT_SINGLE_MODEM;
// check for voice and data support, 0 if not supported
if (!isVoiceCapable() && !isSmsCapable() && cm != null
&& !cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) {
modemCount = MODEM_COUNT_NO_MODEM;
} else {
modemCount = MODEM_COUNT_SINGLE_MODEM;
if (!isVoiceCapable() && !isSmsCapable() && mContext != null) {
ConnectivityManager cm = (ConnectivityManager) mContext
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null && !cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) {
modemCount = MODEM_COUNT_NO_MODEM;
}
}
break;
case DSDS: