android.os.Build.SERIAL是唯一的吗?

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

我不确定android.os.Build.SERIAL是否独一无二。

有谁知道这个?

感谢和问候。

Solutions Collecting From Web of "android.os.Build.SERIAL是唯一的吗?"

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

通常,尝试阅读所有可能的ID,并使用任何可用的ID。 请参阅此文章以获取指导 。

Serial仅在API中公开:9。 但你可以使用reflection在旧版本中获得它。 然而,文档提到“如果可用”,所以我想不要依赖它。

String deviceSerial = (String) Build.class.getField("SERIAL").get( null); 

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

 String android_id = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID); Log.d("Android","Android ID : "+android_id); 

如果它在那里,那么它应该是独一无二的。 但无法保证此属性已设置。 它也是API 9.不幸的是,没有简单的方法可以唯一地识别设备。 一些属性如SERIAL 可以存在,其他属性如ANDROID_ID为非唯一,其他一些像MAC取决于WIFI的存在或其状态(如果wifi模块关闭,您可能无法读取其MAC)。 有些像IMEI甚至无法读取设备有手机模块。 因此,最好的方法是尽可能多地收集数据,并尝试构建您最有可能考虑使用唯一设备ID的内容

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

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

MAC,IMEI和SERIAL的组合怎么样?

你只需要处理它们都可以是非存在的事实。 在没有SIM卡的旧手机上。

我发现很奇怪MAC会返回null。 这不应该是可能的,因为移动设备没有MAC是没有意义的。

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