Я полагаю, что они перенесли код из Q в Pie, поскольку логика для 5G была реализована в конце прошлого года в Q (альфа).Поэтому при использовании TelephonyManager.getNetworkType()
вы, скорее всего, получите
20 (5G)
РЕДАКТИРОВАТЬ
Согласно комментарию ниже: Тип сети будет 13 , поэтому это не решит проблему.
РЕДАКТИРОВАТЬ
Попробуйте использовать отражение
static boolean isNRConnected(TelephonyManager telephonyManager) {
try {
Object obj = Class.forName(telephonyManager.getClass().getName())
.getDeclaredMethod("getServiceState", new Class[0]).invoke(telephonyManager, new Object[0]);
Method[] methods = Class.forName(obj.getClass().getName()).getDeclaredMethods();
for (Method method : methods) {
if (method.getName().equals("getNrStatus") || method.getName().equals("getNrState")) {
method.setAccessible(true);
return ((Integer) method.invoke(obj, new Object[0])).intValue() == 3;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}