TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
/** 获取SIM卡的IMSI码* SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用户的标志,* 储存在SIM卡中,可用于区别移动用户的有效信息。IMSI由MCC、MNC、MSIN组成,其中MCC为移动国家号码,由3位数字组成,* 唯一地识别移动客户所属的国家,我国为460;MNC为网络id,由2位数字组成,* 用于识别移动客户所归属的移动网络,中国移动为00,中国联通为01,中国电信为03;MSIN为移动客户识别码,采用等长11位数字构成。* 唯一地识别国内GSM移动通信网中移动客户。所以要区分是移动还是联通,只需取得SIM卡中的MNC字段即可
*/
String imsi = telManager.getSubscriberId();
if(imsi!=null){if(imsi.startsWith("46000") || imsi.startsWith("46002")){//因为移动网络编号46000下的IMSI已经用完,所以虚拟了一个46002编号,134/159号段使用了此编号//中国移动}else if(imsi.startsWith("46001")){//中国联通}else if(imsi.startsWith("46003")){//中国电信
    }
}

IMSI:国际移动用户识别码(唯一标识),IMSI = MCC + MNC + MSIN,其中MCC是指移动台国家代码(3 位,中国460),MNC是指移动网代码(2 位中国00),MSIN是指移动用户识别号码(10 位 )

IMSI共有15位,其结构如下:

  MCC+MNC+MSIN ,(MNC+MSIN=NMSI)

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

  MNC:Mobile Network Code,移动网络码,共2位,中国移动TD系统使用00,中国联通GSM系统使用01,中国移动GSM系统使用02,中国电信CDMA系统使用03,一个典型的IMSI号码为460030912121001;

  MSIN:Mobile Subscriber Identification Number共有10位,其结构如下:

  09+M0M1M2M3+ABCD

  其中的M0M1M2M3和MDN号码中的H0H1H2H3可存在对应关系,ABCD四位为自由分配。

  可以看出IMSI在MSIN号码前加了MCC即NMSI,可以区别出每个用户的来自的国家,因此可以实现国际漫游。在同一个国家内,如果有多个移动网络运营商,可以通过MNC来进行区别.

转载自:http://blog.csdn.net/dream19861009/article/details/6072935

[Android Pro] 通过IMSI判断手机是移动、联通、电信相关推荐

  1. 红米2 com.android.phone,红米2手机(移动/联通/电信) 7.1 ROM 下载地址搬运(2017年3月10日更新)...

    Resurrection Remix 5.8.2,也叫RR-OS 原始网址:https://forum.xda-developers.com/redmi-2/development/redmi-2-r ...

  2. 判断android已经root,android 如何用代码判断手机是否被root

    直接上代码: public class RootUtils { public static boolean isDeviceRooted() { return checkRootMethod1() | ...

  3. android开发中如何判断手机中存在的sim卡数量?

    1.Android M及以上版本: TelephonyManager manager = (TelephonyManager)getSystemService(Context.TELEPHONY_SE ...

  4. 【Android小知识点】判断手机是否开启了模拟位置

    很多时候,我们要获得用户的真实位置,但有些用户会使用模拟位置来模拟,这时候我们就可以要求关闭模拟位置才能正常使用 package com.example.testchecklocalmode;impo ...

  5. android 判断双卡手机号码,android开发中如何判断手机中存在的sim卡数量?

    1.Android M及以上版本: TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_S ...

  6. android怎么阿看手机是移动联通还是电信的网络,GSM是联通、移动还是电信的网络?...

    GSM是联通.移动还是电信的网络?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! GSM是联通.移动还是电信的网络? 手 ...

  7. [Android Pro] 判断Uri对应的ContentProvider所操作的数据库u存在,及DownloadManager的暂停,继续...

    reference to : http://blog.csdn.net/u012858313/article/details/38821857 项目中遇到一个问题,就是用到DownloadManage ...

  8. Android 判断手机是32位CPU还是64位CPU android.os.Build类字段含义

    手机cpu分32位与64位,下面介绍如何在所有android版本上判断手机cpu位数是32位还是64位. 1 Android 判断手机是32位CPU还是64位CPU Android从API level ...

  9. Android获取IME,IMSI等各种手机信息,并对号码组成详解

    本文转载自http://www.cnblogs.com/zyw-205520/p/3829119.html 简介: IMSI:international mobiles subscriber iden ...

最新文章

  1. C 语言中的 switch 语句 case 后面是否需要加大括号
  2. 自定义一个安全的rm指令
  3. python能在生活中做什么-一行Python能实现什么丧心病狂的功能?
  4. vs code .lua.txt 后缀文件识别为lua的配置
  5. java tomcat 读取配置文件端口_跟我学Java编程—应用读写项目配置文件的Properties类...
  6. mysql列不与第一行的值匹配_MySQL和PHP错误:列数与第1行的值数不匹配
  7. iOS笔记(一)GCD多线程:信号量和条件锁
  8. H.264 视频编码器的研究与分析
  9. bat脚本变量赋值输出时提示”ECHO 处于关闭状态“
  10. 在虚拟机中安装windows server 2008
  11. ADI公司与B-Secur携手开发面向汽车工业的生物特征识别技术
  12. 基于深度学习cnnrnn的中文期刊分类(完整代码+课程设计)
  13. 福莫特罗行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  14. Civil3D 2018-02 点
  15. 客户端访问https时应无浏览器(含终端)安全警告信息;_(多图)老弟,你连HTTPS 原理都不懂,还给我讲“中间人攻击”,逗我吗......
  16. 计算机软考网络工程师 查询,计算机软考网络工程师考试成绩查询指南
  17. bigemap最近更新功能列表
  18. Call Indels/SV常用软件-搬运工
  19. java改变图片颜色_使用java代码实现证件照换背景色
  20. 利用ffmpeg把一帧原始视频数据转换成jpg格式的图片

热门文章

  1. python写音乐播放器_python 模拟(简易)音乐播放器
  2. Elasticsearch入门hello world (macos)【二】java请求Elasticsearch
  3. leetCode-88. 合并两个有序数组
  4. EelemntUI中e-form表单校验的使用以及表单校验的规则
  5. VS中安装DevExpress后在Winform的工具箱中不显示控件
  6. ElementUI的DateTimePicker组件添加验证规则以及限制选择范围
  7. post install error,please remove node_moules before retry
  8. Webstorm出现NoGitBinary时配置Git环境变量
  9. 对象创建的过程细节是怎样的?一起来探讨内存变化细节
  10. 熟读《阿里巴巴java开发手册》(二、异常日志)