我在android中使用以下代码来获取IMEI电话号码
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);
String imei = telephonyManager.getDeviceId().toString();
我在很多手机上测试了它
1)三星王牌(froyo) 2)Galaxy S. 3)Galaxy S2 4)三星Geo(生姜面包)
完美无缺,并提供IMEI号码
但是在以下deivce上运行相同的代码时,我什么也得不到:(
Android Pantech
任何人都可以指导我可能出现的问题,或者我是否使用Device_ID来唯一识别Android设备是否适用于所有设备?
还有一件我在论坛上读过的东西有些时候是空的,很少有着名的设备给出相同的Device_ID
任何人都明白,唯一识别设备的最佳方法是什么,这段代码应该适用于所有设备?
任何帮助将不胜感激。
答案 0 :(得分:1)
没有SIM卡的设备没有IMEI号码。 你可以改为读取WIFI-MAC地址(假设每个Android设备都有WIFI)
答案 1 :(得分:1)
任何人都明白,唯一识别设备的最佳方法是什么,这段代码应该适用于所有设备?
不幸的是,没有100%完美的方式来识别Android设备。这是因为Google没有为此提供可靠的方法。相反,它建议跟踪应用程序安装(与跟踪设备相比)。这是一个很好的谈话:Identifying App Installations。
答案 2 :(得分:0)
我创建了一个逻辑,以便在我的想法中获得所有设备的独特价值。 如果它失败了,请看看这个并纠正我。 我在10-20台设备上测试并试图安装相同的ROM我得到了独特的价值,并且在刷新新的rom之后价值相同。 以下是获取唯一值的方法:
public static String getDeviceId(Context context) {
final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
final String tmDevice, tmSerial, androidId;
tmDevice = "" + tm.getDeviceId();
tmSerial = "" + tm.getSimSerialNumber();
androidId = ""
+ android.provider.Settings.Secure.getString(context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
UUID deviceUuid = new UUID(androidId.hashCode(), ((long) tmDevice.hashCode() << 32) | tmSerial.hashCode());
String deviceId = deviceUuid.toString();
return deviceId;
/*Below line fails on android 4.4 devices sometime so i made the above lines*/
// return Secure.getString(activity.getContentResolver(), Secure.ANDROID_ID);
}