外观
蓝牙权限怎么按版本处理?
标准回答
必须一起看设备系统版本、应用 targetSdk 和具体 API。对现代目标版本,Android 12 起常用 BLUETOOTH_SCAN 和 BLUETOOTH_CONNECT;需要广播能力时再考虑 BLUETOOTH_ADVERTISE。旧系统扫描还需按适用规则处理定位权限与相关设置。(蓝牙权限)
| 适用条件 | 重点处理 | 不能忽略的边界 |
|---|---|---|
| 旧系统 BLE 扫描 | 旧蓝牙权限与相应定位授权 | API 级别 前后台和定位开关有差异 |
| Android 12 及以上且 targetSdk 至少 31 | 按功能申请 SCAN CONNECT ADVERTISE | 清单声明和运行时授权都要处理 |
| 扫描不推导位置 | 可按事实使用 neverForLocation | 部分 BLE beacon 可能被过滤 |
| 用户拒绝 撤销权限或关闭蓝牙 | 输出明确状态并允许恢复 | 不能只在初始化时检查一次 |
延伸追问
SDK 可以自己弹权限框吗?纯通信 SDK 更适合报告缺少的能力并提供接入说明,由宿主在合适交互时机申请。若 SDK 提供 UI 封装,也要明确 Activity 生命周期和重复请求处理。
内容来源
- Android 智能硬件 SDK 技术 Wiki · 原条目
Q44