如何解决.NET MAUI中Android 31.0及以上版本的BluetoothAdapter.DefaultAdapter过时问题?
解决.NET MAUI中Android 31+蓝牙API过时警告的方案
Android 12(API 31)及以上版本中,BluetoothAdapter.DefaultAdapter已被标记为过时,官方推荐通过BluetoothManager来获取蓝牙适配器,替换方案如下:
替换代码
在Android平台下,改用BluetoothManager获取适配器:
using Android.Content; using Android.Bluetooth; // 从系统服务中获取BluetoothManager实例 var bluetoothManager = (BluetoothManager)Android.App.Application.Context.GetSystemService(Context.BluetoothService); // 通过Manager获取蓝牙适配器 BluetoothAdapter bluetoothAdapter = bluetoothManager.Adapter;
注意事项
- 权限配置:需在AndroidManifest.xml中添加必要的蓝牙权限,API 31+需额外声明
BLUETOOTH_SCAN、BLUETOOTH_CONNECT等危险权限,并且在运行时动态申请这些权限。 - 可用性检查:获取适配器后需判断是否为空,以及蓝牙是否开启:
if (bluetoothAdapter != null && bluetoothAdapter.IsEnabled) { // 蓝牙可用,执行后续操作 } else { // 蓝牙不可用,提示用户开启蓝牙 } - 跨平台兼容:如果是跨平台的.NET MAUI应用,建议通过依赖服务封装蓝牙操作,避免直接在共享代码中写入Android平台专属代码,保证iOS、Windows等平台的兼容性。
内容的提问来源于stack exchange,提问作者Thomas Carlton
相关产品推荐
相关产品推荐

