我需要SIM序列号来标识要应用的SIM卡。对于单个SIM手机,该代码非常简单,
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
sim_ID = telephonyManager.getSimSerialNumber();
但是,当我在双SIM卡手机上对其进行测试时,它会变得很奇怪,因为我不确定返回的序列号是来自插槽1还是插槽2。是否有办法获得两个SIM卡的序列号?还是我可以通过任何方式确定调用上述代码时哪个Sim插槽正在返回序列号?
P.S。我不需要IMEI号码或IMSI号码。我特别需要SIM序列号(SSN)。
答案 0 :(得分:1)
检查。
TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
SubscriptionManager manager = (SubscriptionManager) context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
List<SubscriptionInfo> infoList = manager.getActiveSubscriptionInfoList();
for (int i = 0; i < infoList.size(); i++) {
SubscriptionInfo info = infoList.get(i);
//info.getSimSlotIndex() <- sim card slot number
//info.getNumber() <- sim card phone number (if exist, you can set this in sim card management)
}
答案 1 :(得分:0)
对于API级别> = 22
可以使用 SubscriptionManager类(已添加到API级别22 https://developer.android.com/reference/android/telephony/SubscriptionManager中)
SubscriptionManager sManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE)
SubscriptionInfo infoSim1 = sManager.getActiveSubscriptionInfoForSimSlotIndex(0);
SubscriptionInfo infoSim2 = sManager.getActiveSubscriptionInfoForSimSlotIndex(1);
对于API级别<= 21
对于单个SIM卡:TelephonyManager.getSimSerialNumber()
对于双卡双待:取决于手机的制造商。
没有定义的方法可以使API级别21以下的双SIM卡获得Sim Serial Number
。