我找到了很多代码来获取cell-id和位置区域代码,我使用下面的代码来获取cell-id和位置区域代码。
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation cellLocation = (GsmCellLocation) telephonyManager.getCellLocation();
int cid = cellLocation.getCid();
int lac = cellLocation.getLac();
问题是,当我使用airtel-sim卡时,它工作正常并给出cell-id = 4331和loc = 610。但是当我使用relience-sim卡时,它会给出错误的结果cell-id = 11541和loc = 18823。我怎么解决这个问题?
答案 0 :(得分:0)
解决方案在以下主题中突出显示:Android: CellID not available on all carriers?
简而言之,您需要屏蔽getCid()
在使用0xffff
的3G网络时获得的数字。以下是一个片段:
GsmCellLocation cellLocation = (GsmCellLocation)telm.getCellLocation();
new_cid = cellLocation.getCid() & 0xffff;
new_lac = cellLocation.getLac() & 0xffff;
希望有所帮助
答案 1 :(得分:0)
基于网络,小区ID和LAC ID是不同的,正如您所提到的,您正在使用不同网络的两个不同的SIM,因此您将获得不同的小区和区域,这些不同。因为一个运营商的小区ID将与其他网络不同,因为两个不同的塔用于不同的网络,并且它们相应地分配了两个ID。