在 Android O 上从本机获取序列号而不调用 Java 的正确方法是什么Build.getSerial()
.
在 Android
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
已授予许可。似乎与已弃用有关Build.SERIAL
在 Android 26 中。
我设法使用此属性获得了adb
,因此该值不会被删除并且存在:
adb shell getprop ro.boot.serialno
您可以使用 Build.getSerial() 来获取序列号。
如果用户已授予 READ_PHONE_STATE 权限,则没有问题,但如果用户撤销该权限或从未授予该权限 - 您应该考虑到,在尝试检索该权限时,您将在运行时收到 SecurityException。
总的来说 - 看起来谷歌在过去几年里正在慢慢推动阻止应用程序使用个人身份信息(例如设备序列号),因此您应该考虑诸如installationId之类的替代方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)