Android:Android ID在应用程序更新时发生更改。而是一些独特的东西?

Android:Android ID在应用程序更新时发生更改。而是一些独特的东西?,android,android-identifiers,Android,Android Identifiers,我得到的安卓id代码如下: DeviceID = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID); 但每次更新都会发生变化。这是一种错误的获取方式,还是我可以使用任何不同的方法,每次都不会改变并保持同一设备的唯一性?通常不鼓励只使用链接的答案,但在这种情况下,我看不到替代方法,因为这篇文章对各种不同的API级别进行了深入的讨论并与之相关 请参阅文档了解正确的处理方法(根据谷歌的

我得到的安卓id代码如下:

DeviceID = Secure.getString(this.getContentResolver(),
                    Secure.ANDROID_ID);

但每次更新都会发生变化。这是一种错误的获取方式,还是我可以使用任何不同的方法,每次都不会改变并保持同一设备的唯一性?

通常不鼓励只使用链接的答案,但在这种情况下,我看不到替代方法,因为这篇文章对各种不同的API级别进行了深入的讨论并与之相关

请参阅文档了解正确的处理方法(根据谷歌的说法):


改用
硬件ID
,不应该改变太多

以下是要尝试的代码:

/**
 * Returns the embedded <i>hardwareID</i>
 * @param context which {@link Context} to use
 * @return the hardwareID
 */
public static String getHardwareId(Context context) {
    return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
}
/**
*返回嵌入的硬件ID
*@param context要使用的{@link context}
*@returnthehardwareid
*/
公共静态字符串getHardwareId(上下文){
返回Settings.Secure.getString(context.getContentResolver(),Settings.Secure.ANDROID);
}

不幸的是,没有任何东西符合您的要求

当谈到Android设备的唯一标识符时,有很多不同的选项,但没有一个是100%保证工作的。而且,要获得大多数权限,需要向用户请求令人讨厌的权限

我可以提出两个选择:

  • 使用谷歌广告ID-每个设备都是唯一的,只有在用户手动重置时才会更改。提取它不需要其他权限
  • 您可以自己为每个设备生成一个唯一的密钥(使用类似UUID的东西)并将其存储在设备上(共享pref、文件、数据库…)
    这基本上是他已经在使用的代码,但包装在一个函数中。不,不是。请再读一遍。设置已添加。它变化很大吗?它应该变化很大,这是您通过
    设置获得的结果。安全
    它应该在完整的设备重新安装之间保留。代码是相同的。通过设置访问它不会做任何事情,因为这是推断出来的。你是在真正的设备上运行还是在模拟器上运行?谢谢,伙计,我会像第二种方法一样阅读iti,但它会在卸载和安装时重置吗?更新呢?这是这种方法的缺点。卸载将有效地清除密钥。问题是评估这是否会在您的用例中造成真正的问题。也许你可以用这个来解决这个问题