打开蓝牙,在onActivityResult中返回错误的请求代码

时间:2013-08-14 11:48:45

标签: android bluetooth

这是我的代码,用于打开蓝牙:

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.

2 个答案:

答案 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);,这解决了我的问题。