blob: 38e35722604cb5699e4ef7aef7524685bd512a14 [file] [log] [blame]
Jeff Brown13014b52014-04-07 19:45:27 -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.app;
18
Jeff Brown061ea992015-04-17 19:55:47 -070019import android.annotation.NonNull;
Jorim Jaggife762342016-10-13 14:33:27 +020020import android.annotation.Nullable;
Fyodor Kupolovb5013302015-04-17 17:59:14 -070021import android.content.ComponentName;
Felipe Lemea1b79bf2016-05-24 13:06:54 -070022import android.content.IIntentSender;
Makoto Onukiea11db12016-06-24 15:17:44 -070023import android.content.Intent;
Suprabh Shukla64725012016-06-15 13:19:28 -070024import android.content.res.Configuration;
Makoto Onukiea11db12016-06-24 15:17:44 -070025import android.os.Bundle;
Amith Yamasani0af6fa72016-01-17 15:36:19 -080026import android.os.IBinder;
27import android.service.voice.IVoiceInteractionSession;
28
29import com.android.internal.app.IVoiceInteractor;
Jeff Brown061ea992015-04-17 19:55:47 -070030
Amith Yamasanie8222e52016-04-08 15:28:47 -070031import java.util.List;
32
Jeff Brown13014b52014-04-07 19:45:27 -070033/**
34 * Activity manager local system service interface.
35 *
36 * @hide Only for use within the system server.
37 */
38public abstract class ActivityManagerInternal {
Jorim Jaggi275561a2016-02-23 10:11:02 -050039
40 /**
41 * Type for {@link #notifyAppTransitionStarting}: The transition was started because we had
42 * the surface saved.
43 */
44 public static final int APP_TRANSITION_SAVED_SURFACE = 0;
45
46 /**
47 * Type for {@link #notifyAppTransitionStarting}: The transition was started because we drew
48 * the starting window.
49 */
50 public static final int APP_TRANSITION_STARTING_WINDOW = 1;
51
52 /**
53 * Type for {@link #notifyAppTransitionStarting}: The transition was started because we all
54 * app windows were drawn
55 */
56 public static final int APP_TRANSITION_WINDOWS_DRAWN = 2;
57
58 /**
59 * Type for {@link #notifyAppTransitionStarting}: The transition was started because of a
60 * timeout.
61 */
62 public static final int APP_TRANSITION_TIMEOUT = 3;
63
Jeff Brown13014b52014-04-07 19:45:27 -070064 // Called by the power manager.
Jeff Brownfbe96702014-11-19 18:30:58 -080065 public abstract void onWakefulnessChanged(int wakefulness);
66
Primiano Tucci810c0522014-07-25 18:03:16 +010067 public abstract int startIsolatedProcess(String entryPoint, String[] mainArgs,
68 String processName, String abiOverride, int uid, Runnable crashHandler);
Jeff Brown061ea992015-04-17 19:55:47 -070069
70 /**
71 * Acquires a sleep token with the specified tag.
72 *
73 * @param tag A string identifying the purpose of the token (eg. "Dream").
74 */
75 public abstract SleepToken acquireSleepToken(@NonNull String tag);
76
77 /**
78 * Sleep tokens cause the activity manager to put the top activity to sleep.
79 * They are used by components such as dreams that may hide and block interaction
80 * with underlying activities.
81 */
82 public static abstract class SleepToken {
Jorim Jaggi275561a2016-02-23 10:11:02 -050083
Jeff Brown061ea992015-04-17 19:55:47 -070084 /**
85 * Releases the sleep token.
86 */
87 public abstract void release();
88 }
Fyodor Kupolovb5013302015-04-17 17:59:14 -070089
90 /**
91 * Returns home activity for the specified user.
Jorim Jaggi275561a2016-02-23 10:11:02 -050092 *
Fyodor Kupolovb5013302015-04-17 17:59:14 -070093 * @param userId ID of the user or {@link android.os.UserHandle#USER_ALL}
94 */
95 public abstract ComponentName getHomeActivityForUser(int userId);
Amith Yamasani515d4062015-09-28 11:30:06 -070096
97 /**
98 * Called when a user has been deleted. This can happen during normal device usage
99 * or just at startup, when partially removed users are purged. Any state persisted by the
100 * ActivityManager should be purged now.
101 *
102 * @param userId The user being cleaned up.
103 */
104 public abstract void onUserRemoved(int userId);
Amith Yamasani0af6fa72016-01-17 15:36:19 -0800105
106 public abstract void onLocalVoiceInteractionStarted(IBinder callingActivity,
107 IVoiceInteractionSession mSession,
108 IVoiceInteractor mInteractor);
Jorim Jaggi275561a2016-02-23 10:11:02 -0500109
110 /**
111 * Callback for window manager to let activity manager know that the starting window has been
112 * drawn
113 */
114 public abstract void notifyStartingWindowDrawn();
115
116 /**
117 * Callback for window manager to let activity manager know that we are finally starting the
118 * app transition;
119 *
120 * @param reason The reason why the app transition started. Must be one of the APP_TRANSITION_*
121 * values.
122 */
123 public abstract void notifyAppTransitionStarting(int reason);
Jorim Jaggi192086e2016-03-11 17:17:03 +0100124
125 /**
126 * Callback for window manager to let activity manager know that the app transition was
127 * cancelled.
128 */
129 public abstract void notifyAppTransitionCancelled();
130
131 /**
132 * Callback for window manager to let activity manager know that the app transition is finished.
133 */
134 public abstract void notifyAppTransitionFinished();
Amith Yamasanie8222e52016-04-08 15:28:47 -0700135
136 /**
137 * Returns the top activity from each of the currently visible stacks. The first entry will be
138 * the focused activity.
139 */
140 public abstract List<IBinder> getTopVisibleActivities();
Tony Mak853304c2016-04-18 15:17:41 +0100141
142 /**
143 * Callback for window manager to let activity manager know that docked stack changes its
144 * minimized state.
145 */
146 public abstract void notifyDockedStackMinimizedChanged(boolean minimized);
Rubin Xuf8451b92016-04-01 15:50:58 +0100147
148 /**
149 * Kill foreground apps from the specified user.
150 */
151 public abstract void killForegroundAppsForUser(int userHandle);
Felipe Lemea1b79bf2016-05-24 13:06:54 -0700152
153 /**
154 * Sets how long a {@link PendingIntent} can be temporarily whitelist to by bypass restrictions
155 * such as Power Save mode.
156 */
157 public abstract void setPendingIntentWhitelistDuration(IIntentSender target, long duration);
Suprabh Shukla64725012016-06-15 13:19:28 -0700158
159 /**
160 * Updates and persists the {@link Configuration} for a given user.
161 *
162 * @param values the configuration to update
163 * @param userId the user to update the configuration for
164 */
165 public abstract void updatePersistentConfigurationForUser(@NonNull Configuration values,
166 int userId);
Makoto Onukiea11db12016-06-24 15:17:44 -0700167
168 /**
Makoto Onuki440a1ea2016-07-20 14:21:18 -0700169 * Start activity {@code intents} as if {@code packageName} on user {@code userId} did it.
Makoto Onuki83f6d2d2016-07-11 14:30:19 -0700170 *
171 * @return error codes used by {@link IActivityManager#startActivity} and its siblings.
Makoto Onukiea11db12016-06-24 15:17:44 -0700172 */
Makoto Onuki440a1ea2016-07-20 14:21:18 -0700173 public abstract int startActivitiesAsPackage(String packageName,
174 int userId, Intent[] intents, Bundle bOptions);
Makoto Onuki33525d22016-08-03 15:45:24 -0700175
176 /**
177 * Get the procstate for the UID. The return value will be between
178 * {@link ActivityManager#MIN_PROCESS_STATE} and {@link ActivityManager#MAX_PROCESS_STATE}.
179 * Note if the UID doesn't exist, it'll return {@link ActivityManager#PROCESS_STATE_NONEXISTENT}
180 * (-1).
181 */
182 public abstract int getUidProcessState(int uid);
Jorim Jaggife762342016-10-13 14:33:27 +0200183
184 /**
185 * Called when Keyguard flags might have changed.
186 *
187 * @param callback Callback to run after activity visibilities have been reevaluated. This can
188 * be used from window manager so that when the callback is called, it's
189 * guaranteed that all apps have their visibility updated accordingly.
190 */
191 public abstract void notifyKeyguardFlagsChanged(@Nullable Runnable callback);
Sudheer Shankafc46e9b2016-10-21 17:55:27 -0700192
193 /**
194 * @return {@code true} if system is ready, {@code false} otherwise.
195 */
196 public abstract boolean isSystemReady();
Jorim Jaggie69c9312016-10-31 18:24:38 -0700197
198 /**
199 * Called when the trusted state of Keyguard has changed.
200 */
201 public abstract void notifyKeyguardTrustedChanged();
Jeff Brown13014b52014-04-07 19:45:27 -0700202}