我尝试做的是在对话框中输入PIN以进行配对过程。
连接到设备后,我收到通知,但配对对话框没有显示。我必须手动打开它。
到目前为止,我尝试了以下方法,当我收到PAIRING_REQUEST动作时,在广播接收器中调用这些方法:
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);
startActivity(intent);
}
正确显示对话框,但输入后,它不会配对我的设备。
我也试过这段代码:
public void pairDevice(BluetoothDevice device)
{
Intent intent = new Intent("android.bluetooth.device.action.PAIRING_REQUEST");
String EXTRA_DEVICE = "android.bluetooth.device.extra.DEVICE";
intent.putExtra(EXTRA_DEVICE, device);
int PAIRING_VARIANT_PIN = 272;
intent.putExtra("android.bluetooth.device.extra.PAIRING_VARIANT", PAIRING_VARIANT_PIN);
sendBroadcast(intent);
}
这会导致我的应用崩溃,因为它说我没有权限为PAIRING_REQUEST发送广播(即使我同时设置了BLUETOOTH和BLUETOOTH_ADMIN权限)
拜托,我真的需要显示这个对话框,如果它是默认对话框会更好。我正在连接到BLE设备,连接后需要PIN才能配对,并且能够修改某些特性。
非常感谢您的帮助!
提前致谢!
答案 0 :(得分:1)
尝试使用新的Android BluetoothDevice API:bluetoothdevice.createBond()。调用此方法后,系统将自动为您调用配对请求对话框。然后,您可以在该弹出对话框中输入PIN。
考虑在代码中添加类似的内容,以便开始配对过程:
.Parameters.Append .CreateParameter("@code", adVarChar, adParamInput, 50, x)
答案 1 :(得分:0)
我遇到了类似问题,请确保 蓝牙用户权限 设置在 清单 xml标记内不在 应用程序 标记下 - 在AndroidManifest中(即)。希望这会有所帮助。
答案 2 :(得分:0)
您可以直接使用connect方法配对设备。如果两个设备之前没有配对,那么Android框架将在连接过程中自动向用户显示配对请求通知或对话框。因此,在尝试连接设备时,您的应用程序无需担心设备是否已配对。
答案 3 :(得分:0)
尝试将此用于所有API级别:
public static void pairDevice(BluetoothDevice device) {
try {
Method method = device.getClass().getMethod("createBond", (Class[]) null);
method.invoke(device, (Object[]) null);
//From API 19.
// device.createBond();
} catch (Exception e) {
e.printStackTrace();
}
}