Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3780ca49 authored by Rahul Sabnis's avatar Rahul Sabnis
Browse files

Makes BluetoothDevice#setAlias a public API

Tag: #feature
Bug: 181093329
Test: atest BluetoothDeviceTest
Change-Id: Ib94bedab5d6d4c63a19096f61187f58dd8937b55
parent b5a5f5b1
Loading
Loading
Loading
Loading
+21 −11
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.annotation.SdkConstant.SdkConstantType;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.app.PropertyInvalidatedCache;
import android.companion.AssociationRequest;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.os.Build;
@@ -1211,8 +1212,7 @@ public final class BluetoothDevice implements Parcelable {
    }

    /**
     * Get the Bluetooth alias of the remote device.
     * <p>Alias is the locally modified name of a remote device.
     * Get the locally modifiable name (alias) of the remote Bluetooth device.
     *
     * @return the Bluetooth alias, the friendly device name if no alias, or
     * null if there was a problem
@@ -1238,25 +1238,35 @@ public final class BluetoothDevice implements Parcelable {
    }

    /**
     * Set the Bluetooth alias of the remote device.
     * <p>Alias is the locally modified name of a remote device.
     * <p>This methoid overwrites the alias. The changed
     * alias is saved in the local storage so that the change
     * is preserved over power cycle.
     * Sets the locally modifiable name (alias) of the remote Bluetooth device. This method
     * overwrites the previously stored alias. The new alias is saved in local
     * storage so that the change is preserved over power cycles.
     *
     * @return true on success, false on error
     * @hide
     * <p>This method requires the calling app to be associated with Companion Device Manager (see
     * {@link android.companion.CompanionDeviceManager#associate(AssociationRequest,
     * android.companion.CompanionDeviceManager.Callback, Handler)}) and have the {@link
     * android.Manifest.permission#BLUETOOTH} permission. Alternatively, if the caller has the
     * {@link android.Manifest.permission#BLUETOOTH_PRIVILEGED} permission, they can bypass the
     * Companion Device Manager association requirement.
     *
     * @param alias is the new locally modifiable name for the remote Bluetooth device which must be
     *              non-null and not the empty string.
     * @return {@code true} if the alias is successfully set, {@code false} on error
     * @throws IllegalArgumentException if the alias is {@code null} or the empty string
     */
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    @RequiresPermission(Manifest.permission.BLUETOOTH)
    public boolean setAlias(@NonNull String alias) {
        if (alias == null || alias.isEmpty()) {
            throw new IllegalArgumentException("Cannot set the alias to null or the empty string");
        }
        final IBluetooth service = sService;
        if (service == null) {
            Log.e(TAG, "BT not enabled. Cannot set Remote Device name");
            return false;
        }
        try {
            return service.setRemoteAlias(this, alias);
            BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
            return service.setRemoteAlias(this, alias, adapter.getOpPackageName());
        } catch (RemoteException e) {
            Log.e(TAG, "", e);
        }