1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > android10蓝牙搜不到ble设备_Android 6.0 蓝牙 找不到设备问题

android10蓝牙搜不到ble设备_Android 6.0 蓝牙 找不到设备问题

时间:2022-12-23 22:27:53

相关推荐

android10蓝牙搜不到ble设备_Android 6.0 蓝牙 找不到设备问题

问题由来

公司有项目需要使用手机蓝牙配对蓝牙模块,但是在写代码调试中,发现无法搜索到蓝牙模块(有时可以搜索到),问题找了很长时间,确定没有代码上的问题,然后换了个华为低端手机,发现可以搜索到,证实了我的想法,所以问题肯定是小米手机,询问了从事安卓开发的同事,得知这是Android 6.0的新特性。

查找谷歌文档 Android 6.0 Changes,定位到硬件标识符访问权部分,如下:为给用户提供更严格的数据保护,从此版本开始,对于使用 WLAN API 和 Bluetooth API 的应用,Android 移除了对设备本地硬件标识符的编程访问权。WifiInfo.getMacAddress() 方法和 BluetoothAdapter.getAddress() 方法现在会返回常量值 02:00:00:00:00:00。

现在,要通过蓝牙和 WLAN 扫描访问附近外部设备的硬件标识符,您的应用必须拥有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限。

WifiManager.getScanResults()

BluetoothDevice.ACTION_FOUND

BluetoothLeScanner.startScan()

注:当运行 Android 6.0(API 级别 23)的设备发起后台 WLAN 或蓝牙扫描时,在外部设备看来,该操作的发起来源是一个随机化 MAC 地址。

注意到其中的使用蓝牙和WLAN扫描设备时,应用必须拥有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限,因为是或,所以只需要在Manifest文件中添加权限

或者

或者两个都加,省得以后谷歌再变,完美~

总结手机:小米

系统:Android 6.0

问题:搜索不到蓝牙设备

原因:Android 6.0 蓝牙权限需要定位权限

解决:添加权限

顺便,安利GitHub上的一个弹出申请权限对话框的API——Grant

,效果就是需要新权限时,弹出对话框提醒用户给予权限。

本文为原创文章,转载请注明出处: /archives/android-6-cannot-find-devices.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。