0

我想获取android设备名称(即用户可以通过设置更改的“名称”,您可以在“设置>关于设备>设备名称”下找到)。

其他开发人员建议通过蓝牙获取此名称。

但是在我的设备(三星 Galaxy S4)上,这个名称仅在我启用蓝牙时更新,所以如果我在禁用蓝牙时更改名称:在启用蓝牙之前不会显示新名称。

我想知道是否有办法在不启用蓝牙的情况下获取更新的设备名称?我可以想到一个解决方法,例如:

  • 启用蓝牙
  • 得到名字
  • 禁用蓝牙

但我想知道是否存在更优雅的解决方案。

4

1 回答 1

-1

您所说的设备名称也称为蓝牙友好名称,因此通过蓝牙 API读取它是完全有效的。

请注意,如果您的应用程序在非蓝牙设备上运行:此名称不存在

如果您仔细阅读蓝牙 API的文档,您将看到该setName(...)方法:

... 如果蓝牙状态不是 STATE_ON,此 API 将返回 false。开启蓝牙后,等待 ACTION_STATE_CHANGED 和 STATE_ON 获取更新值。

换句话说:此行为并非特定于您的设备,但它按指定工作。

您的解决方法是 AFAIK,这是在禁用蓝牙时更改名称时获取更新名称的唯一方法(不幸的是,它有严重的缺点:启用/禁用 BT 成本高昂)。

另请注意,您必须等待 ACTION_STATE_CHANGED 和 STATE_ON 才能获得更新的值

于 2016-04-04T09:06:01.283 回答