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

Commit 9f29617d authored by Eugene Susla's avatar Eugene Susla Committed by Android (Google) Code Review
Browse files

Merge "Add system feature for Companion Device Manager"

parents 8c97b51a 7c3eef2f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -10627,6 +10627,7 @@ package android.content.pm {
    field public static final java.lang.String FEATURE_CAMERA_FLASH = "android.hardware.camera.flash";
    field public static final java.lang.String FEATURE_CAMERA_FRONT = "android.hardware.camera.front";
    field public static final java.lang.String FEATURE_CAMERA_LEVEL_FULL = "android.hardware.camera.level.full";
    field public static final java.lang.String FEATURE_COMPANION_DEVICE_SETUP = "android.software.companion_device_setup";
    field public static final java.lang.String FEATURE_CONNECTION_SERVICE = "android.software.connectionservice";
    field public static final java.lang.String FEATURE_CONSUMER_IR = "android.hardware.consumerir";
    field public static final java.lang.String FEATURE_DEVICE_ADMIN = "android.software.device_admin";
+1 −0
Original line number Diff line number Diff line
@@ -11283,6 +11283,7 @@ package android.content.pm {
    field public static final java.lang.String FEATURE_CAMERA_FLASH = "android.hardware.camera.flash";
    field public static final java.lang.String FEATURE_CAMERA_FRONT = "android.hardware.camera.front";
    field public static final java.lang.String FEATURE_CAMERA_LEVEL_FULL = "android.hardware.camera.level.full";
    field public static final java.lang.String FEATURE_COMPANION_DEVICE_SETUP = "android.software.companion_device_setup";
    field public static final java.lang.String FEATURE_CONNECTION_SERVICE = "android.software.connectionservice";
    field public static final java.lang.String FEATURE_CONSUMER_IR = "android.hardware.consumerir";
    field public static final java.lang.String FEATURE_DEVICE_ADMIN = "android.software.device_admin";
+1 −0
Original line number Diff line number Diff line
@@ -10663,6 +10663,7 @@ package android.content.pm {
    field public static final java.lang.String FEATURE_CAMERA_FLASH = "android.hardware.camera.flash";
    field public static final java.lang.String FEATURE_CAMERA_FRONT = "android.hardware.camera.front";
    field public static final java.lang.String FEATURE_CAMERA_LEVEL_FULL = "android.hardware.camera.level.full";
    field public static final java.lang.String FEATURE_COMPANION_DEVICE_SETUP = "android.software.companion_device_setup";
    field public static final java.lang.String FEATURE_CONNECTION_SERVICE = "android.software.connectionservice";
    field public static final java.lang.String FEATURE_CONSUMER_IR = "android.hardware.consumerir";
    field public static final java.lang.String FEATURE_DEVICE_ADMIN = "android.software.device_admin";
+31 −1
Original line number Diff line number Diff line
@@ -22,10 +22,13 @@ import android.annotation.Nullable;
import android.app.PendingIntent;
import android.content.Context;
import android.content.IntentSender;
import android.content.pm.PackageManager;
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
import android.util.Log;

import java.util.Collections;
import java.util.List;

/**
@@ -40,6 +43,9 @@ import java.util.List;
 */
public final class CompanionDeviceManager {

    private static final boolean DEBUG = false; //TODO
    private static final String LOG_TAG = "CompanionDeviceManager";

    /**
     * A device, returned in the activity result of the {@link IntentSender} received in
     * {@link Callback#onDeviceFound}
@@ -81,7 +87,7 @@ public final class CompanionDeviceManager {

    /** @hide */
    public CompanionDeviceManager(
            @NonNull ICompanionDeviceManager service, @NonNull Context context) {
            @Nullable ICompanionDeviceManager service, @NonNull Context context) {
        mService = service;
        mContext = context;
    }
@@ -120,6 +126,10 @@ public final class CompanionDeviceManager {
            @NonNull AssociationRequest request,
            @NonNull Callback callback,
            @Nullable Handler handler) {
        if (!checkFeaturePresent()) {
            return;
        }

        final Handler finalHandler = handler != null
                ? handler
                : new Handler(Looper.getMainLooper());
@@ -153,6 +163,9 @@ public final class CompanionDeviceManager {
     */
    @NonNull
    public List<String> getAssociations() {
        if (!checkFeaturePresent()) {
            return Collections.emptyList();
        }
        try {
            return mService.getAssociations(mContext.getPackageName());
        } catch (RemoteException e) {
@@ -172,6 +185,9 @@ public final class CompanionDeviceManager {
     * @param deviceMacAddress the MAC address of device to disassociate from this app
     */
    public void disassociate(@NonNull String deviceMacAddress) {
        if (!checkFeaturePresent()) {
            return;
        }
        try {
            mService.disassociate(deviceMacAddress, mContext.getPackageName());
        } catch (RemoteException e) {
@@ -181,14 +197,28 @@ public final class CompanionDeviceManager {

    /** @hide */
    public void requestNotificationAccess() {
        if (!checkFeaturePresent()) {
            return;
        }
        //TODO implement
        throw new UnsupportedOperationException("Not yet implemented");
    }

    /** @hide */
    public boolean haveNotificationAccess() {
        if (!checkFeaturePresent()) {
            return false;
        }
        //TODO implement
        throw new UnsupportedOperationException("Not yet implemented");
    }

    private boolean checkFeaturePresent() {
        boolean featurePresent = mService == null;
        if (!featurePresent && DEBUG) {
            Log.d(LOG_TAG, "Feature " + PackageManager.FEATURE_COMPANION_DEVICE_SETUP
                    + " not available");
        }
        return featurePresent;
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -2234,6 +2234,15 @@ public abstract class PackageManager {
    @SdkConstant(SdkConstantType.FEATURE)
    public static final String FEATURE_PRINTING = "android.software.print";

    /**
     * Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}:
     * The device supports {@link android.companion.CompanionDeviceManager#associate associating}
     * with devices via {@link android.companion.CompanionDeviceManager}.
     */
    @SdkConstant(SdkConstantType.FEATURE)
    public static final String FEATURE_COMPANION_DEVICE_SETUP
            = "android.software.companion_device_setup";

    /**
     * Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}:
     * The device can perform backup and restore operations on installed applications.
Loading