Серийный номер от устройства Samsung, работающего под управлением Android

У меня есть Samsung Galaxy Tab 2.0 (7 ")

На обратной стороне этого устройства есть серийный номер формата

RF3C6000MNA

Когда я перехожу к настройкам своего устройства и выбираю О Device- > Status- > Serial Number, этот номер также появляется.

Я не могу, однако, найти способ извлечения этого числа программно.

Я видел множество статей об извлечении серийного номера, но это возвращает совершенно другое число. (используя android.os.Build.SERIAL)

Я уже извлек IMEI и MAC-адрес, поэтому для этого мне не нужен код.

Ответ 1

public static String getManufacturerSerialNumber() {
  String serial = null; 
  try {
      Class<?> c = Class.forName("android.os.SystemProperties");
      Method get = c.getMethod("get", String.class, String.class);
      serial = (String) get.invoke(c, "ril.serialnumber", "unknown");
  } catch (Exception ignored) {}
  return serial;
}

Изменить: прошло с момента ответа, здесь несколько обновленных точек:

  • OP спросил о Galaxy Tab 2, и для этого на самом деле ответ был ril.serialnumber (даже для модели не-3G - см. это gist). В соответствии с ответом Himanshu Galaxy Tab 3 использует sys.serialnumber (также под этот ответ). sys.serialnumber имеет смысл для планшетов, поскольку ril.* означает Radio Interface Layer, то, что большинство планшетов не оснащено (ril.serialnumber, соответственно, имеет смысл для телефонов).
  • Нет стандартного API для получения серийного номера устройства (то есть серийный номер на упаковке - не путать с Settings.Secure.ANDROID_ID или различными другими "уникальными" идентификаторами, разбросанными по API). Это означает, что изготовитель должен решить, где хранить серийный номер устройства (если вообще). На S3 Mini он ril.serialnumber, на NexusOne он ro.serialno (gist), на вкладке Galaxy Tab 2 ril.serialnumber, на вкладке Galaxy Tab 3/4 она sys.serialnumber, на вкладке Lenovo она ничего из вышеперечисленного. Эти установки являются обычными подозреваемыми при поиске серийного устройства, но не должны восприниматься как должное, и поэтому не следует полагаться на отслеживание уникальных установок приложений.

Ответ 2

Вы можете использовать команду getprop на оболочке adb и убедиться, что в каком из файлов содержится правильный серийный номер. Много раз серийный номер находится в разных файлах, а код должен быть специфичным для устройства.

Для закладки Samung 3 вы можете использовать следующий код:

try {

        Class<?> c = Class.forName("android.os.SystemProperties");

        Method get = c.getMethod("get", String.class, String.class);

        serialnum = (String) (get.invoke(c, "sys.serialnumber", "unknown"));

    } catch (Exception ignored) {

        serialnum = "unknown";

    }