Android - 包含蓝牙设备的ArrayList保持为空

时间:2016-11-11 21:19:45

标签: java android bluetooth

我正在尝试发现所有可用的蓝牙设备并转到另一项活动。 然而,即使在查看Android Docs时,我也无法弄清楚为什么我无法发现任何设备而我的ArrayList仍然是空的。

OnClick执行此操作:

mBluetoothAdapter.startDiscovery();

我的广播监听器也可以工作,但每次都没有返回,并且ArrayList保持为空。

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();

    if (BluetoothDevice.ACTION_FOUND.equals(action)) {
        BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
        mDeviceList.add(device);
        showToast("Found device " + device.getName());
    }

    if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
        final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
        if (state == BluetoothAdapter.STATE_ON) {
            showToast("Enabled");
            showEnabled();
        }
    }
    if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
        mDeviceList = new ArrayList<>();
        mProgressDlg.show();
    }
    if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
        mProgressDlg.dismiss();

        Intent newIntent = new Intent(MainScreen.this, DeviceListActivity.class);
        if (mDeviceList.isEmpty()){
            Log.d("onReceive: ", "EMPTY");
        }
        newIntent.putParcelableArrayListExtra("device.list", mDeviceList);

        startActivity(newIntent);
    }

}

};

GIST

1 个答案:

答案 0 :(得分:0)

回答了我自己的问题。

修复方法是使用应用权限启用位置。

显然,这是Android Marshmallow

所必需的