返回顶部
首页 > 资讯 > 后端开发 > JAVA >Android连接蓝牙设备问题(android.permission.BLUETOOTH)
  • 846
分享到

Android连接蓝牙设备问题(android.permission.BLUETOOTH)

androidandroidstudiojava 2023-09-02 08:09:13 846人浏览 八月长安
摘要

        近期遇到一个问题,之前发布的APP连接蓝牙都是正常的,现在有人反映连不上了。经过测试发现:Android 12 和 harmonyOS 3.0.0 都会有这个问题,而之前的版本就不会有这个。         经过网上一番查找

        近期遇到一个问题,之前发布的APP连接蓝牙都是正常的,现在有人反映连不上了。经过测试发现:Android 12 和 harmonyOS 3.0.0 都会有这个问题,而之前的版本就不会有这个。

        经过网上一番查找,原来是因为最近Google发布的Android 12,新引入了 BLUETOOTH_SCAN、BLUETOOTH_CONNECT、BLUETOOTH_ADVERTISE 三个权限。、

        从Android 12开始,过去的蓝牙权限被拆分成了3个新的权限,并且全都是运行时权限(需要动态申请):

  • BLUETOOTH_SCAN 用于使用蓝牙扫描附件其他的蓝牙设备
  • BLUETOOTH_ADVERTISE 用于允许当前的设备被其他的蓝牙设备所发现
  • BLUETOOTH_CONNECT 用于连接之前已经配对过的蓝牙设备

        这3个权限都是从Android 12系统才开始有的,所以为了能够兼容过去的老版本,建议在AndroidManifest.xml中这样声明:

                    

        新增的3个蓝牙权限都是运行时权限,因此只在AndroidManifest.xml中声明是没有用的,还要在代码中动态申请权限才行。必须先在应用中用户明确批准使用,然后才能查找蓝牙设备、使某个设备可被其他设备检测到,或者与已配对的蓝牙设备通信。

        具体的申请方法如下:首先要判断当前的系统版本,只有当Android 12及以上系统时,才应该去请求新增的蓝牙权限。(PS:3个权限都属于同一个权限组,因此理论上只要申请一个权限,另外2个也就自动授权了。)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {            String[] permission = checkSelfPermissionArray(this, new String[]{                    Manifest.permission.BLUETOOTH_SCAN,                    Manifest.permission.BLUETOOTH_ADVERTISE,                    Manifest.permission.BLUETOOTH_CONNECT});            if (permission.length > 0) {                ActivityCompat.requestPermissions(this, permission, 102);            }        }

注意:

之前的Android系统中有一个很奇怪的现象,当我们在应用中使用蓝牙扫描附件设备的时候,需要申请地理位置权限蓝牙权限并不是运行时权限,但地理位置权限却是

来源地址:https://blog.csdn.net/minusn/article/details/128660803

--结束END--

本文标题: Android连接蓝牙设备问题(android.permission.BLUETOOTH)

本文链接: https://lsjlt.com/news/390417.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作