Android 没有蓝牙的设备名称

Android Device Name Without Bluetooth

我想获取 android 设备名称(即用户可以通过设置更改的 "name",您可以在 "Settings > About device > Device name" 下找到)。

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

但在我的设备 (Samsung Galaxy S4) 上,此名称仅在我启用蓝牙时更新,因此如果我在禁用蓝牙时更改名称:在启用蓝牙之前不会显示新名称。

我想知道是否有一种方法可以在不启用蓝牙的情况下获取更新的设备名称? 我可以想到像这样的解决方法:

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

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

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

如果你仔细阅读 the doc 的蓝牙 API 你会看到 setName(...) 方法:

... If Bluetooth state is not STATE_ON, this API will return false. After turning on Bluetooth, wait for ACTION_STATE_CHANGED with STATE_ON to get the updated value.

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

你的解决方法是 AFAIK,这是在禁用蓝牙时更改名称时获取更新名称的唯一方法(不幸的是它有严重的缺点:enabling/disabling BT 很昂贵)。

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