Android TelephonyManager能否提供SIM卡2的详细信息,如isRoaming等。。?

Android TelephonyManager能否提供SIM卡2的详细信息,如isRoaming等。。?,android,Android,如下所示-TelephonyManager仅提供SIM1的详细信息 TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); telephonyManager.isNetworkRoaming() API22之前的 我相信在API 22之前,双SIM最初不受Android支持。因此,每个移动供应商都应该有自己的实现 也许,您应该获取他们的API/SDK,

如下所示-TelephonyManager仅提供SIM1的详细信息

TelephonyManager  telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.isNetworkRoaming()

API22之前的

我相信在API 22之前,双SIM最初不受Android支持。因此,每个移动供应商都应该有自己的实现

也许,您应该获取他们的API/SDK,并将它们包含到您的项目中。只有这样,您才能访问他们的API并咨询SIM2状态

即使这样,您也需要处理每个供应商的代码,因为每个供应商(三星/LG/摩托罗拉)可能会使用不同的方法来实现这一点。。因此,可以预期不同的方法名称

这个问题可能会帮助您:

它处理IMEI号码,也许,你可以将其更改为漫游状态

从API22开始

从API22开始,我认为您可以使用SubscriptionManager

SubscriptionManager subManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);

subManager.isNetworkRoaming(int SUBID);   
但是,我不确定哪个是SUBID的初始值(不确定它是从0还是1开始)

我进行了测试,对于SIM1,我必须使用“1”。对于SIM2,我必须使用“2”

我认为最好的方法是从SubscriptionManager检索子ID

因此,我认为您可以尝试以下代码:

SubscriptionManager subManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
List<SubscriptionInfo> subInfoList = subManager.getActiveSubscriptionInfoList();

for(int i = 0; i < subInfoList.size(); i++ ) {
    int subID = subInfoList.get(i).getSubscriptionId();
    int simPosition = subInfoList.get(i).getSimSlotIndex();

    if(subManager.isNetworkRoaming(subID))
        Log.d("TEST", "Simcard in slot " + simPosition + " has subID == " + subID + " and it is in ROAMING");
    else
        Log.d("TEST", "Simcard in slot " + simPosition + " has subID == " + subID + " and it is HOME");
}
SubscriptionManager subManager=(SubscriptionManager)getSystemService(Context.TELEPHONY\u SUBSCRIPTION\u SERVICE);
List subInfoList=subManager.getActiveSubscriptionInfoList();
对于(int i=0;i
此代码需要以下权限才能工作:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />


感谢您提供的大量信息。我只使用API 22…上面的代码总是给出false,即使SIM卡的on处于漫游状态(显示R)。我相信只有当你的数据计划开启时,它才会显示正确的状态?@Bharat我更新了我的答案。。。现在已经测试过了,工作正常。。。SUBID应该是1或2(而不是我前面提到的0或1)。您的工作非常完美。谢谢你,伙计。你刚才在这里为我施了魔法:)谢谢你提供的信息。但是当我从SubscriptionManager列表中得到MCC/MNC列表时,有两个SIM卡,两个值都是相同的。请帮助我如何查找两个SIM卡的MCC/MNC?订阅ID不总是1或2。每个SIM卡都有自己的子ID,即使未连接,该ID也无法重复使用。因此,如果用户将一个sim卡插入插槽1和插槽2,然后将插槽2 sim卡更改为新sim卡,则为id 3。改用