相关疑难解决方法(0)

Android 12蓝牙权限混乱

所以在 API 31 中有新的蓝牙权限。我想使用以下命令打开或关闭蓝牙:

private void changeBluetoothState(boolean status) {
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if (status)
        mBluetoothAdapter.enable();
    else mBluetoothAdapter.disable();
}
Run Code Online (Sandbox Code Playgroud)

在清单中我已经有了这个:

<uses-permission
    android:name="android.permission.WRITE_SETTINGS"
    tools:ignore="ProtectedPermissions" />

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

<uses-feature
    android:name="android.hardware.bluetooth"
    android:required="false" />
Run Code Online (Sandbox Code Playgroud)

Android 文档表示,android:maxSdkVersion="30"如果针对 API 31 或更高版本,则需要添加上述蓝牙权限。我还在 Android Studio 中收到一个错误,指出启用()和禁用()函数需要"android.permission.BLUETOOTH_CONNECT"

  1. 如果添加android:maxSdkVersion="30"告诉系统忽略更高 API 上的语句是可选的而不是强制性的,这是否意味着不添加它将允许该语句在更高 API 上工作?

  2. 如果"android.permission.BLUETOOTH_CONNECT"是为了允许我的应用程序与其他蓝牙设备交互,那么为什么需要启用或禁用原始设备上的蓝牙适配器?

  3. 如果需要在运行时请求 BLUETOOTH_CONNECT 权限,正确的完整方法是什么?意思是检查它是否已经被授予,如果没有则请求它。我没有 Android 12 设备,因此无法测试此代码。

android bluetooth android-permissions

12
推荐指数
1
解决办法
2万
查看次数

标签 统计

android ×1

android-permissions ×1

bluetooth ×1