android 獲取 imei號碼

2021-07-24 20:53:05 字數 3626 閱讀 9783

「 imei(international mobile equipment identity)是國際移動裝置身份碼的縮寫,國際移動裝備辨識碼,是由15位數字組成的」電子串號」,它與每台手機一一對應,而且該碼是全世界唯一的。 」[1]

對應gsm手機的 imei 和 cdma手機的 meid。是唯一裝置id.

在安卓開發中可用於判斷是否是虛擬手機號在盜刷。imei號涉及隱私最好加密。

1、在androidmanifest.xml中增加訪問裝置狀態的許可權:

< uses-permission android:name="android.permission.read_phone_state" />
2、通過上下文裝置獲取到telephonymanager例項,呼叫getdeviceid方法獲取imei:

telephonymanager telephonymanager=(telephonymanager) mactivity.getsystemservice(context.telephony_service);

string imei=telephonymanager.getdeviceid();

simserialnumber//獲取手機sim卡的串號(唯一編號id)

telephonymanager tm = (telephonymanager) mactivity.getsystemservice(context.telephony_service);

string imei = tm.getsimserialnumber();

imsi//國際移動使用者識別碼

「 國際移動使用者識別碼(imsi:international mobile subscriber identification number)是區別移動使用者的標誌,儲存在sim卡中,可用於區別移動使用者的有效資訊。其總長度不超過15位,同樣使用0~9的數字。其中mcc是移動使用者所屬國家代號,佔3位數字,中國的mcc規定為460;mnc是移動網號碼,由兩位或者三位數字組成,中國移動的流動網路編碼(mnc)為00;用於識別移動使用者所歸屬的移動通訊網;msin是移動使用者識別碼,用以識別某一移動通訊網中的移動使用者。」

telephonymanager tm = (telephonymanager) mactivity.getsystemservice(context.telephony_service);

string imsi = tm.getsubscriberid();

getline1number()//獲取到手機號碼;

「 手機號碼不是所有的都能獲取。只是有一部分可以拿到。這個是由於移動運營商沒有把手機號碼的資料寫入到sim卡中。這個就像是乙個變數,當移動運營商為它賦值了,它自然就會有值。不賦值自然為空。 」

對應gsm手機的 msisdn。

telephonymanager tm = (telephonymanager) mactivity.getsystemservice(context.telephony_service);

string tel = tm.getline1number();

其他更多:

tm.getcallstate(); //int **狀態

1.tm.call_state_idle=0 無活動

2.tm.call_state_ringing=1 響鈴

3.tm.call_state_offhook=2 摘機

tm.getcelllocation(); //celllocation **方位

tm.getdevicesoftwareversion();//string 裝置的軟體版本號

tm.getneighboringcellinfo();//list< neighboringcellinfo> 附近的**的資訊

tm.getnetworkcountryiso();//string 獲取iso標準的國家碼,即國際長途區號,僅當使用者已在網路註冊後有效

tm.getnetworkoperator();//string mcc+mnc(mobile country code + mobile network code),僅當使用者已在網路註冊時有效

tm.getnetworkoperatorname();//string 按照字母次序的current registered operator(當前已註冊的使用者)的名字,僅當使用者已在網路註冊時有效

tm.getnetworktype();//int 當前使用的網路型別

network_type_unknown 網路型別未知 0

network_type_gprs gprs網路 1

network_type_edge edge網路 2

network_type_umts umts網路 3

network_type_hsdpa hsdpa網路 8

network_type_hsupa hsupa網路 9

network_type_hspa hspa網路 10

network_type_cdma cdma網路,is95a 或 is95b. 4

network_type_evdo_0 evdo網路, revision 0. 5

network_type_evdo_a evdo網路, revision a. 6

network_type_1xrtt 1xrtt網路 7

tm.getphonetype();//int

tm.getsimcountryiso();//string 獲取iso國家碼,相當於提供sim卡的國家碼

tm.getsimoperator();//string 獲取sim卡提供的移動國家碼和流動網路碼.5或6位的十進位制數字.sim卡的狀態必須是 sim_state_ready(使用getsimstate()判斷).

tm.getsimoperatorname();//string 服務商名稱, sim卡的狀態必須是 sim_state_ready(使用getsimstate()判斷).

tm.getsimstate();//int sim的狀態資訊

sim_state_unknown 未知狀態 0

sim_state_absent 沒插卡 1

sim_state_pin_required 鎖定狀態,需要使用者的pin碼解鎖 2

sim_state_puk_required 鎖定狀態,需要使用者的puk碼解鎖 3

sim_state_network_locked 鎖定狀態,需要網路的pin碼解鎖 4

sim_state_ready 就緒狀態 5

tm.isnetworkroaming();// 是否漫遊(在gsm用途下)

android 6.0對許可權做了諸多限制,以上是否仍然行之有效,有待驗證.

[2]

android 獲取 imei號碼

核心 imei telephonymanager getsystemservice telephony service getdeviceid 1.加入許可權 在manifest.xml檔案中要新增 2.建立日期 2010 4 29 下午05 02 47 package import import ...

Android 獲取手機號碼及IMEI碼

package cn.sd.sx.atelimei import android.content.context import android.os.bundle import android.telephony.telephonymanager import android.widget.text...

獲取手機號碼 和IMEI

nsuserdefaults standarduserdefaults valueforkey sbformattedphonenumber 獲取手機的imei import message networkcontroller.h networkcontroller ntc networkcontr...