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

Commit b070d6d2 authored by Chienyuan Huang's avatar Chienyuan Huang Committed by Android (Google) Code Review
Browse files

Merge "Add API to get identity address"

parents 2384faec 139b970a
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -1597,6 +1597,19 @@ public class AdapterService extends Service {
            return service.mAdapterProperties.getUuids();
        }

        @Override
        public String getIdentityAddress(String address) {
            AdapterService service = getService();
            if (service == null || !callerIsSystemOrActiveUser(TAG, "getIdentityAddress")
                    || !Utils.checkConnectPermissionForDataDelivery(
                            service, Utils.getCallingAttributionSource(mService),
                                "AdapterService getIdentityAddress")) {
                return null;
            }
            enforceBluetoothPrivilegedPermission(service);
            return service.getIdentityAddress(address);
        }

        @Override
        public String getName(AttributionSource attributionSource) {
            AdapterService service = getService();
@@ -3045,7 +3058,7 @@ public class AdapterService extends Service {

    public byte[] getByteIdentityAddress(BluetoothDevice device) {
        DeviceProperties deviceProp = mRemoteDevices.getDeviceProperties(device);
        if (deviceProp.isConsolidated()) {
        if (deviceProp != null && deviceProp.isConsolidated()) {
            return Utils.getBytesFromAddress(deviceProp.getIdentityAddress());
        } else {
            return Utils.getByteAddress(device);
@@ -3063,7 +3076,7 @@ public class AdapterService extends Service {
    public String getIdentityAddress(String address) {
        BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(address.toUpperCase());
        DeviceProperties deviceProp = mRemoteDevices.getDeviceProperties(device);
        if (deviceProp.isConsolidated()) {
        if (deviceProp != null && deviceProp.isConsolidated()) {
            return deviceProp.getIdentityAddress();
        } else {
            return address;
+1 −0
Original line number Diff line number Diff line
@@ -108,6 +108,7 @@ package android.bluetooth {
    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean createBondOutOfBand(int, @Nullable android.bluetooth.OobData, @Nullable android.bluetooth.OobData);
    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int disconnect();
    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean fetchUuidsWithSdp(int);
    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public String getIdentityAddress();
    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public byte[] getMetadata(int);
    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getSimAccessPermission();
    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean isConnected();
+27 −0
Original line number Diff line number Diff line
@@ -1297,6 +1297,33 @@ public final class BluetoothDevice implements Parcelable, Attributable {
        return "XX:XX:XX" + getAddress().substring(8);
    }

    /**
     * Returns the identity address of this BluetoothDevice.
     * <p> For example, "00:11:22:AA:BB:CC".
     *
     * @return Bluetooth identity address as a string
     * @hide
     */
    @SystemApi
    @RequiresBluetoothConnectPermission
    @RequiresPermission(allOf = {
            android.Manifest.permission.BLUETOOTH_CONNECT,
            android.Manifest.permission.BLUETOOTH_PRIVILEGED,
    })
    public @Nullable String getIdentityAddress() {
        final IBluetooth service = sService;
        if (service == null) {
            Log.e(TAG, "BT not enabled. Cannot get identity address");
            return null;
        }
        try {
            return service.getIdentityAddress(mAddress);
        } catch (RemoteException e) {
            Log.e(TAG, "", e);
        }
        return null;
    }

    /**
     * Get the friendly Bluetooth name of the remote device.
     *
+2 −0
Original line number Diff line number Diff line
@@ -58,6 +58,8 @@ interface IBluetooth
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
    boolean setName(in String name, in AttributionSource attributionSource);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
    String getIdentityAddress(in String address);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
    String getName(in AttributionSource attributionSource);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE)")
    int getNameLengthForAdvertise(in AttributionSource attributionSource);