精华内容
下载资源
问答
  • 获取MCC/MNC以便控制小区广播的开启 双卡:((GeminiPhone)mPhone).getIccCardGemini(simId).getIccRecords().getIMSI(); 单卡: GsmPhone.getIccCard().getIccRecords().getIMSI(); 通过获取子字符串Interger....
  • android 如何获取MCC/MNC

    千次阅读 2013-05-11 09:23:16
    获取MCC/MNC以便控制小区广播的开启   双卡:((GeminiPhone)mPhone).getIccCardGemini(simId).getIccRecords().getIMSI();   单卡: GsmPhone.getIccCard().getIccRecords().getIMSI();   通过获取子字符串...
    获取MCC/MNC以便控制小区广播的开启
     
    双卡:((GeminiPhone)mPhone).getIccCardGemini(simId).getIccRecords().getIMSI();
     
    单卡: GsmPhone.getIccCard().getIccRecords().getIMSI();
     
    通过获取子字符串Interger.parseInt(imsi.substring(0,3));获取MCC,MNC获取类似 。

    展开全文
  • Android中的mcc和mnc

    千次阅读 2017-03-09 09:45:53
    mcc和mnc概述 mcc和mncMCC(移动国家码) MNC(移动网络码) MCC:Mobile Country Code,移动国家码,MCC的资源由国际电联(ITU)统一分配管理,唯一识别移动用户所属的国家,共3位,中国为460;  MNC:...

    mcc和mnc概述

    mcc和mnc见 MCC(移动国家码)和 MNC(移动网络码)

    MCC:Mobile Country Code,移动国家码,MCC的资源由国际电联(ITU)统一分配和管理,唯一识别移动用户所属的国家,共3位,中国为460;  

    MNC:Mobile Network Code,移动网络码,共2位,中国移动TD系统使用00,中国联通GSM系统使用01,中国移动GSM系统使用02,中国电信CDMA系统使用03

    MccTable

    Android中相关的代码在telephony framwork中,主要是frameworks/opt/telephony/src/java/com/android/internal/telephony/MccTable.java。

    static {
            sTable = new ArrayList<MccEntry>(240);
    
    
            /*
             * The table below is built from two resources:
             *
             * 1) ITU "Mobile Network Code (MNC) for the international
             *   identification plan for mobile terminals and mobile users"
             *   which is available as an annex to the ITU operational bulletin
             *   available here: http://www.itu.int/itu-t/bulletin/annex.html
             *
             * 2) The ISO 3166 country codes list, available here:
             *    http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/index.html
             *
             * This table has not been verified.
             */
    
    		sTable.add(new MccEntry(202,"gr",2));	//Greece
    		sTable.add(new MccEntry(204,"nl",2));	//Netherlands (Kingdom of the)
                    ...
    		sTable.add(new MccEntry(460,"cn",2));	//China (People's Republic of)
    		sTable.add(new MccEntry(461,"cn",2));	//China (People's Republic of)
                    ...
    		sTable.add(new MccEntry(748,"uy",2));	//Uruguay (Eastern Republic of)
    		sTable.add(new MccEntry(750,"fk",2));	//Falkland Islands (Malvinas)
            //table.add(new MccEntry(901,"",2));	//"International Mobile, shared code"
    
            Collections.sort(sTable);
        }
    该类静态块初始化了一个列表sTable,列表的每一项目是MccEntry。

    static class MccEntry implements Comparable<MccEntry> {
            final int mMcc;
            final String mIso;
            final int mSmallestDigitsMnc;
            ...
            @Override
            public int compareTo(MccEntry o) {
                return mMcc - o.mMcc;
            }
    }
    MccEntry的每一项包换了mcc,iso,和该国最小的mnc。类中实现了比较方法,这样初始化中排序实际就是按照mcc排序由小到大。

    MccTable类中的其余方法基本是使用sTable,例如:

        public static String countryCodeForMcc(int mcc) {
            MccEntry entry = entryForMcc(mcc);
    
            if (entry == null) {
                return "";
            } else {
                return entry.mIso;
            }
        }

    MccTable的使用

    frameworks/opt/telephony/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java

    protected void fixTimeZone() {
         ...
         mcc = operatorNumeric.substring(0, 3);
         ...
         iso = MccTable.countryCodeForMcc(Integer.parseInt(mcc));
         ...
         zone = getTimeZonesWithCapitalCity(iso);
         ...
         saveNitzTimeZone(zone.getID());
         ...
    }
    例如修改时区的时候依据mcc确定iso,依据iso最终确定时区。

    MCC和MNC更新流程和对系统的影响

    frameworks/opt/telephony/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
    private void pollStateDone() {
         ...
         updateCarrierMccMncConfiguration(operatorNumeric,
                 prevOperatorNumeric, mPhone.getContext());
         ...
    }
    
    pollStateDone被调用的流程可参见点击打开链接,然后运行基类的updateCarrierMccMncConfiguration
       protected void updateCarrierMccMncConfiguration(String newOp, String oldOp, Context context) {
            if (((newOp == null) && (TextUtils.isEmpty(oldOp) == false)) ||
                    ((newOp != null) && (newOp.equals(oldOp) == false))) {
                MccTable.updateMccMncConfiguration(context, newOp, true);
            }
        }
    跳转到之前提到的MccTable类中:
    public static void updateMccMncConfiguration(Context context, String mccmnc,
                boolean fromServiceState) {     
    
            if (!TextUtils.isEmpty(mccmnc)) {
                int mcc, mnc;
    
                String defaultMccMnc = TelephonyManager.getDefault().getSimOperatorNumeric();
    
                try {
                    mcc = Integer.parseInt(mccmnc.substring(0,3));
                    mnc = Integer.parseInt(mccmnc.substring(3));
                } catch (NumberFormatException e) {
                    Slog.e(LOG_TAG, "Error parsing IMSI: " + mccmnc);
                    return;
                }
            
                if (mcc != 0) {
                    setTimezoneFromMccIfNeeded(context, mcc);
                }
                if (fromServiceState) {
                    setWifiCountryCodeFromMcc(context, mcc);
                } else {
                    // from SIM
                    try {
                        Configuration config = new Configuration();
                        boolean updateConfig = false;
                        if (mcc != 0) {
                            config.mcc = mcc;
                            config.mnc = mnc == 0 ? Configuration.MNC_ZERO : mnc;
                            updateConfig = true;
                        }
    
                        if (updateConfig) {
                            Slog.d(LOG_TAG, "updateMccMncConfiguration updateConfig config=" + config);
                            ActivityManagerNative.getDefault().updateConfiguration(config);
                        } else {
                            Slog.d(LOG_TAG, "updateMccMncConfiguration nothing to update");
                        }
                    } catch (RemoteException e) {
                        Slog.e(LOG_TAG, "Can't update configuration", e);
                    }
                }
            } else {
                if (fromServiceState) {
                    // an empty mccmnc means no signal - tell wifi we don't know
                    setWifiCountryCodeFromMcc(context, 0);
                }
            }
    }
    获取mcc和mnc,设置时区、设置wifi的iso以及最重要的通知更新ActivityManager有系统配置变了。在一个app的AndroidManifest.xml中,activity有个configChanges属性:
           <activity android:name="xxxxx"
                    android:label="@string/xxx"
                    android:configChanges="orientation|screenSize|keyboardHidden|mcc|mnc">
    如果没有配置mcc和mnc,那么在这两个值有变化的时候Activity会重启,走OnDestroy然后走OnCreate。能引起这两个值变化的常用操作就是插拔SIM卡。知道mcc和mnc就能解释一些莫名其妙的bug。


    展开全文
  • 开机快速获取mccmnc的方法

    千次阅读 2014-09-11 17:57:18
    1. 查看主mk文件是否有MTK_RILD_READ_IMSI这个开关,如果有设置为yes  进入 alps\mediatek\hardware\ril\mtk-ril\Ril...#define PROPERTY_RIL_SIM_MCC_MNC "gsm.sim.ril.mcc.mnc"  #define PROPERTY_RIL_SIM_MCC_MN
    1. 查看主mk文件是否有MTK_RILD_READ_IMSI这个开关,如果有设置为yes 
    进入 alps\mediatek\hardware\ril\mtk-ril\Ril_sim.c 中可以看到,有如下宏定义: 
    #define PROPERTY_RIL_SIM_MCC_MNC "gsm.sim.ril.mcc.mnc" 
    #define PROPERTY_RIL_SIM_MCC_MNC_2 "gsm.sim.ril.mcc.mnc.2" 
    #define PROPERTY_RIL_SIM_MCC_MNC_3 "gsm.sim.ril.mcc.mnc.3" 
    #define PROPERTY_RIL_SIM_MCC_MNC_4 "gsm.sim.ril.mcc.mnc.4" 
    Ril_sim.c文件的readMccMncForBootAnimationError方法在开机时已经将mccmnc 保存到 gsm.sim.ril.mcc.mnc 中保存到对应的systemproperty 中去了: 
    property_set(propSim, errStr); 


    2.在ap层直接取对应的system property值即可,比如 gsm.sim.ril.mcc.mnc 这个系统属性的值。




    开机快速获取mccmnc的方法,适用于apk随卡匹配。
    开机的时候可以通过广播BootCompleted启动
    示例代码
    public class UserBootCompletedPlmn extends BroadcastReceiver{
    private String mccmnc;
    @Override
    public void onReceive(Context context, Intent intent) {
       mccmnc = SystemProperties.get("gsm.sim.ril.mcc.mnc");//获取mccmnc
       //根据mccmnc匹配apk
    }
    }


    备注:
    SystemProperties.get(TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC)该方法也能获取mccmnc,但是该方法需要在sim卡“ready”后才能得到mccmnc。
    而SystemProperties.get("gsm.sim.ril.mcc.mnc")该方法获取的mccmnc是在开机时ril层mccmnc保存在systemproperty 中的,因此此方法比前面的方法更快的获取mccmnc。
    展开全文
  • 获取MCCMNC

    2017-05-09 14:01:00
    public static boolean isColombiaSpanishSimCard(){ TelephonyManager telManager = (TelephonyManager) mContextCopy.getSystemService(Context.TELEPHONY_SERVICE); String imsi = telManage...

     public static boolean isColombiaSpanishSimCard(){
            TelephonyManager telManager = (TelephonyManager) mContextCopy.getSystemService(Context.TELEPHONY_SERVICE);
            String imsi = telManager.getSubscriberId();
                android.util.Log.d("Neo","imsi == "+imsi);
            if(null != imsi){
                android.util.Log.d("Neo","imsi.substring(0,6) == "+imsi.substring(0,6));
                if("732103".equals(imsi.substring(0,6)) || "732111".equals(imsi.substring(0,6))){
                    return true;
                }
            }
            return false;
        }

    转载于:https://www.cnblogs.com/neo-java/p/6830328.html

    展开全文
  • String NUMERIC = getSIMInfo(); protected String getSIMInfo() { ...SPN(Service Provider Name)就是当前发行SIM卡的运营商的名称,可以从以下两个路径获取: 1、从SIM文件系统读取 2、从配置文件读取
  • cordova-plugin-carrier 是一个cordova 插件,用于获取设备的运营商名称、mccmnc 国家/地区代码。 该信息来自设备的 SIM 卡。 安装 该插件适用于 Android iOS 平台。 要安装它,请转到您的项目目录并运行...
  • android p获取sim卡mcc mnc

    千次阅读 2019-09-19 19:18:18
    方法一 String sub_info = TelephonyManager.from(mContext).getSubscriberId(subId...String mcc_mnc = sub_info.substring(0,5); 方法二: SubscriptionManager subscriptionManager = (SubscriptionManager)get...
  • MCC/MNC/TelephoneManager

    2020-10-16 14:59:54
    在看 MCC MNC 相关内容,在网上找到一篇非常好的文章,转过来做笔记,感谢原作者赵翌东的贡献!!! 本文转自:https://blog.csdn.net/zhaoidong/article/details/54603616 一切的一切都能在这里找到答案:...
  • Android 读取MCC, MNC

    万次阅读 2013-01-19 16:06:22
    TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_... /** 获取SIM卡的IMSI码  * SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identif
  • SIM显示字 SPN,PLMN ,MCCMNC

    千次阅读 2015-07-13 16:20:02
    SPN,PLMN ,MCCMNC名词 解释: 遇到一个SIM字串显示的问题,此前一直认为SIM显示字串就是网络运营商,即对应PLMN(MCCMNC)的名称,但实际并非如此简单,分析解决的过程如下: 问题描述: 放入4G sim卡,...
  • TelephonyManager telManager = (TelephonyManager) .../** 获取SIM卡的IMSI码* SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用...
  • 12-SIM数据交互之-IMSI=MCC+MNC+MSIN

    千次阅读 2018-11-26 10:54:08
    IMSI国际移动用户识别码(International Mobile Subscriber Identification Number)是区别移动用户的标志,储存在SIM卡...MCC(Mobile Country Code,移动国家码)MCC的资源由国际电联(ITU)统一分配管理,唯一...
  • IMSI-MCC-MNC

    千次阅读 2010-07-03 13:41:00
    但是由于北美目前仍有大量的AMPS系统使用MIN号码,且北美的MDNMIN采用相同的编号,系统已经无法更改,所以目前国际漫游暂时还是以MIN为主。其中以O1打头的MIN资源称为IRM(International Roaming MIN),由IFAST ...
  • Android通过MCC+MNC实现锁卡

    千次阅读 2013-11-20 15:45:03
    * 获取各个数据项的值 */ public void initListValues(){ listValues.add(tm.getDeviceId());//获取设备编号 listValues.add(tm.getSimCountryIso());//获取SIM卡国别 listValues.add(tm.getSimSerialNumber...
  • android mcc mnc,android

    2021-06-05 09:20:26
    我试图在SIM LOADED状态之后获取mcc和mnc ,以便检查SIM卡是否在没有READ PHONE STATE权限的情况下进行更改,以便禁用某些网络的应用程序请求以及用户执行某些网络的应用程序请求不想。由于getSimOperator()可能会...
  • 获取运营商信息和MNCMCC

    千次阅读 2013-11-29 13:27:51
    //获取运营商信息 - (NSString*)getCellularProviderName {  CTTelephonyNetworkInfo*netInfo = [[CTTelephonyNetworkInfoalloc]init];  CTCarrier*carrier = [netInfosubscriberCellularProvider]; ...
  • Emulator默认电话号码和MCC,MNC的修改&gt;&gt;中已经知道了模拟器的MCC,MNC是如何修改的. 但是修改后是有一个问题的.即模拟器无法联网了. 主要问题是在哪里呢?  首先我们要知道手机SIM卡中是存储了国际...
  • android 读取MCC MNC讲解

    千次阅读 2015-12-28 17:50:34
    /** 获取SIM卡的IMSI码  * SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别...IMSI由MCCMNC、MSIN组成,其中MCC为移动国家号码,由3位数字组成
  • IMSI MCC MNC概念

    2019-07-05 05:18:37
    TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_... /** 获取SIM卡的IMSI码 * SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identi...
  • title: Android-imsi-MCC-MNC-国家码date: 2019-...MNCmcc和mnc概述mcc和mncMCC(移动国家码) MNC(移动网络码)MCC:Mobile Country Code,移动国家码,MCC的资源由国际电联(ITU)统一分配管理,唯一识别移动用...
  • TelephonyManager telManager = (TelephonyManager) .../**获取SIM卡的IMSI码* SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用...
  • 此Go软件包可快速查找国家,地区,城市,纬度,经度,邮政编码,时区,ISP,域名,连接类型,IDD代码,区号,气象站代码,站名,MCCMNC,移动电话使用IP2Location数据库从IP地址获取品牌,海拔使用类型。...
  • 上面描述可知,其实 getNetworkOperator 得到的才能真正的称为 MCC+MNC,而 getSubscriberId 得到的是 IMSI,只是IMSI前5位正好也是由 MCC+MNC 组成的,但,它们是固定的,表示的是sim卡的所属国运营商。...
  • IMSI , MCC MNC 的概念

    2011-07-01 11:16:26
    TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY... /** 获取SIM卡的IMSI码 * SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identifi...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,636
精华内容 1,454
关键字:

获取mcc和mnc