1 /* 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 17 package android.app; 18 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; 27 28 import com.android.internal.app.IVoiceInteractor; 29 30 import java.util.List; 31 32 /** 33 * Activity manager local system service interface. 34 * 35 * @hide Only for use within the system server. 36 */ 37 public abstract class ActivityManagerInternal { 38 39 /** 40 * Type for {@link #notifyAppTransitionStarting}: The transition was started because we had 41 * the surface saved. 42 */ 43 public static final int APP_TRANSITION_SAVED_SURFACE = 0; 44 45 /** 46 * Type for {@link #notifyAppTransitionStarting}: The transition was started because we drew 47 * the starting window. 48 */ 49 public static final int APP_TRANSITION_STARTING_WINDOW = 1; 50 51 /** 52 * Type for {@link #notifyAppTransitionStarting}: The transition was started because we all 53 * app windows were drawn 54 */ 55 public static final int APP_TRANSITION_WINDOWS_DRAWN = 2; 56 57 /** 58 * Type for {@link #notifyAppTransitionStarting}: The transition was started because of a 59 * timeout. 60 */ 61 public static final int APP_TRANSITION_TIMEOUT = 3; 62 63 // Called by the power manager. onWakefulnessChanged(int wakefulness)64 public abstract void onWakefulnessChanged(int wakefulness); 65 startIsolatedProcess(String entryPoint, String[] mainArgs, String processName, String abiOverride, int uid, Runnable crashHandler)66 public abstract int startIsolatedProcess(String entryPoint, String[] mainArgs, 67 String processName, String abiOverride, int uid, Runnable crashHandler); 68 69 /** 70 * Acquires a sleep token with the specified tag. 71 * 72 * @param tag A string identifying the purpose of the token (eg. "Dream"). 73 */ acquireSleepToken(@onNull String tag)74 public abstract SleepToken acquireSleepToken(@NonNull String tag); 75 76 /** 77 * Sleep tokens cause the activity manager to put the top activity to sleep. 78 * They are used by components such as dreams that may hide and block interaction 79 * with underlying activities. 80 */ 81 public static abstract class SleepToken { 82 83 /** 84 * Releases the sleep token. 85 */ release()86 public abstract void release(); 87 } 88 89 /** 90 * Returns home activity for the specified user. 91 * 92 * @param userId ID of the user or {@link android.os.UserHandle#USER_ALL} 93 */ getHomeActivityForUser(int userId)94 public abstract ComponentName getHomeActivityForUser(int userId); 95 96 /** 97 * Called when a user has been deleted. This can happen during normal device usage 98 * or just at startup, when partially removed users are purged. Any state persisted by the 99 * ActivityManager should be purged now. 100 * 101 * @param userId The user being cleaned up. 102 */ onUserRemoved(int userId)103 public abstract void onUserRemoved(int userId); 104 onLocalVoiceInteractionStarted(IBinder callingActivity, IVoiceInteractionSession mSession, IVoiceInteractor mInteractor)105 public abstract void onLocalVoiceInteractionStarted(IBinder callingActivity, 106 IVoiceInteractionSession mSession, 107 IVoiceInteractor mInteractor); 108 109 /** 110 * Callback for window manager to let activity manager know that the starting window has been 111 * drawn 112 */ notifyStartingWindowDrawn()113 public abstract void notifyStartingWindowDrawn(); 114 115 /** 116 * Callback for window manager to let activity manager know that we are finally starting the 117 * app transition; 118 * 119 * @param reason The reason why the app transition started. Must be one of the APP_TRANSITION_* 120 * values. 121 */ notifyAppTransitionStarting(int reason)122 public abstract void notifyAppTransitionStarting(int reason); 123 124 /** 125 * Callback for window manager to let activity manager know that the app transition was 126 * cancelled. 127 */ notifyAppTransitionCancelled()128 public abstract void notifyAppTransitionCancelled(); 129 130 /** 131 * Callback for window manager to let activity manager know that the app transition is finished. 132 */ notifyAppTransitionFinished()133 public abstract void notifyAppTransitionFinished(); 134 135 /** 136 * Returns the top activity from each of the currently visible stacks. The first entry will be 137 * the focused activity. 138 */ getTopVisibleActivities()139 public abstract List<IBinder> getTopVisibleActivities(); 140 141 /** 142 * Callback for window manager to let activity manager know that docked stack changes its 143 * minimized state. 144 */ notifyDockedStackMinimizedChanged(boolean minimized)145 public abstract void notifyDockedStackMinimizedChanged(boolean minimized); 146 147 /** 148 * Kill foreground apps from the specified user. 149 */ killForegroundAppsForUser(int userHandle)150 public abstract void killForegroundAppsForUser(int userHandle); 151 152 /** 153 * Sets how long a {@link PendingIntent} can be temporarily whitelist to by bypass restrictions 154 * such as Power Save mode. 155 */ setPendingIntentWhitelistDuration(IIntentSender target, long duration)156 public abstract void setPendingIntentWhitelistDuration(IIntentSender target, long duration); 157 158 /** 159 * Updates and persists the {@link Configuration} for a given user. 160 * 161 * @param values the configuration to update 162 * @param userId the user to update the configuration for 163 */ updatePersistentConfigurationForUser(@onNull Configuration values, int userId)164 public abstract void updatePersistentConfigurationForUser(@NonNull Configuration values, 165 int userId); 166 167 /** 168 * Start activity {@code intents} as if {@code packageName} on user {@code userId} did it. 169 * 170 * @return error codes used by {@link IActivityManager#startActivity} and its siblings. 171 */ startActivitiesAsPackage(String packageName, int userId, Intent[] intents, Bundle bOptions)172 public abstract int startActivitiesAsPackage(String packageName, 173 int userId, Intent[] intents, Bundle bOptions); 174 175 /** 176 * Get the procstate for the UID. The return value will be between 177 * {@link ActivityManager#MIN_PROCESS_STATE} and {@link ActivityManager#MAX_PROCESS_STATE}. 178 * Note if the UID doesn't exist, it'll return {@link ActivityManager#PROCESS_STATE_NONEXISTENT} 179 * (-1). 180 */ getUidProcessState(int uid)181 public abstract int getUidProcessState(int uid); 182 } 183