【问题标题】:How do I get information about a phone's IMEI in Android 10?如何在 Android 10 中获取有关手机 IMEI 的信息?
【发布时间】:2020-01-30 12:02:33
【问题描述】:

在 Android 10 之前,我使用 TelephonyManager API 来检索该信息,但它不再适用于 Android 10。

【问题讨论】:

标签: android android-permissions telephonymanager imei


【解决方案1】:

来自Android Developers Documentation Website

从 Android 10 开始,应用必须拥有 READ_PRIVILEGED_PHONE_STATE 特权权限才能访问设备的不可重置标识符,包括 IMEI 和序列号。

从 Google Play 商店安装的第三方应用无法声明特权。

如果您的应用没有权限并且您尝试询问有关不可重置标识符的信息,平台的响应会因目标 SDK 版本而异:

  • 如果您的应用面向 Android 10 或更高版本,则会发生 SecurityException。
  • 如果您的应用面向 Android 9(API 级别 28)或更低版本,如果应用具有 READ_PHONE_STATE 权限,该方法将返回 null 或占位符数据。否则,会发生 SecurityException。

如果您尝试访问它,它会引发以下异常: java.lang.SecurityException: getImeiForSlot: The user 10180 does not meet the requirements to access device identifiers.

【讨论】:

【解决方案2】:

我也面临同样的问题,但就我而言,我有一种返回 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

没有一个用例适合我,所以我仍在寻找更好的解决方案。

我希望这可以帮助某人。

【讨论】:

    猜你喜欢
    • 2011-03-17
    • 2023-03-28
    • 1970-01-01
    • 2014-11-03
    • 2014-10-20
    • 2023-03-31
    • 2012-05-27
    • 2021-11-04
    • 1970-01-01
    相关资源
    最近更新 更多