在Android O版本中,如果不调用Java的Build.getSerial()
方法,正确获取本机序列号的方法是什么?
在Android < 26版本中,我们可以使用以下代码获取设备序列号:
string serial = read_property("ro.boot.serialno");
...
string read_property(const string& property_name) {
char propertyValue[PROP_VALUE_MAX];
int propertyLen = __system_property_get(property_name.c_str(), propertyValue);
...
}
在Android O上,这会抛出一个错误:
Access denied finding property "ro.boot.serialno"
尽管已经授权
READ_PHONE_STATE
权限,但似乎与Android 26中废弃的Build.SERIAL
有关。我成功地使用adb
获取了该属性,因此该值未被删除且存在:adb shell getprop ro.boot.serialno