Loading core/java/android/app/ActivityManagerInternal.java +34 −29 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.annotation.Nullable; import android.content.ComponentName; import android.content.IIntentSender; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.res.Configuration; import android.os.Bundle; import android.os.IBinder; Loading @@ -41,6 +42,11 @@ import java.util.List; public abstract class ActivityManagerInternal { // Access modes for handleIncomingUser. public static final int ALLOW_NON_FULL = 0; public static final int ALLOW_NON_FULL_IN_PROFILE = 1; public static final int ALLOW_FULL_ONLY = 2; /** * Grant Uri permissions from one app to another. This method only extends * permission grants if {@code callingUid} has permission to them. Loading @@ -62,15 +68,6 @@ public abstract class ActivityManagerInternal { public abstract boolean startIsolatedProcess(String entryPoint, String[] mainArgs, String processName, String abiOverride, int uid, Runnable crashHandler); /** * Called when a user has been deleted. This can happen during normal device usage * or just at startup, when partially removed users are purged. Any state persisted by the * ActivityManager should be purged now. * * @param userId The user being cleaned up. */ public abstract void onUserRemoved(int userId); /** * Kill foreground apps from the specified user. */ Loading @@ -94,15 +91,6 @@ public abstract class ActivityManagerInternal { public abstract void updateDeviceIdleTempWhitelist(int[] appids, int changingAppId, boolean adding); /** * Updates and persists the {@link Configuration} for a given user. * * @param values the configuration to update * @param userId the user to update the configuration for */ public abstract void updatePersistentConfigurationForUser(@NonNull Configuration values, int userId); /** * Get the procstate for the UID. The return value will be between * {@link ActivityManager#MIN_PROCESS_STATE} and {@link ActivityManager#MAX_PROCESS_STATE}. Loading Loading @@ -154,17 +142,6 @@ public abstract class ActivityManagerInternal { */ public abstract void clearSavedANRState(); /** * Set a uid that is allowed to bypass stopped app switches, launching an app * whenever it wants. * * @param type Type of the caller -- unique string the caller supplies to identify itself * and disambiguate with other calles. * @param uid The uid of the app to be allowed, or -1 to clear the uid for this type. * @param userId The user it is allowed for. */ public abstract void setAllowAppSwitches(@NonNull String type, int uid, int userId); /** * @return true if runtime was restarted, false if it's normal boot */ Loading Loading @@ -199,4 +176,32 @@ public abstract class ActivityManagerInternal { * Returns a list that contains the memory stats for currently running processes. */ public abstract List<ProcessMemoryState> getMemoryStateForProcesses(); /** * Checks to see if the calling pid is allowed to handle the user. Returns adjusted user id as * needed. */ public abstract int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll, int allowMode, String name, String callerPackage); /** Checks if the calling binder pid as the permission. */ public abstract void enforceCallingPermission(String permission, String func); /** Returns the current user id. */ public abstract int getCurrentUserId(); /** Returns true if the user is running. */ public abstract boolean isUserRunning(int userId, int flags); /** Trims memory usage in the system by removing/stopping unused application processes. */ public abstract void trimApplications(); /** Returns the screen compatibility mode for the given application. */ public abstract int getPackageScreenCompatMode(ApplicationInfo ai); /** Sets the screen compatibility mode for the given application. */ public abstract void setPackageScreenCompatMode(ApplicationInfo ai, int mode); /** Closes all system dialogs. */ public abstract void closeSystemDialogs(String reason); } core/java/android/app/ActivityTaskManagerInternal.java +20 −0 Original line number Diff line number Diff line Loading @@ -243,4 +243,24 @@ public abstract class ActivityTaskManagerInternal { */ public abstract void notifyActiveVoiceInteractionServiceChanged(ComponentName component); /** * Set a uid that is allowed to bypass stopped app switches, launching an app * whenever it wants. * * @param type Type of the caller -- unique string the caller supplies to identify itself * and disambiguate with other calles. * @param uid The uid of the app to be allowed, or -1 to clear the uid for this type. * @param userId The user it is allowed for. */ public abstract void setAllowAppSwitches(@NonNull String type, int uid, int userId); /** * Called when a user has been deleted. This can happen during normal device usage * or just at startup, when partially removed users are purged. Any state persisted by the * ActivityManager should be purged now. * * @param userId The user being cleaned up. */ public abstract void onUserStopped(int userId); public abstract boolean isGetTasksAllowed(String caller, int callingPid, int callingUid); } core/java/android/app/IActivityTaskManager.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -418,4 +418,7 @@ interface IActivityTaskManager { void setVrThread(int tid); void setPersistentVrThread(int tid); void stopAppSwitches(); void resumeAppSwitches(); void setActivityController(in IActivityController watcher, boolean imAMonkey); } services/core/java/com/android/server/am/ActiveServices.java +2 −3 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; Loading @@ -32,6 +31,7 @@ import java.util.List; import java.util.Set; import java.util.function.Predicate; import android.app.ActivityManagerInternal; import android.app.ActivityThread; import android.app.AppOpsManager; import android.app.NotificationManager; Loading Loading @@ -59,7 +59,6 @@ import com.android.internal.messages.nano.SystemMessageProto; import com.android.internal.notification.SystemNotificationChannels; import com.android.internal.os.BatteryStatsImpl; import com.android.internal.os.TransferPipe; import com.android.internal.util.CollectionUtils; import com.android.internal.util.DumpUtils; import com.android.internal.util.FastPrintWriter; import com.android.server.AppStateTracker; Loading Loading @@ -1869,7 +1868,7 @@ public final class ActiveServices { + " type=" + resolvedType + " callingUid=" + callingUid); userId = mAm.mUserController.handleIncomingUser(callingPid, callingUid, userId, false, ActivityManagerService.ALLOW_NON_FULL_IN_PROFILE, "service", null); ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE, "service", null); ServiceMap smap = getServiceMapLocked(userId); final ComponentName comp = service.getComponent(); Loading services/core/java/com/android/server/am/ActivityDisplay.java +2 −2 Original line number Diff line number Diff line Loading @@ -300,7 +300,7 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> } } final ActivityManagerService service = mSupervisor.mService.mAm; final ActivityTaskManagerService service = mSupervisor.mService; if (!isWindowingModeSupported(windowingMode, service.mSupportsMultiWindow, service.mSupportsSplitScreenMultiWindow, service.mSupportsFreeformWindowManagement, service.mSupportsPictureInPicture, activityType)) { Loading Loading @@ -536,7 +536,7 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> } // Make sure the windowing mode we are trying to use makes sense for what is supported. final ActivityManagerService service = mSupervisor.mService.mAm; final ActivityTaskManagerService service = mSupervisor.mService; boolean supportsMultiWindow = service.mSupportsMultiWindow; boolean supportsSplitScreen = service.mSupportsSplitScreenMultiWindow; boolean supportsFreeform = service.mSupportsFreeformWindowManagement; Loading Loading
core/java/android/app/ActivityManagerInternal.java +34 −29 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.annotation.Nullable; import android.content.ComponentName; import android.content.IIntentSender; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.res.Configuration; import android.os.Bundle; import android.os.IBinder; Loading @@ -41,6 +42,11 @@ import java.util.List; public abstract class ActivityManagerInternal { // Access modes for handleIncomingUser. public static final int ALLOW_NON_FULL = 0; public static final int ALLOW_NON_FULL_IN_PROFILE = 1; public static final int ALLOW_FULL_ONLY = 2; /** * Grant Uri permissions from one app to another. This method only extends * permission grants if {@code callingUid} has permission to them. Loading @@ -62,15 +68,6 @@ public abstract class ActivityManagerInternal { public abstract boolean startIsolatedProcess(String entryPoint, String[] mainArgs, String processName, String abiOverride, int uid, Runnable crashHandler); /** * Called when a user has been deleted. This can happen during normal device usage * or just at startup, when partially removed users are purged. Any state persisted by the * ActivityManager should be purged now. * * @param userId The user being cleaned up. */ public abstract void onUserRemoved(int userId); /** * Kill foreground apps from the specified user. */ Loading @@ -94,15 +91,6 @@ public abstract class ActivityManagerInternal { public abstract void updateDeviceIdleTempWhitelist(int[] appids, int changingAppId, boolean adding); /** * Updates and persists the {@link Configuration} for a given user. * * @param values the configuration to update * @param userId the user to update the configuration for */ public abstract void updatePersistentConfigurationForUser(@NonNull Configuration values, int userId); /** * Get the procstate for the UID. The return value will be between * {@link ActivityManager#MIN_PROCESS_STATE} and {@link ActivityManager#MAX_PROCESS_STATE}. Loading Loading @@ -154,17 +142,6 @@ public abstract class ActivityManagerInternal { */ public abstract void clearSavedANRState(); /** * Set a uid that is allowed to bypass stopped app switches, launching an app * whenever it wants. * * @param type Type of the caller -- unique string the caller supplies to identify itself * and disambiguate with other calles. * @param uid The uid of the app to be allowed, or -1 to clear the uid for this type. * @param userId The user it is allowed for. */ public abstract void setAllowAppSwitches(@NonNull String type, int uid, int userId); /** * @return true if runtime was restarted, false if it's normal boot */ Loading Loading @@ -199,4 +176,32 @@ public abstract class ActivityManagerInternal { * Returns a list that contains the memory stats for currently running processes. */ public abstract List<ProcessMemoryState> getMemoryStateForProcesses(); /** * Checks to see if the calling pid is allowed to handle the user. Returns adjusted user id as * needed. */ public abstract int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll, int allowMode, String name, String callerPackage); /** Checks if the calling binder pid as the permission. */ public abstract void enforceCallingPermission(String permission, String func); /** Returns the current user id. */ public abstract int getCurrentUserId(); /** Returns true if the user is running. */ public abstract boolean isUserRunning(int userId, int flags); /** Trims memory usage in the system by removing/stopping unused application processes. */ public abstract void trimApplications(); /** Returns the screen compatibility mode for the given application. */ public abstract int getPackageScreenCompatMode(ApplicationInfo ai); /** Sets the screen compatibility mode for the given application. */ public abstract void setPackageScreenCompatMode(ApplicationInfo ai, int mode); /** Closes all system dialogs. */ public abstract void closeSystemDialogs(String reason); }
core/java/android/app/ActivityTaskManagerInternal.java +20 −0 Original line number Diff line number Diff line Loading @@ -243,4 +243,24 @@ public abstract class ActivityTaskManagerInternal { */ public abstract void notifyActiveVoiceInteractionServiceChanged(ComponentName component); /** * Set a uid that is allowed to bypass stopped app switches, launching an app * whenever it wants. * * @param type Type of the caller -- unique string the caller supplies to identify itself * and disambiguate with other calles. * @param uid The uid of the app to be allowed, or -1 to clear the uid for this type. * @param userId The user it is allowed for. */ public abstract void setAllowAppSwitches(@NonNull String type, int uid, int userId); /** * Called when a user has been deleted. This can happen during normal device usage * or just at startup, when partially removed users are purged. Any state persisted by the * ActivityManager should be purged now. * * @param userId The user being cleaned up. */ public abstract void onUserStopped(int userId); public abstract boolean isGetTasksAllowed(String caller, int callingPid, int callingUid); }
core/java/android/app/IActivityTaskManager.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -418,4 +418,7 @@ interface IActivityTaskManager { void setVrThread(int tid); void setPersistentVrThread(int tid); void stopAppSwitches(); void resumeAppSwitches(); void setActivityController(in IActivityController watcher, boolean imAMonkey); }
services/core/java/com/android/server/am/ActiveServices.java +2 −3 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; Loading @@ -32,6 +31,7 @@ import java.util.List; import java.util.Set; import java.util.function.Predicate; import android.app.ActivityManagerInternal; import android.app.ActivityThread; import android.app.AppOpsManager; import android.app.NotificationManager; Loading Loading @@ -59,7 +59,6 @@ import com.android.internal.messages.nano.SystemMessageProto; import com.android.internal.notification.SystemNotificationChannels; import com.android.internal.os.BatteryStatsImpl; import com.android.internal.os.TransferPipe; import com.android.internal.util.CollectionUtils; import com.android.internal.util.DumpUtils; import com.android.internal.util.FastPrintWriter; import com.android.server.AppStateTracker; Loading Loading @@ -1869,7 +1868,7 @@ public final class ActiveServices { + " type=" + resolvedType + " callingUid=" + callingUid); userId = mAm.mUserController.handleIncomingUser(callingPid, callingUid, userId, false, ActivityManagerService.ALLOW_NON_FULL_IN_PROFILE, "service", null); ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE, "service", null); ServiceMap smap = getServiceMapLocked(userId); final ComponentName comp = service.getComponent(); Loading
services/core/java/com/android/server/am/ActivityDisplay.java +2 −2 Original line number Diff line number Diff line Loading @@ -300,7 +300,7 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> } } final ActivityManagerService service = mSupervisor.mService.mAm; final ActivityTaskManagerService service = mSupervisor.mService; if (!isWindowingModeSupported(windowingMode, service.mSupportsMultiWindow, service.mSupportsSplitScreenMultiWindow, service.mSupportsFreeformWindowManagement, service.mSupportsPictureInPicture, activityType)) { Loading Loading @@ -536,7 +536,7 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack> } // Make sure the windowing mode we are trying to use makes sense for what is supported. final ActivityManagerService service = mSupervisor.mService.mAm; final ActivityTaskManagerService service = mSupervisor.mService; boolean supportsMultiWindow = service.mSupportsMultiWindow; boolean supportsSplitScreen = service.mSupportsSplitScreenMultiWindow; boolean supportsFreeform = service.mSupportsFreeformWindowManagement; Loading