当前位置: 首页 > article >正文

Android Bluetooth 问题:BluetoothAdapter enable 方法失效

问题描述与处理策略

1、问题描述
BluetoothAdapter enable 方法失效
  1. 在 Android 开发中,BluetoothAdapter 类提供了对本地蓝牙适配器的访问

  2. 从 Android 6.0(API 级别 23)开始,enable 方法已经被废弃,并且可能不再起作用,因为 Android 系统对蓝牙的管理方式发生了变化,应用程序不再能够直接启用或禁用蓝牙

  3. 在 Android 6.0 及更高版本中,用户可以手动启用蓝牙,或者通过系统的蓝牙设置对话框来请求用户启用蓝牙

  4. 如果应用程序需要开启蓝牙,应该检查蓝牙是否已启用,并在未启用时引导用户到系统设置去启用它

  • 检测并引导用户开启蓝牙的合理步骤如下
  1. 检查蓝牙是否已启用:使用BluetoothAdapter.isEnabled 方法来检查蓝牙是否已启用

  2. 请求用户启用蓝牙:如果蓝牙未启用,使用 BluetoothAdapter.ACTION_REQUEST_ENABLE 这个 Intent 来启动一个活动,该活动会请求用户启用蓝牙

  3. 处理用户响应:当用户响应了启用蓝牙的请求后,处理结果,在 onActivityResult 方法中检查用户是否同意了启用蓝牙

  4. 继续蓝牙操作:一旦用户启用了蓝牙,继续蓝牙操作,例如,扫描设备、连接设备等

2、处理策略
// 假设原来是这样的

BluetoothManager bluetoothManager = (BluetoothManager) this.getSystemService(Context.BLUETOOTH_SERVICE);

BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter();

Log.i(TAG, "BluetoothAdapter isEnabled: " + bluetoothAdapter.isEnabled());

if (!bluetoothAdapter.isEnabled()) {
    boolean enable = bluetoothAdapter.enable();
    Log.i(TAG, "BluetoothAdapter enable result: " + enable);
}
// 需要修改成这样的

BluetoothManager bluetoothManager = (BluetoothManager) this.getSystemService(Context.BLUETOOTH_SERVICE);

BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter();

Log.i(TAG, "BluetoothAdapter isEnabled: " + bluetoothAdapter.isEnabled());

if (!bluetoothAdapter.isEnabled()) {
    ActivityResultLauncher<Intent> register = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {
                    if (result == null) {
                        Log.i(TAG, "开启蓝牙失败:result 为 null");
                        return;
                    }
                    int resultCode = result.getResultCode();
                    if (resultCode != Activity.RESULT_OK) {
                        Log.i(TAG, "开启蓝牙失败:resultCode 为 " + resultCode);
                        return;
                    }

                    Log.i(TAG, "开启蓝牙成功:resultCode 为 " + resultCode);
                }
            });

    Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    register.launch(intent);
}

http://www.kler.cn/a/457577.html

相关文章:

  • 30分钟学会css
  • SpringMVC(六)拦截器
  • numpy数组学习
  • 云备份项目--服务端编写
  • 【Android项目学习】3. MVVMHabit
  • java基础学习(接口和抽象类的区别)
  • 【2025最新计算机毕业设计】基于SpringBoot的网上服装商城系统(高质量项目,可定制)【提供源码+答辩PPT+文档+项目部署】
  • 一起来看--红黑树
  • TVS二极管选型【EMC】
  • 从0入门自主空中机器人-2-2【无人机硬件选型-PX4篇】
  • 每日一题 354. 俄罗斯套娃信封问题
  • 2025年阿斯利康GATE笔试测评春招校招社招笔试入职测评行测题型解读揭秘
  • MATLAB 车牌自动识别系统设计 SVM支持向量机方法 车牌识别
  • 代码随想录第60天
  • python opencv的sift特征检测(Scale-Invariant Feature Transform)
  • 嵌入式系统 第十二讲 块设备和驱动程序设计
  • 跟着问题学18——大模型基础transformer模型详解(4)解码器
  • PilotGo
  • MySQL--》如何在MySQL中打造高效优化索引
  • 1、单片机寄存器-io输入实验笔记
  • Python毕业设计选题:基于python的酒店推荐系统_django+hadoop
  • React 之 Redux =》 理解+应用
  • rabbitmq相关使用
  • JavaScript:字符串JSON互转
  • 2.微服务灰度发布落地实践(agent实现)
  • flask后端开发(12):邮箱验证码功能实现