Получить серийный номер устройства Android-устройства

Мне нужно получить серийный код устройства для Android, на котором установлено мое приложение. Этот серийный номер оборудования является тем, который вы можете видеть на Settings > About Device > Status > Serial number.

Я бы использовал его с помощью Settings.Secure.ANDROID_ID or android.os.Build.SERIAL, но ни один из них не работал, а это значит, что они не дали мне уникальный идентификатор, который я ищу. Например, android.os.Build.SERIAL присвоил мне уникальный идентификатор, показанный в ADB, когда вы запустите команду adb devices.

Обратите внимание, что цель этого вопроса заключается не в поиске другого уникального идентификатора, который мог бы мне помочь, а только в получении серийного номера устройства.

Спасибо за помощь.

EDIT:

Пожалуйста, убедитесь, что я не ищу значение, предоставленное String android.os.BUILD.SERIAL. Я знаю, как получить эту ценность, но меня это не интересует.

У меня есть устройство Samsung, поэтому серийный номер, который они использовали, отличается от того, который был предоставлен android.os.BUILD.SERIAL.

Ответ 1

Решение очень просто:

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");
}

Это даст вам серийный номер большинства устройств Samsung. Я использую значение "sys.serialnumber", чтобы получить серийный номер моих таблеток SM-T210 (Galaxy Tab 3) и SM-T230 (Galaxy Tab 4), но, вероятно, работает с гораздо большим количеством планшетов Samsung. "Ril.serialnumber" должен получить ценность на моем Samsung GT-I8550L (Galaxy Win).

Надеюсь, это поможет.