弃用的方法 "startActivityForResult()" 与正确的蓝牙设置

Deprecated method "startActivityForResult()" vs properly bluetooth set up

嘿,我尝试根据官方android开发网站上的信息制作蓝牙服务。但是我遇到了弃用方法 startActivityForResult()。我应该怎么做才能正确打开蓝牙设备?

这是我使用已弃用方法的代码:

private void enableBt(View view){
        if(myBluetoothAdapter==null){
            //we don't have bt in this device
        }
        else if(!myBluetoothAdapter.isEnabled()){
            Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
        }

    }

这是一个特殊的 AndroidX 扩展,包装了 startActivityForResult 并提供了一种更简单的方法。

根据 Android Developers, you need to extend ActivityResultContract,您在其中通过覆盖 2 个方法为 activity 结果调用实现了 input/output:

  1. 根据输入创建意图的方法。
  2. 根据 activity 结果解析输出的方法。

在您的情况下,您没有输入,因此您可以使用 Void 输入类型(虽然不知道您的输出)。

正确实施该合同 class 后,您只需从该 class 创建一个实例并将其传递给 registerForActivityResult(…) 您的activity 已启动),returns 某种启动器。

您使用该启动器并调用 launch 而不是 startActivityForResult

尽情享受吧:)