获取手机IMEI/ICCID/IMSI

TelephonyManager telManager = (TelephonyManager) this
                .getSystemService(Context.TELEPHONY_SERVICE);

        String imei = telManager.getDeviceId();       //取出IMEI:国际移动设备标识,是手机的识别id(International Mobile Equipment Identity)
        String tel = telManager.getLine1Number();     //这就是总是不能成功的获取本机手机号方法
        String iccid =telManager.getSimSerialNumber();  //取出ICCID:集成电路卡识别码(固化在手机SIM卡中,就是SIM卡的序列号)很容易伪造哦
        String imsi =telManager.getSubscriberId();  //取出IMSI:国际移动用户识别码(就是识别你是哪个运营商的SIM卡)
        String operatorNum = telManager.getSimOperator();
        String operator = "";
        if (operatorNum != null) {

            if (operatorNum.equals("46000") || operatorNum.equals("46002")
                    || operatorNum.equals("46007")) {

                // 中国移动
                operator = "中国移动";
            } else if (operatorNum.equals("46001")) {

                // 中国联通
                operator = "中国联通";

            } else if (operatorNum.equals("46003")) {

                // 中国电信
                operator = "中国电信";

            }

        }
        Log.e("aaa","imei--"+imei+"--iccid--"+iccid+"--imsi--"+imsi+"--运营商--"+operator);

补充说明

[1]在手机通话界面输入 *#06# 即可显示手机的IMEI,也就是 常说的手机的设备ID

[2] SIM卡背面的数字就是手机SIM卡的ICCID,也就是手机卡的序列号,这个号很容易造假

[3]很久以前Android是可以获取手机号的,现在随着SIM卡的升级,手机号码通过代码获取不到了

[4]IMSI我理解的是标识移动用户的(为了在无线路径和整个GSM(Global System for Mobile Communications,全球移动通信系统)移动通信网上正确地识别某个移动客户,就必须给移动客户分配一个特定的识别码。这个码是存储在SIM卡里的,通过代码可以获取)

啰嗦
SIM卡是(Subscriber Identity Module 客户识别模块)的缩写,也称为用户身份识别卡、智能卡
ICCID是手机卡背面的20位数字

实施实名制的初衷是遏制不良信息的传播,防范打击各种电话诈骗活动,解决相关部门取证难、查处难的问题。

### eSIM 中 IMEIICCID 和 EID 的定义与区别 #### 定义与作用 - **IMEI (International Mobile Equipment Identity)** IMEI 是国际移动设备识别码,用于唯一标识每台移动设备。对于支持蜂窝通信功能的设备而言,IMEI 可帮助运营商验证并管理连接到其网络上的具体硬件实例。通过调用 `TelephonyManager.getDeviceId()` 方法可以在 Android 设备上获取 IMEI 或 MEID[^2]。 - **ICCID (Integrated Circuit Card Identifier)** ICCID 是集成电路卡识别号,用来唯一标识 SIM 卡本身。在传统 SIM 卡时代,这是印刷在物理卡片背面的一串数字;而在 eSIM 技术下,则是指向存储于 UICC 芯片内的逻辑实体。它包含了关于发行商和服务提供商的信息,在激活过程中起到重要作用[^1]。 - **EID (Embedded Subscriber Identity Module ID)** EID 表示嵌入式用户身份模块编号,专属于每一枚出厂前预置好的 eUICC(即 eSIM),即使更换了配置文件也不会改变。这意味着即便同一张 eSIM 上安装了不同国家或地区的多个运营商资料包,只要这颗芯片不变动,那么它的 EID 就保持恒定。因此,当涉及到跨区域漫游或是多 IMSI 应用场景时,EID 成为了追踪和认证的关键依据之一。 #### 主要差异对比 | 特征 | IMEI | ICCID | EID | |------------|-------------------------------------------|---------------------------------------------|----------------------------------------------| | 描述对象 | 移动终端 | SIM/UICC | eUICC/eSIM | | 是否可变 | 不会随 SIM 更换而变化 | 随着新旧 SIM 切换会发生变动 | 终身固定 | | 数据长度 | 通常为 15 位 | 大约也是 19 至 20 位 | 同样大约有 20 位 | | 功能用途 | 辨识具体的手机型号及其序列 | 关联至特定的服务提供者 | 确认唯一的 eSIM 实体 | ```java // Java 示例代码展示如何读取这些信息 public class DeviceInfo { private static final String TAG = "DeviceInfo"; /** * 获取设备 IMEI 编号 */ public static String getImei(Context context) { TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); if (tm != null && PermissionChecker.checkSelfPermission(context, Manifest.permission.READ_PRIVILEGED_PHONE_STATE) == PackageManager.PERMISSION_GRANTED){ return tm.getImei(); } Log.w(TAG,"Unable to retrieve IMEI"); return ""; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值