blob: f589cc5704b421e0d6c7742aaf15abc076a8ca38 [file] [log] [blame]
Jeff Brownd5a5b5a2014-06-05 17:14:39 -07001/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.annotation;
18
19import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
20import static java.lang.annotation.ElementType.CONSTRUCTOR;
21import static java.lang.annotation.ElementType.FIELD;
22import static java.lang.annotation.ElementType.METHOD;
23import static java.lang.annotation.ElementType.PACKAGE;
24import static java.lang.annotation.ElementType.TYPE;
25
26import java.lang.annotation.Retention;
27import java.lang.annotation.RetentionPolicy;
28import java.lang.annotation.Target;
29
30/**
31 * Indicates an API is exposed for use by bundled system applications.
32 * <p>
33 * These APIs are not guaranteed to remain consistent release-to-release,
34 * and are not for use by apps linking against the Android SDK.
35 * </p><p>
36 * This annotation should only appear on API that is already marked <pre>@hide</pre>.
37 * </p>
38 *
39 * @hide
40 */
41@Target({TYPE, FIELD, METHOD, CONSTRUCTOR, ANNOTATION_TYPE, PACKAGE})
Jiyong Park3b0867e2018-01-02 19:02:07 +090042@Retention(RetentionPolicy.RUNTIME)
Jeff Brownd5a5b5a2014-06-05 17:14:39 -070043public @interface SystemApi {
Jiyong Parkabe61582019-12-04 17:17:48 +090044 enum Client {
45 /**
46 * Specifies that the intended clients of a SystemApi are privileged apps.
47 * This is the default value for {@link #client}.
48 */
49 PRIVILEGED_APPS,
50 }
51
52 enum Process {
53 /**
54 * Specifies that the SystemAPI is available in every Java processes.
55 * This is the default value for {@link #process}.
56 */
57 ALL,
58 }
59
60 /**
61 * The intended client of this SystemAPI.
62 */
63 Client client() default android.annotation.SystemApi.Client.PRIVILEGED_APPS;
64
65 /**
66 * The process(es) that this SystemAPI is available
67 */
68 Process process() default android.annotation.SystemApi.Process.ALL;
Jeff Brownd5a5b5a2014-06-05 17:14:39 -070069}