1

例如,我有一个带有 Airtel 和 Vodafone sims 的双卡手机。我想知道我们能否获得两家网络提供商的 MCC 和 MNC。

我知道

使用getPhoneCount()我们可以知道一个设备有多少个模拟人生。
使用getNetworkOperator()我们可以获得活跃网络运营商的 MCC+MNC。

4

1 回答 1

-1

以前没那么容易,但是在Lolipop版本之后你可以做到这一点。这是我的代码:

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
                SubscriptionManager subManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
                if (subManager.getActiveSubscriptionInfoCount() >= 1) {
                    List<SubscriptionInfo> subscriptionInfoList;
                    subscriptionInfoList=subManager.getActiveSubscriptionInfoList();
                    String carrierName = subscriptionInfoList.get(0).getCarrierName().toString();
                    int mccSlot1 = subscriptionInfoList.get(0).getMcc();
                    int mncSlot1 = subscriptionInfoList.get(0).getMnc();
                    Toast.makeText(MainActivity.this, "Sim slot 1 " + mccSlot1 + " " + mncSlot1 + "Name"+carrierName, Toast.LENGTH_SHORT).show();
                    String carrierName2 = subscriptionInfoList.get(1).getCarrierName().toString();
                    int mccSlot2 = subscriptionInfoList.get(1).getMcc();
                    int mncSlot2 = subscriptionInfoList.get(1).getMnc();
                    Toast.makeText(MainActivity.this, "Sim slot 2 " + mccSlot2 + " " + mncSlot2+"Name"+carrierName2, Toast.LENGTH_SHORT).show();

                }
            } else {
                TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
                if (telephonyManager == null) {
                    return;
                }
                String mCCMncCode = telephonyManager.getNetworkOperator();
                String mccCode = null;
                String mncCode = null;
                if (TextUtils.isEmpty(mCCMncCode)) {
                    return;
                }

                final int MNC_CODE_LENGTH = 3;
                if (mCCMncCode.length() >= MNC_CODE_LENGTH) {
                    mccCode = mCCMncCode.substring(0, MNC_CODE_LENGTH);
                }

                if (mCCMncCode.length() > MNC_CODE_LENGTH) {
                    mncCode = mCCMncCode.substring(MNC_CODE_LENGTH);
                }
                Toast.makeText(MainActivity.this, "Lower than API 22 " + mccCode + " " + mncCode, Toast.LENGTH_SHORT).show();
                return;
            }

授予权限后,只需在您的 on create 方法中添加此代码即可。

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

注意:如果您在最新的 android 版本(如棉花糖、牛轧糖和奥利奥)上对此进行测试,那么您必须提供checkselfpermission(运行时权限)。对于 Dual Sim 检查,请查看:答案

于 2018-07-04T12:14:17.803 回答