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

订阅信息。getMnc()为具有不同载波的两个SIM返回相同的值

长孙兴德
2023-03-14

我试图在Android 5.1设备上获得MCC和MNC号码(基本上我想要IMSI号码,但这些也足够了),该设备具有双Sim卡(两个都是活动的)。由于5.1支持双Sim卡,因此我使用的Subscription manager如下:

SubscriptionManager manager = SubscriptionManager.from(this);
List<SubscriptionInfo> sil = manager.getActiveSubscriptionInfoList();
    if (sil != null) {
        for (SubscriptionInfo subInfo : sil) {
            Log.v("TestMain", "SubInfo:" + subInfo);
        }
    } else {
        Log.v("TestMain", "SubInfo: list is null");
    }

得到了这个输出的结果:

07-24 18:28:32.162    3844-3844/? V/TestMain﹕ SubInfo:{id=1, mcc 405 mnc 803, iccId=89918030914128062059 simSlotIndex=0 displayName=Aircel Karnataka carrierName=Aircel — Aircel Karnataka nameSource=0}
07-24 18:28:32.162    3844-3844/? V/TestMain﹕ SubInfo:{id=2,  mcc 405 mnc 803, iccId=8991860044481968955 simSlotIndex=1 displayName=CARD 2 carrierName=Vodafone Karnataka nameSource=0}

MCC(将与同一国家相同)注意到跨国公司是相同的,尽管运营商不同。

当我关掉电话时,我在日志中看到了这样一行:

07-24 18:31:02.295      616-616/? V/KeyguardUpdateMonitor﹕ SubInfo:{id=1,  mcc 405 mnc 803, iccId=89918030914128062059 simSlotIndex=0 displayName=CARD 1 carrierName=Emergency calls only — Aircel Karnataka nameSource=0}
07-24 18:31:02.295      616-616/? V/KeyguardUpdateMonitor﹕ SubInfo:{id=2,  mcc 404 mnc 86, iccId=8991860044481968955 simSlotIndex=1 displayName=CARD 2 carrierName=Emergency calls only — Vodafone Karnataka nameSource=0}

正如您所看到的,keyguard应用程序为两个sim卡都提供了正确的MNC。

所以我探索了keyGuard应用程序的代码,发现代码是一样的,因为我使用的代码从Android Source从这里:

protected void handleSimSubscriptionInfoChanged() {
        if (DEBUG_SIM_STATES) {
            Log.v(TAG, "onSubscriptionInfoChanged()");
            List<SubscriptionInfo> sil = mSubscriptionManager.getActiveSubscriptionInfoList();
            if (sil != null) {
                for (SubscriptionInfo subInfo : sil) {
                    Log.v(TAG, "SubInfo:" + subInfo);
                }
            } else {
                Log.v(TAG, "onSubscriptionInfoChanged: list is null");
            }
        }

我探索了更多,发现即使是键盘保护应用程序得到MCC的权利,只有当手机是关闭,其他时候,甚至是得到相同的MNC为两个模拟人生。但承运人名称总是不同的。

这是Android5.1中的一个bug还是我做错了什么?

共有2个答案

司空兴为
2023-03-14

这是Android5.1中的一个错误,在我更新手机后得到修复

笪波鸿
2023-03-14

我在三星J5的Android5.1中也遇到了同样的问题,但它在Moto X Play的Android6.0中工作。由于SubscriptionManager是在Android5.1中引入的,我想这是Android5.1中的一个bug,它在AndroidM中得到了纠正。

 类似资料:
  • 我试图找到在同一页中重复自身的元素。我尝试使用在FirePath中找到的以下XPath,但在selenium自动化测试中没有成功运行它。 以下是两个XPath: 这是我页面上的信息: 带有两个字段和部分超文本标记语言代码的截图 第一个屏幕截图上显示了另一个包含两个输入文本的HTML代码的屏幕截图

  • 我有一个websocket服务器和一个websocket客户端,都是Java的。websocket服务器具有以下功能: 在 Java 网页滑板客户端中,我在我的踩踏会话处理程序中提供了以下内容: 然后,我能够通过客户端向服务器路径“hello”发送消息来在两者之间进行通信,然后由于客户端订阅了“topic/greetings”,所以我也要用我的stompFrameHandler来处理响应。 但是我

  • 其中一个测试通过,另一个给出以下错误: java.lang.ClassCastException:类org.springframework.http.ResponseEntity不能强制转换为类org.junit.jupiter.api.function.executable(org.springframework.http.ResponseEntity和org.junit.jupiter.api

  • 我有一个5节点集群,每个节点都有一个运行的微服务(这是一个无状态的可靠服务),它正在接收来自Azure服务总线的消息。 因为我只为my_topic(Topic Name)创建了一个my_Subscription(Subscription Name),所以微服务实例是随机接收消息的。

  • 所以,在上面的例子中,可以看到有2个订阅者接受相同类型的处理。现在,在post()的时候,所有的函数都将被调用吗?如果接收StartRequest的两个函数将被调用,那么它们将以哪种顺序被调用?

  • 问题内容: 我创建了两个列表和,但是每个列表都有不同的创建方法: 但是输出使我感到惊讶: 使用列表推导创建的列表在内存中更大,但是在Python中这两个列表相同。 这是为什么?这是CPython内部的东西,还是其他解释? 问题答案: 在编写时,Python知道它将需要一个正好包含10个对象的列表,因此它会精确地分配该对象。 当您使用列表推导时,Python不知道它需要多少。因此,随着元素的添加,列