From 109454a1f99b5414316b6c5b7d0c0862af1d319d Mon Sep 17 00:00:00 2001 From: Daniel Bright Date: Tue, 26 Jan 2021 12:20:32 -0800 Subject: [PATCH] Add enforcement parameter to RequiresFeature * Allows for a broader range of enforcement checks * Designed to match androix so that it can be easily slotted into Android Studio lint checks Test: Built Bug: 173735303 Change-Id: Ia4cc8be8fdccbdeeecee956e4ccf02bda6d91845 Merged-In: Ia4cc8be8fdccbdeeecee956e4ccf02bda6d91845 --- core/java/android/annotation/RequiresFeature.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/core/java/android/annotation/RequiresFeature.java b/core/java/android/annotation/RequiresFeature.java index fc93f03d76cf9..08861d42be397 100644 --- a/core/java/android/annotation/RequiresFeature.java +++ b/core/java/android/annotation/RequiresFeature.java @@ -30,7 +30,6 @@ import java.lang.annotation.Target; * Denotes that the annotated element requires one or more device features. This * is used to auto-generate documentation. * - * @see PackageManager#hasSystemFeature(String) * @hide */ @Retention(SOURCE) @@ -38,8 +37,16 @@ import java.lang.annotation.Target; public @interface RequiresFeature { /** * The name of the device feature that is required. - * - * @see PackageManager#hasSystemFeature(String) */ String value(); + + /** + * Defines the name of the method that should be called to check whether the feature is + * available, using the same signature format as javadoc. The feature checking method can have + * multiple parameters, but the feature name parameter must be of type String and must also be + * the first String-type parameter. + *

+ * By default, the enforcement is {@link PackageManager#hasSystemFeature(String)}. + */ + String enforcement() default("android.content.pm.PackageManager#hasSystemFeature"); }