我有一个应用程序,我以编程方式控制蓝牙配对和取消配对。我可以在连接前配对,然后取消配对。我需要这样做的原因是我的申请特定,而不是我的问题范围。
基本上我正在做的是:
ib
对象获取参考IBluetooth
android.bluetooth.device.action.PAIRING_REQUEST
ib.createBond(address)
ib.setPin(address, pinBytes)
醇>
无论如何,这种方法很有效,除了我进行配对时,我在状态栏中收到通知,要求用户输入PIN以完成配对。但这实际上是不必要的,因为当用户看到这个时,我的应用已经使用了setPin()
。我非常希望通知a)根本不出现,或者b)以某种方式自动被解雇。
我意识到这可能是不可能的,但我想如果有人有创意,我会问。
答案 0 :(得分:14)
尝试先在PAIRING_REQUEST
BluetoothDevice device = intent.getParcelableExtra("android.bluetooth.device.extra.DEVICE");
device.getClass().getMethod("setPairingConfirmation", boolean.class).invoke(device, true);
device.getClass().getMethod("cancelPairingUserInput").invoke(device);
这对我使用RFCOMM的两台Android设备起作用,但我没有输入任何PIN
答案 1 :(得分:11)
由于Android API 19 Google将这些方法切换为公共方法,因此不再需要Reflection。 :)
答案 2 :(得分:1)
在PAIRING_REQUEST通知事件中执行此操作:
BluetoothDevice localBluetoothDevice = (BluetoothDevice)intent.getParcelableExtra("android.bluetooth.device.extra.DEVICE");
Class localClass = localBluetoothDevice.getClass();
Class[] arrayOfClass = new Class[0];
localClass.getMethod("cancelPairingUserInput", arrayOfClass).invoke(paramBluetoothDevice, null)).booleanValue();
但是你必须告诉我你是如何在没有用户输入Passkey / PIN的情况下配对远程设备的?当然,您知道尝试与您的设备配对的远程设备的PIN,但您是如何将该PIN提供给远程设备的。