Android设备的唯一标识符-不可用



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

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

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

根据Android最佳实践的定义,您不应使用任何硬件ID,如IMEI、MAC地址等。

这就给你留下了谷歌广告ID(GUID(或Firebase安装ID(FID(,或者你可以创建自己的唯一ID解决方案,这些解决方案都是软件生成的ID,用户可以通过工厂重置等方式重置。

如果您可以接受这样一个事实,即一些小样本量的用户仍然能够重置当前公司所期望的设备ID,那么您可以使用Account Manager API来共享应用程序生成的ID。尽管这用于通过共享令牌和用户名为公司的所有应用程序创建单一登录,但您可以重新调整Account Manager API的用途以共享唯一ID。无论何时安装应用程序,都要将您的唯一ID写入Account Manager,当安装新应用程序时,请检查此ID是否已存在,如果已存在,则使用相同的ID。否则,创建一个新ID并写入Account Manager。

尽管如此,在某些使用情况下,同一部手机将由一个新的ID表示,但这种特殊情况将是部分的,IMHO可能会被忽略。

最新更新