嘿,我尝试根据官方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
并提供一种更简单的方法。
根据安卓开发者 https://developer.android.com/reference/androidx/fragment/app/Fragment#startActivityForResult(android.content.Intent,%20int),你需要延长活动结果契约 https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContract,其中您通过重写 2 个方法来实现活动结果调用的输入/输出:
- 基于输入创建意图的方法。
- 根据活动结果解析输出的方法。
在你的情况下,你没有输入,所以你可以使用Void
输入的类型(但不知道你的输出)。
正确实现该合约类后,您只需从该类创建一个实例并将其传递给registerForActivityResult(…)
(before您的活动已启动),它返回某种启动器。
您使用该启动器并调用launch
代替startActivityForResult
.
Enjoy :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)