Android 获取设备IMEI号的奇怪问题

Android 获取设备IMEI号的奇怪问题,android,imei,Android,Imei,我在android中使用以下代码来获取手机的IMEI号码 TelephonyManager telephonyManager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE); String imei = telephonyManager.getDeviceId().toString(); 我已经在很多手机上测试过了 1) 三星王牌(froyo) 2) 银河系 3) S2星系 4) 三星Geo(姜饼) 工作

我在android中使用以下代码来获取手机的IMEI号码

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);
        String imei = telephonyManager.getDeviceId().toString();
我已经在很多手机上测试过了

1) 三星王牌(froyo) 2) 银河系 3) S2星系 4) 三星Geo(姜饼)

工作完美,并给出IMEI编号

但在以下设备上运行相同的代码时,我什么也得不到:(

安卓Pantech

有谁能告诉我会出现什么问题,或者如果我使用Device_ID来唯一标识android设备,这对所有设备都有效吗

还有一件事我在论坛上读到过,它有时是空的,很少有著名的设备提供相同的设备ID

有人指出,唯一识别设备的最佳方法是什么,并且这段代码应该适用于所有设备


任何帮助都将不胜感激。

没有sim卡的设备没有IMEI号码。 您可以读取WIFI-MAC地址(假设每个android设备都有WIFI)

有人指出,唯一识别设备的最佳方法是什么,并且这段代码应该适用于所有设备


不幸的是,没有100%完美的方法来识别Android设备。这是因为谷歌没有提供一个可靠的方法。相反,它建议跟踪应用程序安装(相对于跟踪设备)。这里有一个很好的说法:。

在我的想法中,我创建了一个逻辑来获得所有设备的独特价值。 请看看这个,如果失败了请纠正我。 我在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);
}
公共静态字符串getDeviceId(上下文){
final TelephonyManager tm=(TelephonyManager)context.getSystemService(context.TELEPHONY_服务);
最终字符串tmDevice、tmSerial、Android;
tmDevice=”“+tm.getDeviceId();
tmSerial=”“+tm.getSimSerialNumber();
Android=“”
+android.provider.Settings.Secure.getString(context.getContentResolver(),android.provider.Settings.Secure.android_ID);

UUID deviceUuid=新的UUID(android.hashCode(),((long)tmDevice.hashCode()是的。所有设备(计算机、设备等)的每个MAC地址都是唯一的。我们如何获得android和ios设备的wifi地址/id我想知道它,因为Pandroid_id是唯一且不变的答案:)ANDROID_ID将在用户刷新设备时更改,并且可能在操作系统升级时更改。很抱歉现在发布此信息。