我正在尝试通过蓝牙连接两个未配对的 android 设备以实现 P2P 网络目的。不需要中间人保护。Android 有createInsecureRfcommSocketToServiceRecord
andlistenUsingInsecureRfcommWithServiceRecord
为此(从 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 源代码中没有找到任何东西(它很快就变成了原生的)。我怀疑它与蓝牙版本有什么关系,因为 Ace 有蓝牙 2.1,它应该支持所需的“正常工作”连接。
如果有什么可以让我在不弹出对话框的情况下检测设备是否支持连接,或者它是否明确固定到某个 android 版本,那将极大地帮助我。
另外,我正在寻找一种轻松排除此类设备的方法。