感谢 ClsUtils 类的作者,感谢 oschina.net 上提供的android源代码
(一) 先说说我自己的试验
调用 ClsUtils::createBond() 方法,会弹出一个输入配对密码的对话框,
(二) 跟踪源代码
见源代码 BluetoothPairingDialog.java
onClick() 方法中
DialogInterface.BUTTON_POSITIVE :
(1) byte[] pinBytes = BluetoothDevice.convertPinToBytes(value);
(2) mDevice.setPin(pinBytes);
DialogInterface.BUTTON_NEGATIVE:
mDevice.cancelPairingUserInput();
所以可以猜测,mDevice.setPin(pinBytes) 除了设置 pin以外,还带有关闭对话框的功能。
(三) 我的做法
在 BluetoothConnectActivityReceiver 中,
只需要调用 ClsUtils.setPin() 方法就可以了。
不需要调用 ClsUtils.createBond() ,如果调用了 ClsUtils.createBond() 可能会再弹出一个对话框。
不需要调用 ClsUtils.cancelPairingUserInput()
注意:在 ClsUtils.setPin() 方法中,需要加入 byte[] pinBytes = BluetoothDevice.convertPinToBytes(strPin);
BluetoothDevice.convertPinToBytes(strPin) 的实现请参照 BluetoothDevice.java 中的实现