Android 12 扫描蓝牙设备 Need android.permission.BLUETOOTH_SCAN permission

💡 原文中文,约3800字,阅读约需10分钟。
📝

内容提要

Android 12 系统上真机执行 BLE 蓝牙设备扫描时,APP 崩溃,Logcat 报错:需要 android.permission.BLUETOOTH_SCAN 权限。在 Activity 的生命周期中,onResume 是在 onStart 之后执行的,添加权限申请之后,再次打开 APP,就会看到弹窗提示申请权限授权,ActivityCompat.requestPermissions 这种弹窗确认操作,通常是异步执行的,onRequestPermissionsResult 回调可以判断权限是否获取成功,当权限获取成功时,onResume 被自动触发。

🎯

关键要点

  • 在 Android 12 系统上执行 BLE 蓝牙设备扫描时,APP 崩溃,报错需要 android.permission.BLUETOOTH_SCAN 权限。
  • Activity 的生命周期中,onResume 在 onStart 之后执行。
  • 需要在 manifest 中添加蓝牙相关权限,包括 BLUETOOTH_SCAN。
  • 在 startNodeDiscovery() 函数中检查并申请蓝牙权限。
  • ActivityCompat.requestPermissions 是异步执行的,需实现 onRequestPermissionsResult 回调来处理权限申请结果。
  • 权限申请成功后,onResume 会被自动触发,可能导致自动扫描。
  • 权限提示信息可能引起用户误解,以为是在申请定位信息,而非蓝牙连接。
🏷️

标签

➡️

继续阅读