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

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

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

有人知道吗?

感谢和问候。

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

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

一般来说,尝试阅读所有可能的ID,并使用可用的。 请参阅这篇文章的指导 。

串行只暴露在API:9。 但是你可以使用reflection来获取旧版本。 然而,文件提到“如果可用”,所以我想不要依赖它。

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

我认为对于独特的ID你应该使用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模块closures,你可能无法读取其MAC)。 有些像IMEI甚至不能读取甚至设备拿到手机模块。 因此,最好的方法是尽可能多地收集数据,并尝试构build一些您可能考虑的唯一设备ID

您可以使用Build serial和android ID来创build您自己的唯一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是没有意义的。

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