【发布时间】:2013-02-11 00:30:30
【问题描述】:
我正在尝试通过蓝牙连接两个未配对的安卓设备以实现 P2P 网络连接。不需要中间人保护。 Android 为此提供了createInsecureRfcommSocketToServiceRecord 和listenUsingInsecureRfcommWithServiceRecord(从API 级别10 开始),它们在现代设备上完美运行。但是,在 Galaxy Ace(Android 2.3.3 = API 级别 10,与 Galaxy Nexus 连接)上,它会创建一个配对对话框。这发生在传入和传出连接上。 (更新:将 Galaxy Ace 更新到 Android 2.3.6 显然可以解决问题。是否有特定的 Android 版本总是/从不这样做?)
接受配对后,连接工作。出于这个原因,我认为这与Issue 40101: createInsecureRfcommSocketToServiceRecord causes pairing dialog on Android 4.2 无关,只有在服务记录不存在时才会发生。
我认为在出现此对话框的设备上无法避免此对话框(如果可以,解释如何执行此操作是一个有效的答案)。出于这个原因,我想知道什么时候会出现这样的对话框。我在 Android Java 源代码中没有找到任何东西(它很快就变成了原生的)。我怀疑它与蓝牙版本有什么关系,因为 Ace 有蓝牙 2.1,它应该支持所需的“正常工作”连接。
如果有什么可以让我在不弹出对话框的情况下检测设备是否支持连接,或者它是否明确固定到某个 android 版本,那将极大地帮助我。
另外,我正在寻找一种轻松exclude such devices 的方法。
【问题讨论】:
-
对于不安全的连接,即如果您使用 createInsecureRfcommSocketToServiceRecord 和 listenUsingInsecureRfcommWithServiceRecord,您使用的 UUID 是什么?
-
@krisDrOid:随机生成的自定义。