所以在 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"。
如果添加android:maxSdkVersion="30"告诉系统忽略更高 API 上的语句是可选的而不是强制性的,这是否意味着不添加它将允许该语句在更高 API 上工作?
如果"android.permission.BLUETOOTH_CONNECT"是为了允许我的应用程序与其他蓝牙设备交互,那么为什么需要启用或禁用原始设备上的蓝牙适配器?
如果需要在运行时请求 BLUETOOTH_CONNECT 权限,正确的完整方法是什么?意思是检查它是否已经被授予,如果没有则请求它。我没有 Android 12 设备,因此无法测试此代码。