问题描述
我有一段代码适用于大多数手机,除了一个。这是一些发现蓝牙设备的代码。
这是接收者的注册:
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_LOCATION
和 android.permission.BLUetoOTH_ADMIN
权限。在运行 Android 11 的 Pixel 3 上,此代码运行良好,但在运行 Android 10 的阿尔卡特 5030D 上,则不能。这就像发现永远不会开始(即永远不会执行 Log.i
语句)。
更新:我检查了返回值,即 false
,但 BluetoothAdapter.getState
返回 12,即 STATE_ON
。哪一种否认 documentation 所说的。
我在这里遗漏了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)