Android获取IMSI和IMEI
IMSI是一个 唯一的数字, 标识了GSM和UMTS 网络里的唯一一个用户. 它 存储 在手机的SIM卡里,它会通过手机发送到网络上.
IMEI也是一串唯一的数字, 标识了 GSM 和 UMTS网络里的唯一一个手机. 它通常被打印在手机里电池下面的那一面,拨 *#06# 也能看到它.
代码: 这里是你在Android里读出 唯一的 IMSI-ID / IMEI-ID 的方法。
String myIMSI = android.os.SystemProperties.get(android.telephony.TelephonyProperties.PROPERTY_IMSI); // within my emulator it returns: 310995000000000 String myIMEI = android.os.SystemProperties.get(android.telephony.TelephonyProperties.PROPERTY_IMEI); // within my emulator it returns: 000000000000000
手机号码不是所有的都能获取。只是有一部分可以拿到。这个是由于移动运营商没有把手机号码的数据写入到sim卡中。
sim卡只有唯一的编号,供网络与设备识别那就是 imsi号码,手机的信号也可以说是通过这个号码在网络中传递的,并不是手机号码。
试想,你的sim丢失后,补办一张新的会换号码吗? —不会
就是因为在你的手机号码对应的 imsi号 在移动运营商中被修改成新sim卡的imsi号码。
那么手机号为什么有的就能显示呢?
这个就像是一个变量,当移动运营商为它赋值了,它自然就会有值。不赋值自然为空。
/** * 获得手机的一些标志符 * * @param c * @return String 手机的类型 */ public String fetch_status(Context c) { TelephonyManager tm = (TelephonyManager) c .getSystemService(Context.TELEPHONY_SERVICE);// String str = ""; String IMSI = tm.getSubscriberId(); str += "DeviceId(IMEI) = " + tm.getDeviceId() + "/n"; str += "DeviceSoftwareVersion = " + tm.getDeviceSoftwareVersion() + "/n"; str += "Line1Number = " + tm.getLine1Number() + "/n"; return str; }