我已经在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 "";
}
}
发布于 2018-02-13 15:37:22
ANDROID_ID
可以改变。在8.0中,它在重新安装应用程序时发生变化。
在Android8.0 (API级别26)和更高版本的平台上,64位数字(表示为十六进制字符串)是每个应用程序签名密钥、用户和设备组合所特有的。ANDROID_ID的值是通过签名键和用户来限定范围的。如果在设备上执行工厂重置,或者如果APK签名密钥发生更改,则该值可能会更改。有关平台如何在Android8.0 (API级别26)及更高版本中处理ANDROID_ID的更多信息,请参见Android8.0行为更改。 注意:对于在将设备升级到Android8.0 (API 26)或更高版本之前安装的应用程序,如果应用程序被卸载,然后在安装后重新安装,ANDROID_ID的值就会发生变化。为了在OTA到Android8.0或更高版本后在卸载过程中保留值,开发人员可以使用键/值备份。
getDeviceId()
在8.0中被弃用
发布于 2018-02-13 15:35:12
第一种方法是正确的。第二,没有sim卡的设备无法工作。
https://stackoverflow.com/questions/48770202
复制相似问题