会飞的呱蛙子 2023-04-23 02:00 采纳率: 100%
浏览 62
已结题

为什么sdk31之后getDefaultAdapte()就过时了?

我这两天用的sdk为31的,然后获取蓝牙适配器,getDefaultAdapter()这个方法没法用,为啥sdk高了之后这个就过时了?除了降低版本,还有啥能获取蓝牙适配器?

  • 写回答

2条回答 默认 最新

  • 守时间的孤岛 2023-04-23 09:33
    关注

    该回答引用chatgpt:
    在Android 10之前,可以使用 BluetoothAdapter.getDefaultAdapter() 来获取默认的蓝牙适配器。但是,从Android 10开始,该方法被标记为过时,原因是在Android 10中,应用程序需要启用位置权限才能访问蓝牙适配器。

    取而代之的是,开发者可以通过调用 BluetoothManager 的 getAdapter() 方法来获取蓝牙适配器。BluetoothManager 可以通过 Context.getSystemService(Context.BLUETOOTH_SERVICE) 方法获取。下面是获取蓝牙适配器的示例代码:

    BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
    BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter();
    
    
    

    需要注意的是,如果设备不支持蓝牙,getAdapter() 方法将返回 null。

    在使用新的方法获取蓝牙适配器之前,还需要在应用程序的 AndroidManifest.xml 文件中添加以下权限:

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

    其中, android.permission.ACCESS_FINE_LOCATION 权限是必需的,因为在 Android 10 中,蓝牙扫描和连接需要该权限。

    值得注意的是,如果你的应用程序只需要在 Android 10 及更高版本上运行,那么必须使用新的方法获取蓝牙适配器,否则应用程序将无法访问蓝牙适配器。如果你的应用程序需要支持旧版本的 Android,那么可以通过以下方式来处理:

    
    BluetoothAdapter bluetoothAdapter;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
        bluetoothAdapter = bluetoothManager.getAdapter();
    } else {
        bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    }
    
    

    这样,如果设备运行的是 Android 10 或更高版本,就会使用新的方法获取蓝牙适配器,否则将使用旧的方法获取。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月1日
  • 已采纳回答 4月23日
  • 创建了问题 4月23日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测