Имя устройства Android без Bluetooth

Я хочу получить имя устройства Android (то есть "имя", которое пользователь может изменить в настройках и которое вы можете найти в "Настройки> Об устройстве> Имя устройства").

Другие разработчики рекомендуют получать это имя через Bluetooth.

Но на моем устройстве (Samsung Galaxy S4) это имя обновляется только при включении Bluetooth, поэтому если я изменю имя, когда Bluetooth отключен: новое имя не будет отображаться, пока я не включу Bluetooth.

Мне интересно, есть ли способ получить обновленное имя устройства без включения bluetooth? Я могу думать об обходном пути, как:

  • включение Bluetooth
  • получить имя
  • отключить Bluetooth

но мне было интересно, существует ли более элегантное решение.

1 ответ

Решение

Имя устройства, о котором вы говорите, также известно как дружественное к Bluetooth имя, поэтому чтение его через API Bluetooth вполне допустимо.

Имейте в виду, что если ваше приложение работает на устройстве, не поддерживающем Bluetooth, это имя не существует.

Если вы внимательно прочитаете документацию по API Bluetooth, вы увидите setName(...) метод:

... Если состояние Bluetooth не STATE_ON, этот API вернет false. После включения Bluetooth подождите, пока ACTION_STATE_CHANGED с STATE_ON получит обновленное значение.

Другими словами: это поведение не относится к вашему устройству, но работает как указано.

Ваш обходной путь - AFAIK, единственный способ получить обновленное имя, когда имя было изменено, когда Bluetooth был отключен (и, к сожалению, у него есть серьезные недостатки: включение / отключение BT стоит дорого).

Также обратите внимание, что вы должны подождать, пока ACTION_STATE_CHANGED с STATE_ON получит обновленное значение.

Другие вопросы по тегам