我正在使用
Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
但是return的值为空。
有什么主意吗?
谢谢
答案 0 :(得分:1)
您是否正在使用模拟器?模拟器为此系统属性返回null / empty值。
此外,有趣的是,Android / Google还警告了有关ANDROID_ID here使用情况的警告
ANDROID_ID似乎是唯一设备标识符的不错选择。那里 缺点:首先,在Android版本上并非100%可靠 低于2.2(“ Froyo”)。另外,至少有一个 一家主要制造商生产的流行手机中的错误已广为人知, 每个实例具有相同的ANDROID_ID。
另外,请注意,如果您的应用定位到Android Oreo或更高版本,则此warning可能是相关的
注意:对于在将设备更新为以下版本之前安装的应用 版本的Android 8.0(API级别26)或更高版本, 如果先卸载应用然后重新安装,则ANDROID_ID会更改 在OTA之后。要在OTA之后执行的所有卸载中保留值 Android 8.0或更高版本,开发人员可以使用键/值备份。
答案 1 :(得分:1)
公共静态字符串getDeviceID(Context Ctx){
String android_id = Secure.getString(Ctx.getContentResolver(),
Secure.ANDROID_ID);
return android_id;
}
public static String getImeiNumber(Context Ctx) {
final TelephonyManager telephonyManager = (TelephonyManager) Ctx.getSystemService(Context.TELEPHONY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//getDeviceId() is Deprecated so for android O we can use getImei() method
return telephonyManager.getImei();
} else {
return CommonUtils.getDeviceID(Ctx);
}
}