首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在前面显示蓝牙配对请求通知对话框以请求PIN

在前面显示蓝牙配对请求通知对话框以请求PIN
EN

Stack Overflow用户
提问于 2014-08-08 18:10:55
回答 4查看 6.2K关注 0票数 3

我要做的是在对话框中输入配对过程的PIN。

连接到设备后,收到通知,但配对对话框不显示。我必须手动打开它。

到目前为止,我尝试了以下方法,当我获得PAIRING_REQUEST操作时,会在广播接收器中调用这些方法:

代码语言:javascript
复制
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);

}

它正确地显示了对话框,但在我输入它之后,它不能与我的设备配对。

我还尝试了下面的代码:

代码语言:javascript
复制
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_ADMIN权限)

请注意,我真的需要显示这个对话框,如果它是默认对话框,效果会更好。我正在连接BLE设备,连接后需要PIN进行配对,并且能够修改某些特征。

您的帮助将不胜感激!

提前感谢!

EN

回答 4

Stack Overflow用户

发布于 2016-02-21 08:20:51

尝试使用新的Android BluetoothDevice接口: bluetoothdevice.createBond()。调用此方法后,系统会自动为您调用配对请求对话框。然后您可以在弹出的对话框中输入PIN。

考虑在您的代码中添加类似以下内容的内容,您希望在其中开始配对过程:

代码语言:javascript
复制
private void pairDevice(BluetoothDevice device) {
    try {
        Log.d(TAG, "Start Pairing... with: " + device.getName());
        device.createBond();
    } catch (Exception e) {
        Log.e(TAG, e.getMessage());
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-08-14 09:17:56

我也遇到过类似的问题,请确保您的蓝牙用户权限是在清单 xml标记内设置的,而不是在应用程序标记下设置的-在AndroidManifest中(即)。希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2016-07-05 10:55:08

如果两台设备之前没有配对,可以直接使用connect方法进行配对,在连接过程中,device.If框架会自动向用户显示配对请求通知或对话框。因此,当尝试连接设备时,您的应用程序不需要关心设备是否配对。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25201050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档