startDiscovery 未启动

问题描述

我有一段代码适用于大多数手机,除了一个。这是一些发现蓝牙设备的代码

这是接收者的注册

IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothAdapter.ACTION_disCOVERY_FINISHED);
filter.addAction(BluetoothAdapter.ACTION_disCOVERY_STARTED);
_ctx.registerReceiver(mReceiver,filter);

这是接收方:

private final broadcastReceiver mReceiver = new broadcastReceiver() {
    public void onReceive(Context context,Intent intent) {
        String action = intent.getAction();

        // When discovery finds a device
        if (BluetoothAdapter.ACTION_disCOVERY_STARTED.equals(action)) {
            Log.i(SapphireApplication.TAG,"discovery started.");
        } else if (BluetoothAdapter.ACTION_disCOVERY_FINISHED.equals(action)) {
            Log.i(SapphireApplication.TAG,"discovery finished.");
        }
    }
}

以及我如何开始发现。

if (theAdapter.isdiscovering()) {
    theAdapter.canceldiscovery();
}

theAdapter.startdiscovery();

我拥有 android.permission.ACCESS_COARSE_LOCATIONandroid.permission.BLUetoOTH_ADMIN 权限。在运行 Android 11 的 Pixel 3 上,此代码运行良好,但在运行 Android 10 的阿尔卡特 5030D 上,则不能。这就像发现永远不会开始(即永远不会执行 Log.i 语句)。

更新:我检查了返回值,即 false,但 BluetoothAdapter.getState 返回 12,即 STATE_ON。哪一种否认 documentation 所说的。

在这里遗漏了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...