Your Java code looks correct, and the results make sense. Everything is described in the android documentation
According to
https://developer.android.com/reference/android/telephony/CellIdentityLte.html ,
Code:
int getMnc()
Returns:
2 or 3-digit Mobile Network Code, 0..999, Integer.MAX_VALUE if unknown
(and the value 2147483647 that you are obtaining is INTEGER.MAX_VALUE, so it is unknown)
Also, this log
"Signal level as an asu value between [0..31]: 97"
is incorrect, since documentation in ,
https://developer.android.com/reference/android/telephony/CellSignalStrengthLte.html#getAsuLevel() says
Code:
int getAsuLevel ()
Get the LTE signal level as an asu value between 0..97, 99 is unknown Asu is calculated based on 3GPP RSRP. Refer to 3GPP 27.007 (Ver 10.3.0) Sec 8.69
, so 97 is also a valid value.
Then, if the app reports different values on the same device (and under the same conditions), perhaps you are addressing the wrong classes or the app is using a non-official API. Are you connected to LTE?
You could try with android.telephony.CellIdentityGSM, android.telephony.CellIdentityWCDMA, .... and android.telephony.CellSignalStrengthWCDMA, ...... perhaps the app is choosing which is the appropiate one according to the visible networks type