Android获取序列号

我试图以编程方式获取设备序列号。 我使用了以下行:

Build.SERIAL 

返回的内容如下:

95b9efad04ad28

但是,我进入设备上的设置,我可以看到它显示一个不同的字符串:

在此处输入图像描述

有人能指出我正确的方向吗?

这对我有用:

 String serialNumber; try { Class c = Class.forName("android.os.SystemProperties"); Method get = c.getMethod("get", String.class, String.class); serialNumber = (String) get.invoke(c, "sys.serialnumber", "error"); if (serialNumber.equals("error")) { serialNumber = (String) get.invoke(c, "ril.serialnumber", "error"); } } catch (Exception e) { e.printStackTrace(); } 

根据设备的制造商和Android版本,有几种方法可以获得该数字:

 public static String getSerialNumber() { String serialNumber; try { Class c = Class.forName("android.os.SystemProperties"); Method get = c.getMethod("get", String.class); serialNumber = (String) get.invoke(c, "gsm.sn1"); if (serialNumber.equals("")) serialNumber = (String) get.invoke(c, "ril.serialnumber"); if (serialNumber.equals("")) serialNumber = (String) get.invoke(c, "ro.serialno"); if (serialNumber.equals("")) serialNumber = (String) get.invoke(c, "sys.serialnumber"); if (serialNumber.equals("")) serialNumber = Build.SERIAL; // If none of the methods above worked if (serialNumber.equals("")) serialNumber = null; } catch (Exception e) { e.printStackTrace(); serialNumber = null; } return serialNumber; } 

取自这个要点 。

这不是你的答案?:

 TelephonyManager tManager = (TelephonyManager)myActivity.getSystemService(Context.TELEPHONY_SERVICE); String uid = tManager.getDeviceId(); 

我在这里发现了它

我试图以编程方式获取设备序列号

此function在Android上已经过了很长时间。 有些设备会返回null ,有些会为所有设备返回相同的ID等。如果您的应用使用的是Google Play服务,请使用InstanceId ,或者看看这个,但现在很古老,但仍然有效, 博客文章 。

在你的活动中试试这个

  public static String getDeviceId(Context context) { final String deviceId = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); if (deviceId != null) { return deviceId; } else { return android.os.Build.SERIAL; } } 

由于Android ID在许多设备和Android构建中都被破坏,我使用的是Android ID和设备WIFI-MAC地址的混合,这是每台设备唯一的。 两者都用于创建UUID,无论Android ID是否为null,UUID始终是唯一的。

尝试一下这样的事情:

 final WifiManager wm = (WifiManager) myAct.getSystemService(Context.WIFI_SERVICE); String macAddr = null; if (wm != null) macAddr = wm.getConnectionInfo().getMacAddress(); String androidId = Secure.getString(myAct.getContentResolver(), Secure.ANDROID_ID); if (androidId == null) androidId = "0000000000000000"; if (macAddr == null || macAddr.contains("\\s+") || !macAddr.contains(":")) macAddr = "00:00:00:00:00:00"; UUID deviceUuid = new UUID(macAddr.hashCode(), androidId.hashCode()); String deviceId = deviceUuid.toString();