Save the date! Android Dev Summit is coming to Mountain View, CA on November 7-8, 2018.

Companion device pairing

On devices running Android 8.0 (API level 26) and higher, you can customize the pairing request dialog when trying to pair with companion devices over Bluetooth, BLE, and Wi-Fi.

In your app, you can specify whether users see a list of possible companion devices or only one suggestion for a companion device. You can also filter the items that appear in the pairing request dialog, such as by type (Bluetooth, BLE, and Wi-Fi) or by device name.

The following code snippet demonstrates how to display a dialog asking whether the user wants to pair a handheld device with a single, Bluetooth-connected companion device named "My device":

public class MyDeviceSelectionActivity {
    private CompanionDeviceManager mDeviceManager;
    private AssociationRequest mPairingRequest;
    private BluetoothDeviceFilter mDeviceFilter;

    private static final int SELECT_DEVICE_REQUEST_CODE = 42;

    public void onCreate() {
        // ...
        mDeviceManager = getSystemService(CompanionDeviceManager.class);

        // To skip filtering based on name and supported feature flags (UUIDs),
        // don't include calls to setNamePattern() and addServiceUuid(),
        // respectively. This example uses Bluetooth.
        mDeviceFilter = new BluetoothDeviceFilter.Builder()
                .setNamePattern(Pattern.compile("My device"))
                .addServiceUuid(new ParcelUuid(new UUID(0x123abcL, -1L)))

        // The argument provided in setSingleDevice() determines whether a single
        // device name or a list of device names is presented to the user as
        // pairing options.
        mPairingRequest = new AssociationRequest.Builder()

        // When the app tries to pair with the Bluetooth device, show the
        // appropriate pairing request dialog to the user.
                new CompanionDeviceManager.Callback() {
                    public void onDeviceFound(IntentSender chooserLauncher) {
                                SELECT_DEVICE_REQUEST_CODE, null, 0, 0, 0);

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == SELECT_DEVICE_REQUEST_CODE &&
                resultCode == Activity.RESULT_OK) {
            // User has chosen to pair with the Bluetooth device.
            BluetoothDevice deviceToPair =

            // ... Continue interacting with the paired device.