这是我的代码,用于打开蓝牙:
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
此外:
public static final int REQUEST_ENABLE_BT = 9;
这是我的onActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUEST_ENABLE_BT:
if (resultCode == Activity.RESULT_OK) {
bluetoothSetupDone();
} else {
// User did not enable Bluetooth or an error occurred
}
break;
default:
super.onActivityResult(requestCode, resultCode, data);
break;
}
}
结果代码是正确的,但请求代码不是。
即使用户在打开蓝牙的弹出对话框中按否,也不是。 onActivityResult中requestCode变量的值是一个随机数(196617),但它应该是9.
答案 0 :(得分:2)
该死。应该用过:
getSupportActivity().startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
wrong requestCode in onActivityResult
http://blog.tgrigsby.com/2012/04/18/android-fragment-frustration.aspx
答案 1 :(得分:0)
我从一个片段中呼叫startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
,所以我添加了getActivity().startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
,这解决了我的问题。