我想获取android设备名称(即用户可以通过设置更改的“名称”,您可以在“设置>关于设备>设备名称”下找到)。
其他开发人员建议通过蓝牙获取此名称。
但是在我的设备(三星 Galaxy S4)上,这个名称仅在我启用蓝牙时更新,所以如果我在禁用蓝牙时更改名称:在启用蓝牙之前不会显示新名称。
我想知道是否有办法在不启用蓝牙的情况下获取更新的设备名称?我可以想到一个解决方法,例如:
- 启用蓝牙
- 得到名字
- 禁用蓝牙
但我想知道是否存在更优雅的解决方案。
我想获取android设备名称(即用户可以通过设置更改的“名称”,您可以在“设置>关于设备>设备名称”下找到)。
其他开发人员建议通过蓝牙获取此名称。
但是在我的设备(三星 Galaxy S4)上,这个名称仅在我启用蓝牙时更新,所以如果我在禁用蓝牙时更改名称:在启用蓝牙之前不会显示新名称。
我想知道是否有办法在不启用蓝牙的情况下获取更新的设备名称?我可以想到一个解决方法,例如:
但我想知道是否存在更优雅的解决方案。
您所说的设备名称也称为蓝牙友好名称,因此通过蓝牙 API读取它是完全有效的。
请注意,如果您的应用程序在非蓝牙设备上运行:此名称不存在。
如果您仔细阅读蓝牙 API的文档,您将看到该setName(...)
方法:
... 如果蓝牙状态不是 STATE_ON,此 API 将返回 false。开启蓝牙后,等待 ACTION_STATE_CHANGED 和 STATE_ON 获取更新值。
换句话说:此行为并非特定于您的设备,但它按指定工作。
您的解决方法是 AFAIK,这是在禁用蓝牙时更改名称时获取更新名称的唯一方法(不幸的是,它有严重的缺点:启用/禁用 BT 成本高昂)。
另请注意,您必须等待 ACTION_STATE_CHANGED 和 STATE_ON 才能获得更新的值。