Имя устройства 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 получит обновленное значение.