我也面临同样的问题,但就我而言,我有一种返回 UUID 的“备份”代码。
这是您可以使用的代码:
String uniqueID = UUID.randomUUID().toString();
如果您想要“安装唯一标识符”,此代码很有用,但它不能用作设备唯一标识符,因为如果用户卸载并重新安装您的应用程序,返回的 UUID 将与上一个不同。
在我的例子中,我使用 UUID.nameUUIDFromBytes 通过给定的“名称”生成 UUID,并且我使用 Settings.Secure.ANDROID_ID 作为 UUID 的“名称”。使用此方法,您“授予”返回的 UUID 将是相同的,除非用户进行出厂重置。
代码如下:
String androidId = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.ANDROID_ID);
UUID androidId_UUID = UUID
.nameUUIDFromBytes(androidId.getBytes("utf8"));
String unique_id = androidId_UUID.toString();
到目前为止,一切正常,但问题是:自 Android 10 发布以来,Google 不建议使用任何类型的“硬件标识符”,其中包括 Settings.Secure.ANDROID_ID。这实际上是我关心的问题,因为在我工作的公司中,我们使用 IMEI 或此 UUID 来识别我们的客户用户并定义用户是否尝试登录多个设备,这是我们的规则所不允许的,并建立一些静力学。如果同一设备的 UUID 不是唯一的,我们将不得不审查我们所有的用户访问控制。
这里是关于唯一标识符良好实践的 Android 开发者链接。
https://developer.android.com/training/articles/user-data-ids
这里是同一个链接,但有一个锚点,其中谷歌描述了一些用例和每个用例的唯一标识符的最佳选择。
https://developer.android.com/training/articles/user-data-ids#common-use-cases
没有一个用例适合我,所以我仍在寻找更好的解决方案。
我希望这可以帮助某人。