Android 蓝牙开发 - 蓝牙相关权限(蓝牙基本权限、Android 12 蓝牙新增权限、位置权限)
蓝牙基本权限
1、基本介绍
<uses-permission android:name="android.permission.BLUETOOTH" />
BLUETOOTH
:允许应用连接配对的蓝牙设备
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
BLUETOOTH_ADMIN
:允许应用发现和配对蓝牙设备
2、注意事项
-
BLUETOOTH
和BLUETOOTH_ADMIN
属于普通权限,普通权限在安装时自动授予,因此不需要动态申请 -
如果仅声明
BLUETOOTH
,应用只能连接配对的蓝牙设备,不能主动扫描或配对新设备 -
BLUETOOTH_ADMIN
允许应用发现和配对蓝牙设备,但在 Android 6+ 上,扫描蓝牙设备需要ACCESS_FINE_LOCATION
,该权限需要动态申请
Android 12(API 31)蓝牙新增权限
1、基本介绍
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
BLUETOOTH_SCAN
:允许应用扫描附近的蓝牙设备
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
BLUETOOTH_CONNECT
:允许应用连接配对的蓝牙设备
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
BLUETOOTH_ADVERTISE
:允许应用作为蓝牙外围设备广播
2、注意事项
-
对于
BLUETOOTH_SCAN
,如果不访问位置(ACCESS_FINE_LOCATION
),需要声明usesPermissionFlags="neverForLocation"
-
BLUETOOTH_SCAN
、BLUETOOTH_CONNECT
、BLUETOOTH_ADVERTISE
需要在 Android 12 及以上版本使用,且需要动态申请
位置权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
ACCESS_FINE_LOCATION
:提供精确位置
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
ACCESS_COARSE_LOCATION
:提供粗略位置