Как работают 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 и выше фоновые сканирования и длительный доступ ограничены. Разрешайте "всегда" только проверенным приложениям (трекеры здоровья, спутниковые девайсы).
Как выдать разрешения — пошагово
- Включите Bluetooth в шторке (быстрая настройка) или в Настройках → Подключенные устройства → Bluetooth.
- Через приложение при первом подключении: откройте приложение → попробуйте начать сканирование/подключение → подтвердите системный запрос (Разрешить/Запретить). Лучше выбрать "Разрешить при использовании", если есть такой вариант.
Если приложение не просит разрешение автоматически — откройте его страницу в Настройках → Разрешения → вручную включите нужные пункты.
- Через настройки системы: Настройки → Приложения → выбрать приложение → Разрешения → Bluetooth / Nearby Devices → включить BLUETOOTH_SCAN / BLUETOOTH_CONNECT.
- Для фоновой работы: Настройки → Приватность и безопасность → Разрешения Bluetooth (или Специальный доступ) — проверьте список приложений и фоновые права.
- Если сканирование не работает на старом устройстве — убедитесь, что включено разрешение на местоположение (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. Это часто решает скрытые конфликты пары и кэша.