【发布时间】:2011-02-14 07:54:42
【问题描述】:
对于我的应用程序,我正在尝试以编程方式配对蓝牙设备。我可以显示要配对的设备的配对对话框,并且可以输入密码。当我按“配对”时,对话框被删除,没有任何反应。
我只需要支持 Android 2.0 及更高版本的设备。
目前我正在使用以下代码开始配对进度:
public void pairDevice(BluetoothDevice device) {
String ACTION_PAIRING_REQUEST = "android.bluetooth.device.action.PAIRING_REQUEST";
Intent intent = new Intent(ACTION_PAIRING_REQUEST);
String EXTRA_DEVICE = "android.bluetooth.device.extra.DEVICE";
intent.putExtra(EXTRA_DEVICE, device);
String EXTRA_PAIRING_VARIANT = "android.bluetooth.device.extra.PAIRING_VARIANT";
int PAIRING_VARIANT_PIN = 0;
intent.putExtra(EXTRA_PAIRING_VARIANT, PAIRING_VARIANT_PIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
在开始配对请求之前,我会停止扫描新设备。
我的应用程序具有以下蓝牙权限:
- android.permission.BLUETOOTH_ADMIN
- android.permission.BLUETOOTH
【问题讨论】:
-
我花了几天时间寻找解决这个确切问题的方法。谷歌似乎认为强制配对是一个安全问题,因此您在此处列出的 ACTION 类型实际上并不存在。我在这里找到了您引用的课程:developer.oesf.biz/em/developer/reference/cinnamon/android/… 但它不在官方文档中:developer.android.com/reference/android/bluetooth/…
-
@FireFLy 你有什么解决办法吗?
-
使用反射可以调用 BluetoothDevice 类的 createBond 方法。解决方案:见这篇文章:如何在android上以编程方式取消配对或删除配对的蓝牙设备(stackoverflow.com/questions/9608140/…)?解除配对也有解决办法。