diff options
author | 2022-02-10 19:15:44 +0000 | |
---|---|---|
committer | 2022-02-10 19:15:44 +0000 | |
commit | db33f67f8ddbfb29acbe6fb57763cc2f029ec83b (patch) | |
tree | fd6e20f8cd8c5ee52fac9631d01dc7e93156afa7 | |
parent | ffccd289b579419ab92c39d3750d3d9b4368881b (diff) | |
parent | bb287ae2d7f5c2d1831883c4f103b3eae93b0e23 (diff) |
Merge "Use property instead of meta-data for primary CDM service"
3 files changed, 20 insertions, 14 deletions
diff --git a/core/java/android/companion/CompanionDeviceManager.java b/core/java/android/companion/CompanionDeviceManager.java index 36802eabee15..15685000d6ba 100644 --- a/core/java/android/companion/CompanionDeviceManager.java +++ b/core/java/android/companion/CompanionDeviceManager.java @@ -780,9 +780,9 @@ public final class CompanionDeviceManager { } /** - * Notify the system that the given self-managed association has just 'appeared'. + * Notify the system that the given self-managed association has just appeared. * This causes the system to bind to the companion app to keep it running until the association - * is reported as 'disappeared' + * is reported as disappeared * * <p>This API is only available for the companion apps that manage the connectivity by * themselves.</p> @@ -803,7 +803,7 @@ public final class CompanionDeviceManager { } /** - * Notify the system that the given self-managed association has just 'disappeared'. + * Notify the system that the given self-managed association has just disappeared. * This causes the system to unbind to the companion app. * * <p>This API is only available for the companion apps that manage the connectivity by diff --git a/core/java/android/companion/CompanionDeviceService.java b/core/java/android/companion/CompanionDeviceService.java index cb96ebe8bca9..9e1bf4bb9484 100644 --- a/core/java/android/companion/CompanionDeviceService.java +++ b/core/java/android/companion/CompanionDeviceService.java @@ -77,10 +77,11 @@ import java.util.Objects; * {@link #onDeviceAppeared(AssociationInfo)} and {@link #onDeviceDisappeared(AssociationInfo)} * only to one "primary" services. * Applications that declare multiple {@link CompanionDeviceService}-s should indicate the "primary" - * service using "android.companion.primary" tag. + * service using "android.companion.PROPERTY_PRIMARY_COMPANION_DEVICE_SERVICE" service level + * property. * <pre>{@code - * <meta-data - * android:name="android.companion.primary" + * <property + * android:name="android.companion.PROPERTY_PRIMARY_COMPANION_DEVICE_SERVICE" * android:value="true" /> * }</pre> * diff --git a/services/companion/java/com/android/server/companion/PackageUtils.java b/services/companion/java/com/android/server/companion/PackageUtils.java index 818f0cf8dd42..a2b20593a9cb 100644 --- a/services/companion/java/com/android/server/companion/PackageUtils.java +++ b/services/companion/java/com/android/server/companion/PackageUtils.java @@ -18,7 +18,6 @@ package com.android.server.companion; import static android.content.pm.PackageManager.FEATURE_COMPANION_DEVICE_SETUP; import static android.content.pm.PackageManager.GET_CONFIGURATIONS; -import static android.content.pm.PackageManager.GET_META_DATA; import static android.content.pm.PackageManager.GET_PERMISSIONS; import static com.android.server.companion.CompanionDeviceManagerService.TAG; @@ -53,7 +52,8 @@ import java.util.Map; final class PackageUtils { private static final Intent COMPANION_SERVICE_INTENT = new Intent(CompanionDeviceService.SERVICE_INTERFACE); - private static final String META_DATA_PRIMARY_TAG = "android.companion.primary"; + private static final String PROPERTY_PRIMARY_TAG = + "android.companion.PROPERTY_PRIMARY_COMPANION_DEVICE_SERVICE"; static @Nullable PackageInfo getPackageInfo(@NonNull Context context, @UserIdInt int userId, @NonNull String packageName) { @@ -84,9 +84,8 @@ final class PackageUtils { static @NonNull Map<String, List<ComponentName>> getCompanionServicesForUser( @NonNull Context context, @UserIdInt int userId) { final PackageManager pm = context.getPackageManager(); - final ResolveInfoFlags flags = ResolveInfoFlags.of(GET_META_DATA); - final List<ResolveInfo> companionServices = - pm.queryIntentServicesAsUser(COMPANION_SERVICE_INTENT, flags, userId); + final List<ResolveInfo> companionServices = pm.queryIntentServicesAsUser( + COMPANION_SERVICE_INTENT, ResolveInfoFlags.of(0), userId); final Map<String, List<ComponentName>> packageNameToServiceInfoList = new HashMap<>(); @@ -109,7 +108,8 @@ final class PackageUtils { service.packageName, it -> new LinkedList<>()); final ComponentName componentName = service.getComponentName(); - if (isPrimaryCompanionDeviceService(service)) { + + if (isPrimaryCompanionDeviceService(pm, componentName)) { // "Primary" service should be at the head of the list. services.addFirst(componentName); } else { @@ -120,7 +120,12 @@ final class PackageUtils { return packageNameToServiceInfoList; } - private static boolean isPrimaryCompanionDeviceService(ServiceInfo service) { - return service.metaData != null && service.metaData.getBoolean(META_DATA_PRIMARY_TAG); + private static boolean isPrimaryCompanionDeviceService(@NonNull PackageManager pm, + @NonNull ComponentName componentName) { + try { + return pm.getProperty(PROPERTY_PRIMARY_TAG, componentName).getBoolean(); + } catch (PackageManager.NameNotFoundException e) { + return false; + } } } |