我已经找到两种方法来获取android中的设备ID,但我不知道哪一个更好,它们之间有什么区别
方法1
public static String getDeviceId2(Context context) {
String androidId = Settings.Secure.getString(
context.getContentResolver(), Settings.Secure.ANDROID_ID);
return androidId;
}
方法2
public static String getDeviceId(Context context) {
if (PermissionManager.getInstance().hasSelfPermission(context, Manifest.permission.READ_PHONE_STATE) == true) {
return ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
} else {
return "";
}
}
答案 0 :(得分:0)
第一种方法是正确的方法。第二次在没有SIM卡的设备上工作
答案 1 :(得分:0)
ANDROID_ID
可以改变。在8.0中,它会在重新安装您的应用时发生变化
在Android 8.0(API级别26)及更高版本的平台上,a 64位数字(表示为十六进制字符串),每个都是唯一的 应用签名密钥,用户和设备的组合。 ANDROID_ID的值 通过签名密钥和用户确定范围。如果是工厂,价值可能会改变 重置是在设备上执行或APK签名密钥更改。对于 有关平台如何在Android中处理ANDROID_ID的更多信息 8.0(API级别26)及更高版本,请参阅Android 8.0行为更改。
注意:对于在将设备更新为之前安装的应用 版本的Android 8.0(API级别26)或更高版本的值 如果卸载并重新安装应用程序,则ANDROID_ID会更改 在OTA之后。在OTA之后保留跨卸载的值 Android 8.0或更高版本,开发人员可以使用密钥/值备份。
getDeviceId()
在8.0中弃用