Android Id及其可靠性

时间:2012-12-19 08:11:09

标签: java android security encryption uuid

我想为我的应用生成Uuid,所以我尝试了很多方法。

1)使用android.os.Build.SERIAL获取设备序列号(结果返回“未知”)

2)处理设备ID(我不知道平板设备会返回什么)

3)使用android.provider.Settings.Secure.ANDROID_ID获取Android ID(似乎是android 2.2版本的一些问题)

4)使用java.util.UUID

生成Uuid

5)使用android.os.Build属性生成伪Uuid

所有这些方法都显示出一些问题。所以我很困惑哪个选择?谁能建议我最好的方法?

Android Developer Blog表示android id将是唯一的

此外,我听说设备的Android ID可以在出厂重置或操作系统更新时更改。

那么在工厂重置或操作系统更新期间是否有机会重复生成新的android id?

注意:假设一个条件

我的问题是会发生什么同样的2设备相同制造商的模型将进行恢复或os更新.Android id将会改变。我在问这个新的身份。两个设备中的android id是否有相同的机会?

3 个答案:

答案 0 :(得分:1)

是的,ID有可能重复,但可以忽略不计。

ANDROID_ID有2 ^ 64个可能的值,它们是通过一些随机函数生成的。但是,您很可能不会看到重复的值 - 搜索有关GUID唯一性的讨论以获得重点。

简而言之:您可以假设ANDROID_ID是唯一的。

答案 1 :(得分:1)

每次初始化设备时都会生成ANDROID_ID(重置后等)。它不依赖于型号,序列号等。即使你有两个相同的设备,它们在复位后的ANDROID_ID也应该是不同的。 ID不是特别特殊,除了它是设备的全局ID。您可以使用应用程序的UUID实现相同的功能。

答案 2 :(得分:0)

在这个link中讨论了为Android设备创建唯一ID的问题。简而言之,请使用此功能。

import android.provider.Settings.Secure;

private String android_id = Secure.getString(getContext().getContentResolver(),
                                                        Secure.ANDROID_ID);