gpt4 book ai didi

android - 如何在 Android 手机中获取第二个 SIM 卡的 IMSI 号

转载 作者:太空宇宙 更新时间:2023-11-03 13:13:22 84 4
gpt4 key购买 nike

我使用的是 TelephonyManager,我可以获得 SIM1 的 SubscriberID (IMSI),但无法获得 SIM2 的相同信息。但是,我能够获得两个 SIM 卡槽的 IMEI 号,但我仍然无法获得第二个 SIM 卡的 IMSI。有什么办法可以得到这些信息吗?

最佳答案

请记住,这是获取订阅者 ID 的骇人听闻的方法,因此可能无法在所有设备上使用

将在 Android 5.1.1 及更高版本 上运行,并且需要 android.permission.READ_PHONE_STATE 权限

(remember to ask user about android.permission.READ_PHONE_STATE permission in above marshmallow android versions as it is marked as dangerous)

public String getSim1IMSI() {
String imsi = null;
TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
try {
Method getSubId = TelephonyManager.class.getMethod("getSubscriberId", int.class);
SubscriptionManager sm = (SubscriptionManager) getSystemService(TELEPHONY_SUBSCRIPTION_SERVICE);
imsi = (String) getSubId.invoke(tm, sm.getActiveSubscriptionInfoForSimSlotIndex(0).getSubscriptionId()); // Sim slot 1 IMSI
return imsi;
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
return imsi;
}


public String getSim2IMSI() {
String imsi = null;
TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
try {
Method getSubId = TelephonyManager.class.getMethod("getSubscriberId", int.class);
SubscriptionManager sm = (SubscriptionManager) getSystemService(TELEPHONY_SUBSCRIPTION_SERVICE);
imsi = (String) getSubId.invoke(tm, sm.getActiveSubscriptionInfoForSimSlotIndex(1).getSubscriptionId()); // Sim slot 2 IMSI
return imsi;
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
return imsi;
}

关于android - 如何在 Android 手机中获取第二个 SIM 卡的 IMSI 号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40690037/

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