【问题标题】:Deprecated method "startActivityForResult()" vs properly bluetooth set up不推荐使用的方法“startActivityForResult()”与正确设置蓝牙
【发布时间】:2021-07-13 12:51:34
【问题描述】:

嘿,我尝试根据android dev官方网站上的信息制作蓝牙服务。但是我遇到了不推荐使用的方法 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);
        }

    }

【问题讨论】:

    标签: java android bluetooth deprecated


    【解决方案1】:

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

    根据Android Developers,您需要扩展ActivityResultContract,在其中通过覆盖2个方法来实现活动结果调用的输入/输出:

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

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

    正确实现该合约类后,您只需从该类创建一个实例并将其传递给registerForActivityResult(…)您的活动开始之前),它会返回某种启动器。

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

    享受:)

    【讨论】:

      猜你喜欢
      • 2014-05-10
      • 2021-10-11
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 2022-11-01
      • 2011-11-29
      相关资源
      最近更新 更多