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; }