一、问题描述
最近在做蓝牙相关的项目,用.() 这个方法在 6.0 的机子上扫描不到对设备可见的蓝牙,但在4.X 的机子却可以扫描出来 。
二、问题分析
这有可能是在 6.0 系统蓝牙方面做了修改,打开.()这个方法官方文档,
文章插图
可以看到这个方法需要请求这个权限,但这个权限我已经添加了的,上面有一句话是 forto beasare found. 这个是用于远程的蓝牙设备被发现时会发出的广播通知,点进去看看,
文章插图
这个广播要请求两个权限,一个是,另一个是ON,什么鬼,扫描蓝牙要访问位置的权限,黑人问号????
【Android 6.0 BluetoothAdapter】最后在官方文档中找到一篇是关于6.0 系统的变更的文章,有一段是讲硬件标识符访问权的,
文章插图
可以看到,这是为了给用户提供更严格的数据保护的,这是怎么保护的?这 。。。得去问吧 。
三、问题解决
文章插图
通过上面的分析,我们知道在6.0 的设备上扫描蓝牙除了需要
这两个权限外,还需要
或
这两个其中之一,当然两个都加也行,就可以扫描出对设备可见的蓝牙了,当然还得要允许权限才行,毕竟6.0 开始加入了权限控制功能 。
- Android 打开webView黑屏闪烁问题排查
- Android 操作系统的内存回收机制
- android bluedroid是什么设备
- android9 无法使用数据库,使用greenDao操作本地数据库
- Android一种字幕效果的实现
- Android学习-运用手机多媒体
- Android性能调试方法工具集合 - 持续更新
- Android 高德地图去掉 logo
- android仿qq动态,Android仿QQ空间主页面的实现
- Android HCE开发