如何为Build.SERIAL解释“此字段始终设置为Build#UNKNOWN”

时间:2019-12-02 03:36:02

标签: android

The official Android document says that "This field is always set to Build#UNKNOWN." for Build.SERIAL

enter image description here

这是否意味着Build.SERIAL总是返回“未知”?如果是这样,它似乎与“硬件序列号,如果可用”相冲突。 有人可以帮忙澄清一下吗?

1 个答案:

答案 0 :(得分:1)

部分正确。如果您在Android 9以下运行(或定位到Android 9以下版本),则该方法将返回设备上的原始序列号。 在Android 9及更高版本上,实际上您会得到字符串// mock orders.insert const orders = { insert: async() => { return new Promise((resolve) => { // wait a second then resolve setTimeout(resolve, 1000); }); } } // mock db.collection const db = { collection: async() => { return new Promise((resolve) => { // wait a second then resolve with mock data setTimeout(() => resolve(['foo', 'bar', 'baz']), 1000); }); } } function insert(order, orders, db) { return orders.insert(order) .then(() => db.collection('orders')); } // same as above, but with async/await async function insertAsync(order, orders, db) { await orders.insert(order); return await db.collection('orders'); } function go() { // using then insert(null, orders, db).then(console.log); // using async/await; insertAsync(null, orders, db).then(console.log); } go();。在这种情况下,文档建议使用getSerial() method,该功能基本相同,但是需要额外的权限。

Google已here对此进行了详细说明,此更改的主要原因是许多图书馆使用这些数字进行设备指纹识别。现在建议进行指纹识别的方法是使用广告ID或实例ID,您可以阅读有关唯一标识符here用法的更多信息。