Как работают Bluetooth‑разрешения в Android и как их правильно выдать

Короткий ответ: для работы с Bluetooth на Android нужны runtime‑разрешения BLUETOOTH_SCAN (сканирование), BLUETOOTH_CONNECT (подключение) и при необходимости BLUETOOTH_ADVERTISE; на старых версиях дополнительно мог требоваться ACCESS_FINE_LOCATION или Nearby Devices. Выдать их можно через системный запрос при первом подключении или вручную в Настройках → Приложения → Разрешения.

Какие разрешения нужны и за что они отвечают

  • BLUETOOTH_SCAN — разрешает обнаруживать устройства (BLE и классические). На Android 12+ это отдельный runtime‑пермишен. Для сканирования на старых версиях могло требоваться разрешение на местоположение (ACCESS_FINE_LOCATION).
  • BLUETOOTH_CONNECT — разрешает устанавливать соединения и обмениваться данными с уже найденными устройствами.
  • BLUETOOTH_ADVERTISE — позволяет устройству работать как маячок (рекламировать себя).
  • NEARBY_DEVICES — в некоторых версиях и реализациях объединяет базовые действия с близко расположенными устройствами (встречается в списке как "Nearby Devices").
  • BLUETOOTH / BLUETOOTH_ADMIN — устаревшие или системные флаги (в манифесте), их функции заменены новыми runtime‑правами.

На Android 13–14 и выше фоновые сканирования и длительный доступ ограничены. Разрешайте "всегда" только проверенным приложениям (трекеры здоровья, спутниковые девайсы).

Как выдать разрешения — пошагово

  1. Включите Bluetooth в шторке (быстрая настройка) или в Настройках → Подключенные устройства → Bluetooth.
  2. Через приложение при первом подключении: откройте приложение → попробуйте начать сканирование/подключение → подтвердите системный запрос (Разрешить/Запретить). Лучше выбрать "Разрешить при использовании", если есть такой вариант.

Если приложение не просит разрешение автоматически — откройте его страницу в Настройках → Разрешения → вручную включите нужные пункты.

  1. Через настройки системы: Настройки → Приложения → выбрать приложение → Разрешения → Bluetooth / Nearby Devices → включить BLUETOOTH_SCAN / BLUETOOTH_CONNECT.
  2. Для фоновой работы: Настройки → Приватность и безопасность → Разрешения Bluetooth (или Специальный доступ) — проверьте список приложений и фоновые права.
  3. Если сканирование не работает на старом устройстве — убедитесь, что включено разрешение на местоположение (ACCESS_FINE_LOCATION) и что энергосбережение не ограничивает фоновую работу приложения.

Дополнительные настройки и советы

  • Если устройство не видит девайс: перезапустите Bluetooth (выкл/вкл), забудьте устройство (длинный тап → Забыть) и заново выполните спаривание.
  • Очистите кэш приложения (Настройки → Приложения → Хранилище → Очистить кэш), если соединение нестабильно.
  • Отключите оптимизацию батареи для приложений, которые должны постоянно сканировать или поддерживать соединение (Батарея → Оптимизация → Не оптимизировать).
  • При массовом подключении: добавляйте только нужные устройства в Настройки → Подключенные устройства → Bluetooth, остальное удаляйте для стабильности.

Частые ошибки

  • Приложение просит разрешение, но устройства не видит — решение: перезапустите Bluetooth, проверьте оптимизацию батареи и наличие фоновых ограничений.
  • Разрешение выдано, но сканирование прекращается в фоне — в Android 14+ фоновый доступ ограничен; нужно выдать "всегда" и следить за политикой энергосбережения.
  • "Nearby Devices" не отображается в списке — возможно, приложение использует старые API; проверьте раздел Разрешения у приложения и обновите Android/приложение.

FAQ

  • Нужно ли разрешение на локацию для BLE? На современных Android (12+) обычно нет: используются BLUETOOTH_SCAN/CONNECT. На старых версиях для сканирования BLE требовалось ACCESS_FINE_LOCATION.
  • Что делать, если приложение пишет, что разрешения нет, хотя вы их дали? Попробуйте отключить и снова включить разрешения, перезапустить устройство и убедиться, что нет ограничений энергосбережения.
  • Можно ли запретить доступ и использовать устройство при этом? Часто нет: без разрешений приложение не сможет найти или подключиться к девайсу.

Если описанные шаги не помогают — сделайте сброс сетевых настроек: Настройки → Система → Сброс → Сбросить Wi‑Fi, мобильный интернет и Bluetooth. Это часто решает скрытые конфликты пары и кэша.