IMEI:
1- 意义:
参考http://zh.wikipedia.org/zh-cn/IMEI 国际移动设备辨识码 ,共15位,和厂商,产地等有关。
2- 获取:
直接查看设备信息,设置-关于手机-状态信息-IMEI
可以通过代码 TelephoneManager getDeviceId() 方法,需要指定权限 android.permission.READ_PHONE_STATE
权限:<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
代码示例:
TelephonyManager telephonyManager ;
telephonyManager = (TelephonyManager)this.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
String imei = telephonyManager.getDeviceId();
Log.v("IMEI", imei);
结果:
3- 风险:
a)有些厂商定制机器获取到的值为空 或者 不同的机器返回同一个值
b)刷机会变化
IMSI:
1- 意义:
参考http://zh.wikipedia.org/wiki/国际移动用户识别码
国际移动用户识别码, 15位,通常存放在SIM卡中
2- 获取:
通过代码 TelephoneManager getSubscriberId(),需要指定权限 android.permission.READ_PHONE_STATE
权限:<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
代码示例:
TelephonyManager telephonyManager ;
telephonyManager = (TelephonyManager)this.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
String imsi = telephonyManager.getSubscriberId();
Log.v("imsi", imsi);
结果:
3- 风险:
由于和SIM卡相关,设备更换SIM卡,必然会引起变化,当没有imsi的时候,获取到的imsi为空串""
在有的机器上,通过代码也可能出现获取到的IMSI为空的情况
mac地址:
1- 获取:
直接查看,设置-关于本机-状态信息-WLAN MAC地址 或者 代码获取:通过WifiInfo getMacAddress()方法
权限:<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
代码示例:
WifiManager wifiManager;
wifiManager = (WifiManager)this.getApplication().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String macAddr = wifiInfo.getMacAddress();
Log.v("macAddr", macAddr);
结果:
2- 风险:
可能获取不到