2 * Copyright (C) 2014 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 import android.annotation.NonNull;
20 import android.content.ComponentName;
21 import android.content.IIntentSender;
22 import android.content.Intent;
23 import android.content.res.Configuration;
24 import android.os.Bundle;
25 import android.os.IBinder;
26 import android.service.voice.IVoiceInteractionSession;
28 import com.android.internal.app.IVoiceInteractor;
30 import java.util.List;
33 * Activity manager local system service interface.
35 * @hide Only for use within the system server.
37 public abstract class ActivityManagerInternal {
40 * Type for {@link #notifyAppTransitionStarting}: The transition was started because we had
43 public static final int APP_TRANSITION_SAVED_SURFACE = 0;
46 * Type for {@link #notifyAppTransitionStarting}: The transition was started because we drew
47 * the starting window.
49 public static final int APP_TRANSITION_STARTING_WINDOW = 1;
52 * Type for {@link #notifyAppTransitionStarting}: The transition was started because we all
53 * app windows were drawn
55 public static final int APP_TRANSITION_WINDOWS_DRAWN = 2;
58 * Type for {@link #notifyAppTransitionStarting}: The transition was started because of a
61 public static final int APP_TRANSITION_TIMEOUT = 3;
64 * Grant Uri permissions from one app to another. This method only extends
65 * permission grants if {@code callingUid} has permission to them.
67 public abstract void grantUriPermissionFromIntent(int callingUid, String targetPkg,
68 Intent intent, int targetUserId);
71 * Verify that calling app has access to the given provider.
73 public abstract String checkContentProviderAccess(String authority, int userId);
75 // Called by the power manager.
76 public abstract void onWakefulnessChanged(int wakefulness);
78 public abstract int startIsolatedProcess(String entryPoint, String[] mainArgs,
79 String processName, String abiOverride, int uid, Runnable crashHandler);
82 * Acquires a sleep token with the specified tag.
84 * @param tag A string identifying the purpose of the token (eg. "Dream").
86 public abstract SleepToken acquireSleepToken(@NonNull String tag);
89 * Sleep tokens cause the activity manager to put the top activity to sleep.
90 * They are used by components such as dreams that may hide and block interaction
91 * with underlying activities.
93 public static abstract class SleepToken {
96 * Releases the sleep token.
98 public abstract void release();
102 * Returns home activity for the specified user.
104 * @param userId ID of the user or {@link android.os.UserHandle#USER_ALL}
106 public abstract ComponentName getHomeActivityForUser(int userId);
109 * Called when a user has been deleted. This can happen during normal device usage
110 * or just at startup, when partially removed users are purged. Any state persisted by the
111 * ActivityManager should be purged now.
113 * @param userId The user being cleaned up.
115 public abstract void onUserRemoved(int userId);
117 public abstract void onLocalVoiceInteractionStarted(IBinder callingActivity,
118 IVoiceInteractionSession mSession,
119 IVoiceInteractor mInteractor);
122 * Callback for window manager to let activity manager know that the starting window has been
125 public abstract void notifyStartingWindowDrawn();
128 * Callback for window manager to let activity manager know that we are finally starting the
131 * @param reason The reason why the app transition started. Must be one of the APP_TRANSITION_*
134 public abstract void notifyAppTransitionStarting(int reason);
137 * Callback for window manager to let activity manager know that the app transition was
140 public abstract void notifyAppTransitionCancelled();
143 * Callback for window manager to let activity manager know that the app transition is finished.
145 public abstract void notifyAppTransitionFinished();
148 * Returns the top activity from each of the currently visible stacks. The first entry will be
149 * the focused activity.
151 public abstract List<IBinder> getTopVisibleActivities();
154 * Callback for window manager to let activity manager know that docked stack changes its
157 public abstract void notifyDockedStackMinimizedChanged(boolean minimized);
160 * Kill foreground apps from the specified user.
162 public abstract void killForegroundAppsForUser(int userHandle);
165 * Sets how long a {@link PendingIntent} can be temporarily whitelist to by bypass restrictions
166 * such as Power Save mode.
168 public abstract void setPendingIntentWhitelistDuration(IIntentSender target, long duration);
171 * Updates and persists the {@link Configuration} for a given user.
173 * @param values the configuration to update
174 * @param userId the user to update the configuration for
176 public abstract void updatePersistentConfigurationForUser(@NonNull Configuration values,
180 * Start activity {@code intents} as if {@code packageName} on user {@code userId} did it.
182 * @return error codes used by {@link IActivityManager#startActivity} and its siblings.
184 public abstract int startActivitiesAsPackage(String packageName,
185 int userId, Intent[] intents, Bundle bOptions);
188 * Get the procstate for the UID. The return value will be between
189 * {@link ActivityManager#MIN_PROCESS_STATE} and {@link ActivityManager#MAX_PROCESS_STATE}.
190 * Note if the UID doesn't exist, it'll return {@link ActivityManager#PROCESS_STATE_NONEXISTENT}
193 public abstract int getUidProcessState(int uid);