Я пытаюсь подключить два непарных устройства Android через Bluetooth для сетей P2P. Защита MitM не требуется. Android имеет createInsecureRfcommSocketToServiceRecord
и listenUsingInsecureRfcommWithServiceRecord
для этого (начиная с уровня API 10), который отлично работает на современных устройствах. Тем не менее, на Galaxy Ace (Android 2.3.3 = уровень API 10, подключающийся к Galaxy Nexus), он создает диалог сопряжения. Это происходит как при входящих, так и исходящих соединениях. ( Обновление: обновление Galaxy Ace до Android 2.3.6, по-видимому, устраняет проблему. Существует ли конкретная версия Android, которая всегда/никогда не делает это?)
После согласования соединения соединение работает. По этой причине я думаю, что это не связано с Проблема 40101: createInsecureRfcommSocketToServiceRecord вызывает диалог сопряжения на Android 4.2, который должен произойти только в том случае, если служебная запись не существует.
Я предполагаю, что этого диалогового окна нельзя избежать на устройствах, где он появляется (если это возможно, объяснение того, как это сделать, является допустимым ответом). По этой причине я хотел бы знать, когда появляется такой диалог. Я ничего не нашел в источнике Android Java (он довольно быстро подходит для родных). Я сомневаюсь, что это имеет какое-то отношение к версии Bluetooth, поскольку Ace имеет Bluetooth 2.1, который должен поддерживать необходимые соединения "просто работает".
Если есть что-то, что позволило бы мне определить, поддерживает ли устройство соединения, не вставляя диалоговое окно, или если оно явно фиксировано для определенной версии Android, это очень помогло бы мне.
Кроме того, я ищу способ легко исключить такие устройства.