Intereting Posts
Способы хранения переменных на протяжении всего времени работы приложения Android в телефоне Сохранение данных из WebView Будет ли пустой курсор SQLite возвращать true для isBeforeFirst, isAfterLast, оба или ни один? Как получить список друзей из Facebook с помощью Android Facebook sdk? Почему мое приложение Android сбой, когда я пытаюсь получить доступ к строковым ресурсам? Запись и чтение данных json для внутреннего хранилища android OpenGLES на Android – IllegalStateException: setRenderer уже вызван для этого экземпляра Android-приложение Phonegap «Приложение не установлено» Android Notification Действие, не вызывающее ожидающее намерения Высота контента RecyclerView Есть ли способ прослушать конец анимации в AnimatedVectorDrawables Как разрешить ошибку ANR при вызове камеры? AlertDialog не показывает две кнопки Свежая установка Eclipse, R не может быть разрешена переменной DrawerLayout с NavigationView – не показывает эффект пульсации при нажатии

Привести диалог сопряжения Bluetooth с передней панелью

У меня простой сервис для подключения Bluetooth-устройств, и он выглядит так:

protected void onHandleIntent(Intent intent) { Bundle extras = intent.getExtras(); if(!extras.containsKey("bluetoothAddress")) return; String bluetoothAddress = extras.getString("bluetoothAddress"); BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); if(!adapter.isEnabled()) { adapter.enable(); } BluetoothDevice device = adapter.getRemoteDevice(bluetoothAddress); device.createBond(); } 

Он отлично работает, за исключением того, что иногда появляется диалог пары, и иногда он появляется в моей панели уведомлений, и я должен открыть его вручную. Есть ли способ убедиться, что он всегда появляется на фронт?

Я пытался использовать Google, и только одно, что я могу найти, это то, что если вы остаетесь в настройках bluetooth, он всегда появляется, но это похоже на уродливое решение. Причиной всего этого является то, что я работаю с автоматизацией и хочу удостовериться, что, когда я запускаю свою службу, я получаю, что диалог пары может просто щелкнуть «Пара».

У меня такая же проблема. Я нашел это сообщение, которое объясняет, когда отображается диалог или нет: запрос сопряжения Bluetooth на панели уведомлений?

Возобновление, это зависит от результата метода toShowDialogInForeground ().

Цитата из сообщения:

есть способы сделать диалоговое шоу:

  1. Если устройство недавно находилось в режиме обнаружения
  2. Если устройство обнаружило недавно
  3. Если устройство было выбрано в сборщике устройств в последнее время
  4. Если настройки Bluetooth видны

В моем случае, чтобы заставить диалоговое окно появиться, я начал и отменил открытие, прежде чем пытаться установить пару …

Код / Hack

 BluetoothAdapter.getDefaultAdapter().startDiscovery(); //Give it some time before cancelling the discovery Thread.sleep(1000); BluetoothAdapter.getDefaultAdapter().cancelDiscovery(); //Then do the LeScan and connect to the device 

PS : Я знаю, что это ужасный взлом, но это единственный способ заставить меня работать, и спаривание должно выполняться только один раз для устройства, поэтому это не так страшно … Кроме того, если кто-то найдет лучший способ, я открыт для предложения