我需要测试我的应用,该应用提取网络的运营商名称,mcc和mnc值。
为了进行测试,我使用了来自android studio的模拟器,并使用G-NetTrack Lite
作为参考应用程序。
现在,我使用Extended control -> cellular
更改网络类型。我在所有可用的网络类型(GSM,HSCSD,GPRS,EDGE,UMTS,HSDPA,LTE)之间切换。对于每种网络类型,除了LTE外,我的参考应用程序都向我显示了运营商名称,分别是Android,mcc和mnc vlaues,分别是310和210。在我的应用程序中,我看到了相同的行为。我通过解析运算符值来提取mcc,mnc值:
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String operator = telephonyManager.getNetworkOperator();
要获取操作员名称,请执行以下操作:
TelephonyManager tm = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);
return tm.getNetworkOperatorName();
由于某种原因,当我将网络类型切换为LTE时,我的参考应用程序显示了一个数字310260,而不是运营商名称(由mcc-mnc组合而成)。 当我尝试使用上面的相同代码在我的应用中读取运算符名称时,运算符字符串为空。
当我从LTE切换回任何其他网络时,这仍然会发生-在两个应用程序中都没有运营商名称。仅当我再次更改网络类型时,将其更改为其他名称(LTE除外),两个应用程序中才能再次看到运营商名称。
有人遇到过这种行为吗?这是模拟器中的错误吗?