如何在Android中获取正确的手机信号ID和位置区域代码?

Use*_*001 9 android

我找到了很多代码来获取cell-id和位置区域代码,我使用下面的代码来获取cell-id和位置区域代码.

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation cellLocation = (GsmCellLocation) telephonyManager.getCellLocation();

int cid = cellLocation.getCid();
int lac = cellLocation.getLac();
Run Code Online (Sandbox Code Playgroud)

问题是,当我使用airtel-sim卡时,它工作正常并给出cell-id = 4331和loc = 610.但是当我使用relience-sim卡时,它会给出错误的结果cell-id = 11541和loc = 18823.我怎么解决这个问题?

小智 1

以下线程中重点介绍了解决方案:Android:CellID 不适用于所有运营商?

getCid()简而言之,您需要屏蔽在 3G 网络中获得的号码0xffff。以下是一个片段:

GsmCellLocation cellLocation = (GsmCellLocation)telm.getCellLocation();

new_cid = cellLocation.getCid() & 0xffff;
new_lac = cellLocation.getLac() & 0xffff;
Run Code Online (Sandbox Code Playgroud)

希望有帮助