0

我正在开发一个 Android 应用程序,其中单个用户只能通过使用相同的 Gmail 帐户(用于登录)在一台设备上使用该应用程序。如果用户想在不同的设备上登录应用程序,他将无法使用相同的 Gmail 帐户进行登录。我在我的应用程序中使用 ANDROID_ID 来使用以下命令识别唯一设备 -

Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);

在这种情况下它是正确的选择吗,因为我在开发者网站上看到

    Avoid using hardware identifiers. In most use cases, you can avoid using hardware identifiers, such as 
SSAID (Android ID), without limiting required functionality.

             Android 10 (API level 29) adds restrictions for non-resettable dentifiers, which include both 
            IMEI and serial number. Your app must be a device or profile owner app, have
         special carrier permissions, or have the READ_PRIVILEGED_PHONE_STATE privileged permission
     in order to access these identifiers.

文档链接-

https://developer.android.com/training/articles/user-data-ids

或者有没有其他方法可以完成上述操作?提前致谢。

4

2 回答 2

1

如果可能,请在您的用例中使用FirebaseInstanceId。Firebase 实例 ID 为每个应用实例提供了一个唯一标识符,并提供了一种对操作进行身份验证和授权的机制。

  1. 实例 ID 是稳定的,除非:

  2. 应用删除实例 ID

  3. 应用程序在新设备上恢复

  4. 用户卸载/重新安装应用程序

  5. 用户清除应用数据

如果您不想使用 FirebaseInstanceId,您可以查找自定义的全局唯一 ID (GUID) 来唯一标识应用实例。

String uniqueID = UUID.randomUUID().toString();

您可以使用此 GUID 来识别是否只有一个设备连接到 gmail id。

于 2020-01-22T04:13:49.277 回答
0

你可以定义自己的规则来生成一个unqiue id,然后保存到sp。每次您都应该检查,获取并与服务提供的数据进行比较。

或者您也可以使用建议 ID 作为 unqiue 设备 ID。

于 2020-01-22T04:00:20.633 回答