Android12蓝牙权限适配说明

您所在的位置:网站首页 安卓app蓝牙权限怎么打开 Android12蓝牙权限适配说明

Android12蓝牙权限适配说明

2023-03-20 03:20| 来源: 网络整理| 查看: 265

根据google官方资料,Android 12(API 31) 引入了 BLUETOOTH_SCAN、BLUETOOTH_ADVERTISE 和 BLUETOOTH_CONNECT 权限,可让您的应用扫描附近的设备,而无需请求位置权限。这几个权限是运行时权限,用于查找蓝牙设备、使某个设备可被其他设备检测到,或者与已配对的蓝牙设备通信,必须主动申请。 最近正好又在做蓝牙相关的项目,发现网上的一些资料并不够全面,特整理此文。

权限声明

在Android 6-11的机型上如果使用蓝牙搜索设备,仍然需要请求定位权限和以前的蓝牙权限BLUETOOTH、BLUETOOTH_ADMIN,那么如何声明权限呢?在清单文件中可以使用android:maxSdkVersion="30"限定需要申请权限的Android版本,这样在Android 12及以上机型上,应用详情中的权限列表将不会列出这些权限。如果应用中除蓝牙外其他功能还需要使用定位权限,请勿针对ACCESS_COARSE_LOCATION、ACCESS_FINE_LOCATION这两个权限添加android:maxSdkVersion限制。

特别需要注意的是,Android 12及以上机型,如果想不申请定位权限就能搜索到设备,必须在BLUETOOTH_SCAN权限上加上android:usesPermissionFlags="neverForLocation",否则仍需申请定位权限。

申请权限 private final int REQUEST_PERMISSION_CODE = 1001; private void initPermission() { List mPermissionList = new ArrayList(); // Android 版本大于等于 12 时,申请新的蓝牙权限 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { mPermissionList.add(Manifest.permission.BLUETOOTH_SCAN); mPermissionList.add(Manifest.permission.BLUETOOTH_ADVERTISE); mPermissionList.add(Manifest.permission.BLUETOOTH_CONNECT); //根据实际需要申请定位权限 //mPermissionList.add(Manifest.permission.ACCESS_COARSE_LOCATION); //mPermissionList.add(Manifest.permission.ACCESS_FINE_LOCATION); } else { mPermissionList.add(Manifest.permission.ACCESS_COARSE_LOCATION); mPermissionList.add(Manifest.permission.ACCESS_FINE_LOCATION); } ActivityCompat.requestPermissions(this, mPermissionList.toArray(new String[0]), REQUEST_PERMISSION_CODE); } 参考资料

Android 12 中的新蓝牙权限  |  Android Developers https://developer.android.google.cn/about/versions/12/features/bluetooth-permissions 对蓝牙通讯感兴趣的朋友可以看看我的这个项目 BluetoothChat_one2more: 一对多蓝牙连接示例,基于Google BluetoothChat修改,实现一对多聊天(一个服务端、多个客户端),类似聊天室。 https://github.com/fly263/BluetoothChat_one2more



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3