在 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);
...
}
Run Code Online (Sandbox Code Playgroud)
在 Android O 上,这会引发错误:
Access denied finding property "ro.boot.serialno"
Run Code Online (Sandbox Code Playgroud)
虽然READ_PHONE_STATE获得了许可。Build.SERIAL似乎与Android 26 中已弃用的内容有关。
我设法使用 获取此属性adb,因此该值不会被删除并且存在:
adb shell getprop ro.boot.serialno
Run Code Online (Sandbox Code Playgroud)