From fd755df5c482596c50feeb0063fb788395361702 Mon Sep 17 00:00:00 2001 From: Guojing Yuan Date: Fri, 1 Jul 2022 20:32:42 +0000 Subject: [PATCH] Fix feature flag check for FEATURE_COMPANION_DEVICE_SETUP Fix: 237723969 Test: manually tested association flow and verified the feature flag has been checked. Change-Id: I556089e2b024eaf87937e57e8825ae0e7c61e02c --- .../server/companion/PackageUtils.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/services/companion/java/com/android/server/companion/PackageUtils.java b/services/companion/java/com/android/server/companion/PackageUtils.java index 622396ccfa368..17c22e3afe9e5 100644 --- a/services/companion/java/com/android/server/companion/PackageUtils.java +++ b/services/companion/java/com/android/server/companion/PackageUtils.java @@ -30,6 +30,7 @@ import android.companion.CompanionDeviceService; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.pm.FeatureInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.PackageInfoFlags; @@ -39,8 +40,6 @@ import android.content.pm.ServiceInfo; import android.os.Binder; import android.util.Slog; -import com.android.internal.util.ArrayUtils; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -65,15 +64,18 @@ final class PackageUtils { static void enforceUsesCompanionDeviceFeature(@NonNull Context context, @UserIdInt int userId, @NonNull String packageName) { - final boolean requested = ArrayUtils.contains( - getPackageInfo(context, userId, packageName).reqFeatures, - FEATURE_COMPANION_DEVICE_SETUP); + String requiredFeature = FEATURE_COMPANION_DEVICE_SETUP; - if (requested) { - throw new IllegalStateException("Must declare uses-feature " - + FEATURE_COMPANION_DEVICE_SETUP - + " in manifest to use this API"); + FeatureInfo[] requestedFeatures = getPackageInfo(context, userId, packageName).reqFeatures; + for (int i = 0; i < requestedFeatures.length; i++) { + if (requiredFeature.equals(requestedFeatures[i].name)) { + return; + } } + + throw new IllegalStateException("Must declare uses-feature " + + requiredFeature + + " in manifest to use this API"); } /**