2

我正在实施一种唯一标识设备的方法。

建筑师向我发送了以下规格:

带 Wifi + 3G 的设备:IMEI 码

仅限 Wifi - MacAddress

两者都需要制造商+模型来完成id。

我的问题是:

  1. 如何从设备获取 IMEI?

  2. 如何从设备中获取制造商和型号?(我看到 Build 类上有一些常量,但不知道在哪里使用它们)

  3. 有只有3G的设备吗?

  4. 我如何知道设备是仅 wifi、wifi+3g 还是仅 3g(如果存在)?

此外,还提供了有关唯一标识符的建议。

PS:我已经能够通过 WifiManager 获取 MacAddres。

4

4 回答 4

2

您可以使用 TelephonyManager getDeviceID 方法。这应该返回 IMEI 或 MEID。有关构建信息,您可以查看 android.os.Build 和 android.os.Build.VERSION。此外,如果它是关于唯一标识您的应用程序安装,您可能需要通过(和/或向您的架构师展示)关于识别应用程序安装的开发人员博客文章

于 2011-05-17T15:56:53.260 回答
2
  1. How to get IMEI can be found in this question:How to get the device's IMEI/ESN programmatically in android? ;
  2. MANUFACTURER 和 MODEL 可以从android.os.BUILD类中检索。
  3. 从理论上讲,是的,可能有些设备没有 Wi-Fi 但有 3G。但我一个都没见过。
  4. 如果getSystemService(WIFI_SERVICE)返回null,则表示没有 Wi-Fi。
于 2011-05-17T15:56:56.977 回答
2
  1. android.telephony.TelephonyManager.getDeviceId() 为您提供“GSM 的 IMEI 和 CDMA 手机的 MEID 或 ESN”。

  2. Build.MODEL 是一个静态字段,所以你可以这样使用它,只要你先导入了 android.os.Build。

  3. 很有可能。

  4. 您可以尝试调用 Context.getSystemService(Context.WIFI_SERVICE) 并查看它是否为空,尽管我认为即使没有 wifi,该服务可能仍然存在(在这种情况下,我希望检查 wifi 以返回 DISABLED。 )

于 2011-05-17T15:58:13.537 回答
2

这些问题一直困扰着 Android 开发者,看看有没有唯一的 Android 设备 ID?

Android 开发团队试图在他们的博客中直接解决这些问题:http ://android-developers.blogspot.com/2011/03/identifying-app-installations.html

在回答您的最后一个问题时:只需在查询 SIM/MAC/Whatever 时测试 null ,然后采取相应措施。据报道,在某些情况下 MAC 会返回 null;看我的第一个链接。

于 2011-05-17T15:58:23.560 回答