gpt4 book ai didi

Android 蓝牙连接安全不安全

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:31 28 4
gpt4 key购买 nike

我一直在研究 Android 2.2 的蓝牙 API(API 级别 8,HTC Desire),并且有一个应用程序连接到嵌入式蓝牙设备,使用:

device.createRfcommSocketToServiceRecord(DEV_UUID);

这按预期生成了配对请求,但是为了简化连接过程,我想在配对时避免用户交互,因此移动到 API 级别 10(HTC Desire 与 CyanogenMod 7),因此我可以使用:

 device.createInsecureRfcommSocketToServiceRecord(DEV_UUID);

测试时这也按预期工作(连接时不提示用户配对),但是当我尝试像以前一样使用 2.2 在 API 级别 10 下创建安全 RfcommSocket 时,我收到连接被拒绝的异常...

 java.io.IOException: Connection refused
at android.bluetooth.BluetoothSocket.connectNative(Native Method)
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:204)

据我所知,这应该仍然以相同的方式工作,提示用户配对?

编辑:

刚刚使用以下代码再次尝试,结果是相同的(适用于不安全但不适用于安全),我将尝试使用库存 2.3 设备进行测试。

        try {
Method m = dev.getClass().getMethod("createInsecureRfcommSocketToServiceRecord", new Class[] { UUID.class } );
BluetoothSocket bs = (BluetoothSocket)m.invoke(dev, devUUID);
Log.d("TEST", "Method Invoked");
bs.connect();
Log.d("TEST", "Connected to socket");
bs.close();
Log.d("TEST", "Closed Socket");
}

最佳答案

在我的应用程序中寻找类似问题的解决方案时,我从 code.google.com 找到了这个博客

它将帮助所有仍在 SO 上寻找此问题解决方案的人

http://mobisocial.stanford.edu/news/2011/03/bluetooth-reflection-and-legacy-nfc/ (链接不再有效)

现在解决方案变得非常简单。只需在您的项目中包含 InsecureBluetooth.java 并更改 BluetoothChatService.java 中的 2 行。

tmp = InsecureBluetooth.listenUsingRfcommWithServiceRecord(mAdapter, NAME, MY_UUID, true);

tmp   = InsecureBluetooth.createRfcommSocketToServiceRecord(device, MY_UUID, true);

就是这样!

关于Android 蓝牙连接安全不安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8282481/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com