2024年4月5日发(作者:)

android平台获取手机IMSI,IMEI,序列号,和手机号的方法

android平台获取手机IMSI,IMEI ,序列号,和手机号的方法

1)获取运营商sim卡imsi号,

String IMSI =(

TY_IMSI);

2)获取IME标识两种方法(手机唯一的标识)

String imei =((TelephonyManager)

temService(TELEPHONY_SERVICE)).getDeviceI

d();

String IMEI

=(

TY_I MEI)

不过纯APP开发SystemProperties,TelephonyProperties汇报

错误,因为

Properties在SDK的库中是没有的,需要把

Android SDK 目录下data 下的文件加到当前工程的附

加库路径中,就可以Import。

如果Android Pad没有IMEI,用此方法获取设备ANDROID_ID:

String

2. 获取手机号

TelephonyManager

tm=(TelephonyManager)temService(Context.

TELEPHONY_SERVICE); String number = e1Number();

如下使用例子:

public static String getIMEI() {

return

((TelephonyManager)().getSystemService(

ONY_SERVICE)).getDeviceId();

android_id =

ing(tentResolver(),D_ID);

}

public static String getAndroidId() {

return ing(

().getContentResolver(),

D_ID);

}

public static String getSimSerialNumber() {

return

((TelephonyManager)().getSystemService( Co

ONY_SERVICE)).getSimSerialNumber();

}

public static String getSerialNumber1() {

;

}

/**

* getSerialNumber

* @return result is same to getSerialNumber1()

*/

public static String getSerialNumber(){

String serial = null;

try {

Class c =e("Properties");

Method get =hod("get", );

serial = (String)(c, "no");

} catch (Exception e) {

tackTrace();

}

return serial;

}

public static void displayDevice(){

String dest_imei = getIMEI();

String androidId =getAndroidId();

Log.i(TAG, "isTestDevice:"

+"nIMEI:"+dest_imei

+" nANDROID ID:" +androidId

+" nSerialNumber:"+ getSerialNumber()

+"nSimSerialNumber:" + getSimSerialNumber()

);

}

运行结果示例:

IMEI:868331011992179

ANDROID ID:5a3b287f2b13bef8

SerialNumber:021YLJ212C001879

SimSerialNumber:898600810110

3. 获取一个能唯一标识每台Android设备的序号与服务器通信

所以如果你想得到设备的唯一序号,

iceId() 就足够了。但很明显暴露了

DeviceID会使一些用户不满,所以最好把这些id加密了。实际上加密

后的序号仍然可以唯一的识别该设备,并且不会明显的暴露用户的特

定设备,例如,使用

de() ,结合UUID:

String getuniqueId(){

TelephonyManager tm = (TelephonyManager)

getBaseContext().getSystemService(ONY_SE

RVICE);

Stringimei=iceId();

StringsimSerialNumber=SerialNumber();

String

=ing(

getContentResolver(),

androidId

ROID_ID);

UUID deviceUuid =newUUID(de(),

((long)de() << 32)

|de());

String uniqueIuniqueId d= ng();

returnuniqueId;

}

最后的deviceID可能是这样的结果: 00000000-54b3-e7c7-

0000-000046bffd97

得到设备独一无二的标识:可以用于客户端与服务端通信的唯一

标识

根据测试:

·所有的设备都可以返回一个iceId()

·所有的GSM设备(测试设备都装载有SIM卡) 可以返回一个

SerialNumber()

·所有的CDMA 设备对于getSimSerialNumber() 却返回一个空

值!

·所有添加有谷歌账户的设备可以返回一个ANDROID_ID

·所有的

了谷歌账户)

·目前尚未测试的:没有SIM卡的GSM设备、没有添加谷歌账户

的GSM设备、处于飞行模式的设备。

CDMA设备对于ANDROID_ID 和

iceId()返回相同的值(只要在设置时添加