根据开发者指南,可以请求启用蓝牙:
http://developer.android.com/guide/topics/connectivity/bluetooth.html#SettingUp
if (!mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
在我的实现中,这会正确创建请求,并向用户显示请求对话框。
我的问题是立即调用 onActivityResult(),以便在对话框出现之前我有结果。返回的 requestCode 与一组匹配(本例中为9001), resultCode 始终为0(Activity.RESULT_CANCELED)。
我认为这是4.3中的一个错误,不幸的是我只有4.3个设备。阅读说明和来源似乎不应该在用户与对话框交互之前调用 onActivityResult(),这样任何人都可以确认这是一个错误或解释我做错了吗?
使用相同的结果测试以下内容:
答案 0 :(得分:5)
4.1.1上的测试看起来像指南是完全错误的。调用startActivityForResult对此intent无法正常工作,并且在用户甚至有机会与对话框进行交互之前调用onActivityResult。
因此,了解用户何时启用蓝牙的可靠方法是收听相关的ACTION_STATE_CHANGED事件。
答案 1 :(得分:4)
startActivityForResult不适用于singleInstance。您的活动是否配置为单个实例? (机器人:launchMode = “singleInstance”)