Привести диалог сопряжения 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 : Я знаю, что это ужасный взлом, но это единственный способ заставить меня работать, и спаривание должно выполняться только один раз для устройства, поэтому это не так страшно … Кроме того, если кто-то найдет лучший способ, я открыт для предложения