有没有办法在Android设备上获得唯一的硬件ID?

时间:2012-10-03 12:09:57

标签: android hardware-id

现在我的算法仅基于IMEI。这就是问题:有些设备没有无线电模块,所以它们也没有IMEI 我需要唯一的参数(CPU ID,闪存ID,MAC等)来生成ID而不使用IMEI。 以及如何使用Java获取它们。最好没有Root 谢谢

5 个答案:

答案 0 :(得分:3)

使用Build.SERIAL获取Android设备的唯一序列号。这将返回一个字符串值。在模拟器中,此代码可能会返回字符串“unknown”。但尝试用设备。它确实有效...... :)

String id=Build.SERIAL;

答案 1 :(得分:2)

ANDROID_ID

更具体地说,是Settings.Secure.ANDROID_ID。这是在设备首次启动时生成并存储的64位数量。擦除设备时会重置。

ANDROID_ID似乎是唯一设备标识符的不错选择。有一些缺点:首先,它在2.2之前的Android版本(“Froyo”)上并非100%可靠。此外,在主要制造商的流行手机中至少有一个被广泛观察到的错误,其中每个实例都具有相同的ANDROID_ID。

This could help you

答案 2 :(得分:1)

您可以使用android.os.Build.getSerial()代替android.os.Build.SERIAL

  

android.os.Build.SERIAL - >该字段在API级别O中已弃用。请改用getSerial()。   资源:   https://developer.android.com/reference/android/os/Build.html

答案 3 :(得分:0)

您可以使用内置的Setting.secure来获取设备ID。在重置出厂设置之前,此设备ID是固定的。

 Settings.Secure.getString(getContentResolver(),Settings.Secure.ANDROID_ID);

这是您的设备的唯一ID,在您重置为出厂设置之前它是稳定的。

答案 4 :(得分:-2)

下面的代码可以帮助您获取设备ID

 String ts = Context.TELEPHONY_SERVICE;
    TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(ts);
    String imsi = mTelephonyMgr.getSubscriberId();
    String imei = mTelephonyMgr.getDeviceId();