29

我想为适用于手机和平板电脑的 android 设备使用唯一 ID。(IMEI 不适用于没有 SIM 卡设备,有时 MAC 地址返回 null)

我不确定 android.os.Build.SERIAL 是否唯一。

有人知道吗?

感谢和问候。

4

6 回答 6

22

是的,但请注意,它仅在 API 级别 9 中添加,并且可能不会出现在所有设备上。要在早期平台上获得唯一 ID,您需要读取 MAC 地址或 IMEI 等信息。

通常,尝试阅读所有可能的 ID,并使用可用的 ID。请参阅这篇文章以获得指导

于 2012-11-20T10:35:23.140 回答
10

您可以使用 Build serial 和 android ID 来制作您自己的唯一 ID。

String serial =    Build.SERIAL;
String android_id =Secure.getString(context.getContentResolver(),
                   Secure.ANDROID_ID);

String myKey=serial +android_id ;
于 2016-10-14T02:58:09.883 回答
3

序列号仅在 API:9 中公开。但是您可以使用反射在旧版本中获得它。但是文档提到“如果可用”,所以我想不要依赖它。

String deviceSerial = (String) Build.class.getField("SERIAL").get(
                    null);
于 2013-10-28T13:30:19.660 回答
3

我认为对于唯一 ID,您应该使用 android ID。以下是获取 Android Id 的代码。

String android_id = Secure.getString(this.getContentResolver(),
            Secure.ANDROID_ID);
Log.d("Android","Android ID : "+android_id);
于 2016-08-26T08:44:57.067 回答
2

如果它在那里,那么它应该独一无二的。但不能保证已设置此属性。它也是 API 9。不幸的是,没有简单的方法来唯一地识别设备。像所说的SERIAL这样的一些属性可以存在,像ANDROID_ID这样的其他属性不是唯一的,像MAC这样的其他一些属性取决于WIFI的存在或其状态(如果wifi模块关闭,您可能无法读取它的MAC)。即使设备有电话模块,也无法读取 IMEI 等一些设备。所以最好的方法是收集尽可能多的数据,并尝试构建一些你最有可能考虑唯一设备 ID 的东西

于 2012-11-20T11:38:01.857 回答
1

MAC、IMEI 和 SERIAL 的组合呢?

您只需要处理它们都可能不存在的事实。在没有 SIM 卡的旧手机上。

我只是觉得 MAC 会返回 null 很奇怪。恕我直言,这应该是不可能的,因为移动设备没有 MAC 是没有意义的。

可能有 2 个 MAC 地址,但在某些情况下它们可能无法访问。

于 2012-11-20T10:41:54.567 回答