当前位置: 首页 > 知识库问答 >
问题:

订阅管理器读取IMSI双SIM卡设备ruuning Android 5.1

岳英耀
2023-03-14

对于API 22,我尝试使用SubscriptionManager来读取双SIM IMSI。

IMSI为14至15个字符,格式如下:“MCC-MNC-MSIN”MCC=移动国家代码(例如,美国为310);MNC=移动网络代码(例如,AT为410

类中没有获取IMSI的方法。两种方法都有

所以我的问题是,如何使用SubscriptionManager获得完整的IMSI?

更新:SubscriptionManager返回错误/相同的MCC

更新:SubscriptionManager在运行Android 6.0的Moto G上运行良好。但无法读取SIM卡状态。

共有1个答案

罗伟兆
2023-03-14

有一种公开但隐藏的方法可以获取给定订阅ID的订户ID(GSM电话的IMSI)。我不知道为什么它是隐藏的,但您可以使用java反射毫无问题地调用它。

甚至getSubscriberId在内部也调用getSubscriberId(intsubid),所以我认为使用它是安全的。

这里有一个例子。

TelephonyManager telephonyManager = (TelephonyManager) mContext
            .getSystemService(Context.TELEPHONY_SERVICE);
int slotIndex = 1;
int subscriptionId = SubscriptionManager.from(mContext).getActiveSubscriptionInfoForSimSlotIndex(slotIndex).getSubscriptionId();
try {
    Class c = Class.forName("android.telephony.TelephonyManager");
    Method m = c.getMethod("getSubscriberId", new Class[] {int.class});
    Object o = m.invoke(telephonyManager, new Object[]{subscriptionId});

    String subscriberId = (String) o;
} catch (Exception e) {
    e.printStackTrace();
}
 类似资料:
  • 我试图确定multisim Android设备(运行Android 7.0)是否有任何工作/启用的sim卡。为此,我遵循Google关于将多个TelephonyManager附加到默认TelephonyManager实例的文档,如下所示:https://developer.android.com/reference/android/telephony/TelephonyManager.html#S

  • 使用指南 - 账户管理 - 其他管理 - 账户邮件订阅设置的管理 如果想要修改或取消邮件订阅设置,可以到“管理->账户管理->邮件订阅设置”中进行设置。

  • 登录企业管理-订阅号-设置订阅号管理员

  • 提供访问通用工具或硬件设备的接口,例如 环形缓冲区、管道等通用工具,GPIO、SPI、I2C等硬件设备 模块   设备子系统   I/O设备子系统     环形缓冲区   环形缓冲区接口     环形块状缓冲区   环形块状缓冲区接口     完成信号量   完成信号量接口     管道   管道接口     数据队列   数据队列接口     工作队列   工作队列接口     等待队列   等

  • 可以在设备管理中添加您常使用或受信任的设备,方便对设备进行统一的管理,同时支持设备的远程管理。 3.4.1.1. 添加设备 第一步:获得目标设备的标识,可以在目标设备的"设置->诊断信息->设备标识”中查看并复制; 第二步:添加设备,在设备管理界面点击“添加”按钮,输入设备标识并点击“保存”,设备添加成功; [图片丢失] 选项设置 在设备列表中,选中要管理的设备,点击“选项设置”按钮即可进入设备配

  • 我想知道两个sim卡的运营商名称时,移动是双sim卡。在单一的SIM卡,我得到了操作员的名字,但决斗SIM卡,我不能,虽然经过这么多的搜索和尝试。 如果我在双sim手机上运行我的应用程序,我可以在我的应用程序中同时获得两个sim卡运营商名称,例如:Idea、沃达丰。 编辑: 是否有人知道如何获得IMEI号码的sim卡操作员姓名,然后我有IMEI号码。 代码: