IMEI、IMSI、ICCID、SN是什么?意义和区别?通信模组或手机的唯一识别码

最近在做几个4G移动端的产品,初入行门有很多生涩的名词。想获取一个全球唯一ID作为设备后台管理编号,就扯出了 IMEI、IMSI、ICCID、SN 这几个东西。


IMEI

  • IMEI:国际移动设备识别码 (International Mobile Equipment Identity)。
    15位数字组成,全球唯一ID,用来区别每一部移动通信设备。与手机是绑定关系。
    第一部分 TAC,Type Allocation Code,类型分配码。86为中国。
    其余的部分没啥有用信息。

典型IMEI码:868540050954128


IMSI

  • IMSI:国际移动用户识别号。(International Mobile Subscriber Identification Number)
    15位数字组成,全球唯一ID,用来区别每一位移动用户。与SIM卡是绑定关系。
    第一部分:MCC,移动国家代码 (Mobile Country Code)。3位,中国为460。
    第二部分:MNC,移动网络代码(Mobile Network Code)。2位,中国移动使用00、02、04、07,中国联通GSM系统使用01、06、09,中国电信CDMA系统使用03、05,电信4G使用11,中国铁通使用20。(百度上是这么说的,可我的移动物联卡是08…啊这 (⊙ˍ⊙) … )
    第三部分:MSIN,移动订阅用户识别代码(Mobile subscription identification number)。10位。

典型IMSI码:460080585306741


ICCID

  • ICCID:集成电路卡识别码(Integrate circuit card identity)。
    20位数字组成,是IC卡的唯一识别号码。与SIM卡是绑定关系。
    前六位为运营商代码:
    中国移动的为:898600;898602;898604;898607 。
    中国联通的为:898601;898606;898609。
    中国电信的为:898603。
    其余的部分没啥有用信息。

典型ICCID码: 89860485192072216741


SN

  • SN:Series Number。一般是产品的生产编号。
    这个编码就比较随意了,不知道啥规则,英文、数字都有,估计每个厂商的编码规则都不一样。

典型SN码:P1Q21DJ6A0026310P


Q&A

  • QIMEIIMSI 的区别 ?
    AIMEI移动设备识别码IMSI移动用户识别码
    都是全球唯一ID。但IMEI绑定于手机设备,而IMSI绑定于SIM卡

  • QIMEI 注意事项:
    A:IMEI和IMSI存在一一对应关系,所以双卡手机有两个IMEI号。
    在这里插入图片描述

  • Q:如果跟你说的一样,需要个识别码来做设备后台管理编号,哪个更适合?
    A:做设备后台管理编号,以上的其实都可以,都是全球唯一ID。但要记得:(1)SIM卡进行插拔更改,IMSIICCID也会跟着更改。(2)如果是双卡设备,可能同个设备会有两个IMEI

在Android 12及以上版本中,由于安全性隐私保护方面的考量,直接获取设备的国际移动设备识别码IMSI国际电路交换号码识别码ICCID)变得更为受限。通常,这些信息属于用户的敏感数据,除非有明确的权限请求并得到用户的授权,否则应用不应该随意访问。 如果你的应用需要访问这些信息,你需要按照以下步骤操作: 1. **申请权限**:在`AndroidManifest.xml`文件中添加 `<uses-permission>` 元素,如: ```xml <uses-permission android:name="android.permission.READ_PHONE_STATE" /> ``` 对于 Android M (API level 23) 及以上,你还需添加对`READ_SMS`权限的请求,因为IMSI有时会作为短信内容的一部分。 2. **检查权限**:在运行时通过`ContextCompat.checkSelfPermission()`检查是否已经获得所需权限,并使用`ActivityCompat.requestPermissions()`请求权限。 3. **使用TelephonyManager**:通过`TelephonyManager`类,你可以尝试读取设备的电话状态,但是请注意,实际能否成功取决于系统设置个人隐私策略。例如,获取IMEI(设备唯一标识符): ```java TelephonyManager telephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String imei = telephony.getDeviceId(); ``` 4. **处理结果**:当用户授予权限后,你可以从返回的结果中获取IMSIICCID。如果没有权限,你应该处理相应的错误提示用户。 然而,由于IMSIICCID通常只在特定的情况下提供给特定服务(如运营商),并且对于大多数非核心功能而言,它们通常是不必要的。所以,在设计应用程序时,应尽量避免依赖这些信息,除非确实有合法且明确的理由。记住,尊重用户隐私始终是首要考虑的。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值