【问题标题】:Unique Identifier for Android Device - UnavailableAndroid 设备的唯一标识符 - 不可用
【发布时间】:2023-01-19 14:13:22
【问题描述】:

我想为我的图书馆使用唯一标识符,因为同一部手机中的多个应用程序可以使用相同的唯一 ID。例如 Android 手机 A - 手机 A 中可以有 3 个应用程序,所有 3 个应用程序都集成了相同的库,因此所有 3 个应用程序必须使用相同的 ID 来将其标识为 1 个设备,而不是有 3 个不同的 ID。此外,此应用程序可以从 3 台不同的构建机器上发布,并且应用程序包名称可能并不总是为人所知。

  • 我尝试过使用广告 ID,但并非所有手机都可以使用它,很少有手机提供访问权限,但很少有人无法检索到它。
  • IMEI - 需要额外的权限并且在 android 10 之后无法实现,因为大多数实现的结果都是空字符串
  • 我已经尝试过唯一的 Android ID,但如果您有 2 台不同的构建机器用于不同或相同的 apk,它将分配 2 个不同的 Android ID 而不是 1 个。
  • 尝试了共享首选项、广播接收器、内容提供程序和文件 R&W 方法来创建自己的唯一标识符,但都无法实现。
  • 至于广播接收器,两个应用程序需要同时处于活动状态才能共享信息
  • 因为内容提供者只能有 1 个同名的内容提供者,如果创建的特定应用程序内容提供者被删除,内容提供者也被删除。
  • 共享首选项需要为其他应用程序提供包名称,并且读取模式不可用。它不适用于库包名称,它需要应用程序包名称。
  • 文件 R&W - 有些手机可以工作,有些不行,有时在删除文件后,它仍然显示文件存在,有些手机制造商不允许从公共目录读取。

测试的设备: 三星 - Android 9、10 和 11 MI - Android 9、10 和 11 华为-Android 9 和 10

【问题讨论】:

  • 您希望您的图书馆能够跨多个应用程序跟踪同一设备?
  • 是的@TaranmeetSingh

标签: android


【解决方案1】:

正如Android Best Practices你所定义的不应使用任何硬件 ID如 IMEI、MAC 地址等。

剩下的就是 Google 广告 ID (GUID) 或 Firebase 安装 ID (FID),或者您可以创建自己的唯一 ID 解决方案,这些都是软件生成的 ID用户可以通过恢复出厂设置之类的方式对其进行重置。

如果您对一些小样本用户仍然能够重置当前公司期望的设备 ID 这一事实没有意见,那么您可以使用 Account Manager API 共享应用程序生成的 ID。虽然这用于通过共享令牌和用户名为公司的所有应用程序创建单一登录,但您可以重新利用客户经理 API用于共享唯一 ID。每当安装应用程序时,将您的唯一 ID 写给客户经理,当安装新应用程序时,检查此 ID 是否已存在,如果使用相同的 ID,则创建一个新 ID 并写给客户经理。

仍然会有一些用例,其中同一部手机将由新 ID 表示,但这种例外情况将是零星的,恕我直言,可以忽略不计。

【讨论】:

  • 感谢客户管理器 API 方法,我正在研究它,但我不希望我的最终用户能够在设置 -> 帐户下看到我的图书馆以编程方式登录的内容,因为它不是应用程序,它可以是与同一设备内的多个其他应用程序集成,因此它不符合我的商业模式。您是否知道他们的任何其他方法可以实现类似的目标但最终用户无法查看? @Taranmeet辛格
  • @AHMED 是的,最终用户可能怀疑不寻常的登录是可以理解的,那么我相信你必须提供一些 AIDL 接口,可以与具有相同库的其他应用程序对话,但我相信大多数应用程序开发人员可能不喜欢你在那里应用程序对话的想法多个应用程序,它们对其没有任何控制权,有些应用程序可能会使用 proguard,这可能会剥离你的库的那部分。
  • 没错,我同意。目前我已经实施了帐户管理器 API 方法,每当我的初始应用程序被删除时,它也会删除为唯一标识创建的帐户。这是客户经理的默认机制还是我做错了什么? @Taranmeet辛格
  • @AHMED 是的,这是默认机制,但您应该只在启动应用程序时从客户经理读取数据,然后在您的应用程序首选项中保存相同的数据,如果用户在下一个应用程序启动时删除第一个应用程序,请检查客户经理是否帐户不存在使用您在共享首选项中的数据重新创建
  • 谢谢,我正在尝试实现客户经理的方法,但是当我尝试从一台构建机器上使用多个应用程序安装我的 SDK 时,我能够完成我的任务并从客户经理那里检索数据。但是,当我尝试使用相同的代码从我同事的构建机器(我指的是另一台 PC)创建 apk 时,因为这也是我在使用 Android ID 时遇到的问题(它提供相同的 Android ID 如果我从同一构建机器/PC 创建 apk,如果从不同的构建机器运行相同的程序,则给出不同的 android ID)。
【解决方案2】:

@AHMED,您能找到解决方案吗?

【讨论】:

猜你喜欢
  • 2021-02-20
  • 2015-08-31
  • 2022-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
相关资源
最近更新 更多