在 Android 中获取设备 ID 的最佳方法

Dip*_*hel 6 java android

我只是想知道获取设备 ID 的最佳方式是什么我有 2 个选项,要么使用下面需要运行时权限的代码android.permission.READ_PHONE_STATE-

private String android_id = Secure.getString(getContext().getContentResolver(),
                                                        Secure.ANDROID_ID); 
Run Code Online (Sandbox Code Playgroud)

或者

其次,我可以选择 UUID,它不需要任何运行时权限,但需要与用户数据(如电子邮件或电话)映射来识别。

String uniqueID = UUID.randomUUID().toString();
Run Code Online (Sandbox Code Playgroud)

如果有任何关于使用哪一种以及为什么使用的建议,我们将不胜感激。

谢谢

小智 9

安卓ID:

\n\n

设备首次启动时,会生成并存储一个随机值。该值可通过 Settings.Secure.ANDROID_ID 获得。它\xe2\x80\x99 是一个64 位数字,在设备的生命周期内应保持不变。ANDROID_ID 似乎是唯一设备标识符的不错选择,因为它\xe2\x80\x99s 可用于智能手机和平板电脑。

\n\n

问题: \n但是,如果在设备上执行恢复出厂设置,该值可能会更改。制造商生产的流行手机还存在一个已知错误,其中每个实例都具有相同的 ANDROID_ID。显然,该解决方案并不是 100% 可靠。

\n\n

通用唯一标识:

\n\n

由于大多数应用程序的要求是识别特定的安装而不是物理设备,因此如果使用 UUID 类,那么为用户获取唯一 ID 是一个很好的解决方案。

\n\n

问题: \nUUID.randomUUID() 方法为特定安装生成唯一标识符。您只需存储该值,您的用户将在下次启动应用程序时被识别。您还可以尝试将此解决方案与 Android 备份服务相关联,以便用户即使在其他设备上安装您的应用程序,也可以保留信息。

\n\n

结论:

\n\n

识别 Android 上的特定设备并不是一件容易的事情。有很多充分的理由可以避免这种情况。最好的解决方案可能是使用 UUID 解决方案来识别特定的安装。但是,如果您想绝对地识别物理上的特定设备,您可以尝试使用 ANDROID_ID 解决方案。不是 100% 可靠,但比其他解决方案更好。

\n