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
This commit is contained in:
Guojing Yuan
2022-07-01 20:32:42 +00:00
parent 4fa2a0546f
commit fd755df5c4

View File

@@ -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");
}
/**