Определение типа сети на двухсимочном телефоне

Я пытаюсь получить информацию о типе сети в двухсимочном телефоне для каждого слота. Использую SubscriptionManager для получения подписок и TelephonyManager для работы с данными подписки следующим образом:

SubscriptionManager sm = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

for (SubscriptionInfo info : sm.getActiveSubscriptionInfoList()) {
    setData(getNetworkClass(tm.createForSubscriptionId(info.getSubscriptionId()).getDataNetworkType()));
}

Метод setData просто передает строку, getNetworkClass мапит код сети с ее названием:

private String getNetworkClass(int networkType) {
    switch (networkType) {
        case TelephonyManager.NETWORK_TYPE_GSM:
        case TelephonyManager.NETWORK_TYPE_GPRS:
        case TelephonyManager.NETWORK_TYPE_EDGE:
        case TelephonyManager.NETWORK_TYPE_CDMA:
        case TelephonyManager.NETWORK_TYPE_1xRTT:
        case TelephonyManager.NETWORK_TYPE_IDEN:
            return "2G";
        case TelephonyManager.NETWORK_TYPE_UMTS:
        case TelephonyManager.NETWORK_TYPE_EVDO_0:
        case TelephonyManager.NETWORK_TYPE_EVDO_A:
        case TelephonyManager.NETWORK_TYPE_HSDPA:
        case TelephonyManager.NETWORK_TYPE_HSUPA:
        case TelephonyManager.NETWORK_TYPE_HSPA:
        case TelephonyManager.NETWORK_TYPE_EVDO_B:
        case TelephonyManager.NETWORK_TYPE_EHRPD:
        case TelephonyManager.NETWORK_TYPE_HSPAP:
            return "3G";
        case TelephonyManager.NETWORK_TYPE_LTE:
            return "4G";
        case TelephonyManager.NETWORK_TYPE_NR:
            return "5G";
        default:
            return "Unknown";
    }
}

Все работает отлично для текущей активной симкарты, правильно определяется любая сеть, в которой она находится. Вторая симкарта либо возвращает код сети 4G, либо код неизвестной сети, если находится не в 4G. Как сделать так, чтобы другая симкарта, на которой не выбрана как симкарта для интернета, корректно возвращала тип сети?


Ответы (0 шт):