All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.android.app.time.Capabilities Maven / Gradle / Ivy

/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.app.time;

import android.annotation.IntDef;
import android.annotation.SystemApi;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * A capability is the ability for the user to configure something or perform an action. This
 * information is exposed so that system apps like SettingsUI can be dynamic, rather than
 * hard-coding knowledge of when configuration or actions are applicable / available to the user.
 *
 * 

Capabilities have states that users cannot change directly. They may influence some * capabilities indirectly by agreeing to certain device-wide behaviors such as location sharing, or * by changing the configuration. See the {@code CAPABILITY_} constants for details. * *

Actions have associated methods, see the documentation for each action for details. * *

Note: Capabilities are independent of app permissions required to call the associated APIs. * * @hide */ @SystemApi public final class Capabilities { /** @hide */ @IntDef({ CAPABILITY_NOT_SUPPORTED, CAPABILITY_NOT_ALLOWED, CAPABILITY_NOT_APPLICABLE, CAPABILITY_POSSESSED }) @Retention(RetentionPolicy.SOURCE) public @interface CapabilityState {} /** * Indicates that a capability is not supported on this device, e.g. because of form factor or * hardware. The associated UI should usually not be shown to the user. */ public static final int CAPABILITY_NOT_SUPPORTED = 10; /** * Indicates that a capability is supported on this device, but not allowed for the user, e.g. * if the capability relates to the ability to modify settings the user is not able to. * This could be because of the user's type (e.g. maybe it applies to the primary user only) or * device policy. Depending on the capability, this could mean the associated UI * should be hidden, or displayed but disabled. */ public static final int CAPABILITY_NOT_ALLOWED = 20; /** * Indicates that a capability is possessed but not currently applicable, e.g. if the * capability relates to the ability to modify settings, the user has the ability to modify * it, but it is currently rendered irrelevant by other settings or other device state (flags, * resource config, etc.). The associated UI may be hidden, disabled, or left visible (but * ineffective) depending on requirements. */ public static final int CAPABILITY_NOT_APPLICABLE = 30; /** Indicates that a capability is possessed by the user. */ public static final int CAPABILITY_POSSESSED = 40; private Capabilities() {} }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy