描述:
IMSI是一個 唯一的數字, 標識了GSM和UMTS 網路裡的唯一一個使用者. 它 儲存 在手機的SIM卡裡,它會通過手機發送到網路上.
IMEI也是一串唯一的數字, 標識了 GSM 和 UMTS網路裡的唯一一個手機. 它通常被列印在手機裡電池下面的那一面,撥 *#06# 也能看到它.
代碼: 這裡是你在Android裡讀出 唯一的 IMSI-ID / IMEI-ID 的方法。
Java:
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;
}