Android Bluetooth Paring Input Device <p>I am trying to make a pairing by code and it works only for normal devices. If I use a bluetooth scanner it pairs with it but the device doesn't work till I go to android settings and select the Input Device checkbox. How can I do this by code?</p> <p>Thank you.</p> <p>Here is my pairing code:</p> <pre><code>public static BluetoothSocket createL2CAPBluetoothSocket(String address, int psm){ return createBluetoothSocket(TYPE_L2CAP, -1, false,false, address, psm); } // method for creating a bluetooth client socket private static BluetoothSocket createBluetoothSocket( int type, int fd, boolean auth, boolean encrypt, String address, int port){ try { Constructor&lt;BluetoothSocket&gt; constructor = BluetoothSocket.class.getDeclaredConstructor( int.class, int.class,boolean.class,boolean.class,String.class, int.class); constructor.setAccessible(true); BluetoothSocket clientSocket = (BluetoothSocket) constructor.newInstance(type,fd,auth,encrypt,address,port); return clientSocket; }catch (Exception e) { return null; } } private void doPair(final BluetoothDevice device, final int deviceTag) { try { Method method = device.getClass().getMethod("createBond", (Class[]) null); method.invoke(device, (Object[]) null); } catch (Exception e) { Log.e(LOG_TAG, "Cannot pair device", e); } BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) { final int state = intent.getIntExtra( BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR); final int prevState = intent.getIntExtra( BluetoothDevice.EXTRA_PREVIOUS_BOND_STATE, BluetoothDevice.ERROR); if (state == BluetoothDevice.BOND_BONDED &amp;&amp; prevState == BluetoothDevice.BOND_BONDING) { Log.d(LOG_TAG, "Paired with new device"); if (listener != null) { listener.onBluetoothPairedDeviceChange(bluetoothAdapter .getBondedDevices().iterator().next() .getName(), deviceTag); } context.unregisterReceiver(this); } else if (state == BluetoothDevice.BOND_NONE &amp;&amp; prevState == BluetoothDevice.BOND_BONDING) { Log.d(LOG_TAG, "Cannot pair with new device"); if (listener != null) { listener.onBluetoothStatusChange(BluetoothHelper.IDLE_STATUS); } context.unregisterReceiver(this); } } } }; IntentFilter intent = new IntentFilter( BluetoothDevice.ACTION_BOND_STATE_CHANGED); context.registerReceiver(mReceiver, intent); } </code></pre>