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