BLE gatt.discoverServices() 返回 true,但 onServicesDiscovered 永远不会被调用

问题描述 投票:0回答:2

我正在为学校项目制作 Android 应用程序,我只需要能够使用 BLE 与设备进行通信。

我现在已连接到设备的 GATT 服务器,但我找不到任何服务,因为从未调用过

onServicesDiscovered
回调。 我已按照 android - BLE gatt.discoverServices() 返回 true 但回调从未触发 - Stack Overflowandroid - onServicesDiscovered 在连接到 GATT 服务器时从未调用 - Stack Overflow 的说明进行操作,但它不起作用。 ..

我也回复了其中一篇帖子,这是我的留言:

我目前遇到了同样的问题,但无法及时纠正。我什至使用按钮拨打

gatt.discoverServices()
以确保在搜索服务之前完成连接,但也不起作用。
当我按下这个按钮时,我得到这个gatt.discoverServices() log
您知道如何处理吗?
编辑:以下两个权限在我的清单中,但我无法设法让用户启用它们,它们似乎在开始时没有被授予。 但是,此时似乎需要这些权限的所有方法都工作正常(例如
bluetoothAdapter.startDiscovery()
device.getName()
)。

Manifest.permissions.BLUETOOTH_CONNECT
Manifest.permissions.BLUETOOTH_SCAN

有什么办法可以处理吗?

java android android-studio mobile bluetooth-lowenergy
2个回答
1
投票

更多调试让我看到

onServicesDiscovered()
被调用,真正的问题在于
BroadcastReceiver
。在调用函数
registerReceiver
之前,我忘记在IntentFilter中添加动作
ACTION_GATT_SERVICES_DISCOVERED
。添加此操作解决了问题。


0
投票

@Volt 的答案才是真正的 MVP,这是我的问题,我还忽略了向我的 IntentFilter 添加操作

© www.soinside.com 2019 - 2024. All rights reserved.