Java Android及其可靠性

Java Android及其可靠性,java,android,security,encryption,uuid,Java,Android,Security,Encryption,Uuid,我想为我的应用程序生成Uuid,所以我尝试了很多方法 1) 使用android.os.Build.Serial获取设备序列号(结果返回“未知”) 2) 处理设备id(我不知道如果是平板电脑设备,它会返回什么) 3) 使用Android.provider.Settings.Secure.Android\u id获取安卓id(安卓2.2版本似乎有问题) 4) 使用java.util.Uuid 5) 使用android.os.Buildproperties生成伪Uuid 所有这些方法都显示出一些问题。

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

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

2) 处理设备id(我不知道如果是平板电脑设备,它会返回什么)

3) 使用
Android.provider.Settings.Secure.Android\u id
获取安卓id(安卓2.2版本似乎有问题)

4) 使用
java.util.Uuid

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

所有这些方法都显示出一些问题。所以我不知道该选哪一个?有人能给我推荐最好的方法吗

表示android id将是唯一的

我还听说设备的安卓id可以在工厂重置或操作系统更新时更改

那么,在工厂重置或操作系统更新期间,是否有可能复制新的android id

注:假设一个条件


我的问题是,在恢复或操作系统更新的情况下,相同制造商的相同2设备型号会发生什么。Android id会改变。我在问这个新的id。两台设备上的android id是否有相同的机会?

为android设备创建唯一的id已经在这篇简短的使用文章中进行了生动的讨论

import android.provider.Settings.Secure;

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

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

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


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

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

我知道如何创建安卓id。我的问题是,在恢复或操作系统更新的情况下,相同制造商的相同2设备型号会发生什么。Android id会改变。我在问这个新身份证。android id在这两款设备中是否有相同的机会?android_id是否适用于所有android设备,包括平板电脑和CDMA设备(我知道它是第一次启动操作系统时生成的,所以ANDROID_ID会出现。不过我只是想保证这一点。我已经用2-3台手机设备进行了检查,不幸的是,我没有机会用平板电脑进行测试)我知道它是在第一次初始化设备时生成的。我只想知道除了电话和CDMA(它像收音机一样工作。我无法用这些设备进行测试)以外的所有设备是否都是相同的。它不取决于设备型号或收音机功能。然而,一些早期的手机(由Motorola,IIRC提供)拥有相同的ID和一些返回值
null
。现在应该更新大部分内容,但您可能希望以防万一处理它。或者只使用您自己的UUID。您的最终目的是什么,为什么要使用ANDROID\u ID?编辑注意:请不要引入额外的键入:)或更改句子的含义。