gpt4 book ai didi

android - 双 SIM 卡中的 getAllCellInfo

转载 作者:行者123 更新时间:2023-11-29 02:31:51 25 4
gpt4 key购买 nike

有谁知道从 TelephonyManager.getAllCellInfo() 返回的列表中的单元格索引是否与 SIM 插槽编号相关?

我正在使用 Android API 24...

经过一些实验,似乎运行方法 updateCellInfo- 如下所述 - 始终返回一个列表,其中第一个索引对应于设备的最后一个 SIM 插槽,最后一个索引对应于设备的第一个 SIM 插槽。

谁能证实这一点?这种相关性是否合理?

private ArrayList<CellInfo> updateCellInfo(ArrayList<CellInfo> cellInfo)
{
//Create new ArrayList
ArrayList<CellInfo> cellInfos= new ArrayList<>();

//cellInfo is obtained from telephonyManager.getAllCellInfo()
if(cellInfo.size()!=0)
{
for (int i = 0; i < cellInfo.size(); i++)
{
//Return registered cells only
int index=0;
CellInfo temp=cellInfo.get(i);
if (temp.isRegistered())
{
cellInfos.add(index, temp);
index++;
}
}
}

return cellInfos;
}

最佳答案

只需为遇到相同问题的其他人添加此答案即可。将 CellInfo 连接到 SlotId 的正确方法是收集 Activity 订阅列表 (SubscriptionInfo),其中包含 SlotIndex 信息,并将其 MNC 代码与 CellInfo MNC 代码交叉引用。如果您查看代码,可能会更容易...

private CellInfo getSlotCellInfo(int slotIndex){
ArrayList<CellInfo> allCellInfo = new ArrayList<>(telephonyManager.getAllCellInfo());
SubscriptionManager subscriptionManager = SubscriptionManager.from(getActivity());
List<SubscriptionInfo> activeSubscriptionInfoList = subscriptionManager.getActiveSubscriptionInfoList();
SubscriptionInfo subscriptionInfo;

for (int i = 0; i < activeSubscriptionInfoList.size(); i++) {
SubscriptionInfo temp = activeSubscriptionInfoList.get(i);
if (temp.getSimSlotIndex() == slotIndex) {
subscriptionInfo=temp;
break;
}
}

for (int index = 0; index < allCellInfo.size(); index++) {
int mnc = 0;
CellInfo temp = allCellInfo.get(index);
String cellType = checkCellType(temp);
if (cellType == "GSM") {
CellIdentityGsm identity = (((CellInfoGsm) temp).getCellIdentity());
mnc = identity.getMnc();
} else if (cellType == "WCDMA") {
CellIdentityWcdma identity = (((CellInfoWcdma) temp).getCellIdentity());
mnc = identity.getMnc();
} else if (cellType == "LTE") {
CellIdentityLte identity = (((CellInfoLte) temp).getCellIdentity());
mnc = identity.getMnc();
}
if (mnc == subscriptionInfo.getMnc()) {
return temp;
}
}
}

关于android - 双 SIM 卡中的 getAllCellInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49254591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com