IActivityManager.aidl revision f965f4038cfe775bfee973850d62caf3138076c8
1/*
2 * Copyright (C) 2016 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
19import android.app.ActivityManager;
20import android.app.ApplicationErrorReport;
21import android.app.ContentProviderHolder;
22import android.app.IApplicationThread;
23import android.app.IActivityContainer;
24import android.app.IActivityContainerCallback;
25import android.app.IActivityController;
26import android.app.IAppTask;
27import android.app.IInstrumentationWatcher;
28import android.app.IProcessObserver;
29import android.app.IServiceConnection;
30import android.app.IStopUserCallback;
31import android.app.ITaskStackListener;
32import android.app.IUiAutomationConnection;
33import android.app.IUidObserver;
34import android.app.IUserSwitchObserver;
35import android.app.Notification;
36import android.app.PendingIntent;
37import android.app.PictureInPictureParams;
38import android.app.ProfilerInfo;
39import android.app.WaitResult;
40import android.app.assist.AssistContent;
41import android.app.assist.AssistStructure;
42import android.content.ComponentName;
43import android.content.IIntentReceiver;
44import android.content.IIntentSender;
45import android.content.Intent;
46import android.content.IntentFilter;
47import android.content.IntentSender;
48import android.content.pm.ApplicationInfo;
49import android.content.pm.ConfigurationInfo;
50import android.content.pm.IPackageDataObserver;
51import android.content.pm.ParceledListSlice;
52import android.content.pm.ProviderInfo;
53import android.content.pm.UserInfo;
54import android.content.res.Configuration;
55import android.graphics.Bitmap;
56import android.graphics.GraphicBuffer;
57import android.graphics.Point;
58import android.graphics.Rect;
59import android.net.Uri;
60import android.os.Bundle;
61import android.os.Debug;
62import android.os.IBinder;
63import android.os.IProgressListener;
64import android.os.ParcelFileDescriptor;
65import android.os.PersistableBundle;
66import android.os.StrictMode;
67import android.service.voice.IVoiceInteractionSession;
68import com.android.internal.app.IVoiceInteractor;
69import com.android.internal.os.IResultReceiver;
70import com.android.internal.policy.IKeyguardDismissCallback;
71
72import java.util.List;
73
74/**
75 * System private API for talking with the activity manager service.  This
76 * provides calls from the application back to the activity manager.
77 *
78 * {@hide}
79 */
80interface IActivityManager {
81    // WARNING: when these transactions are updated, check if they are any callers on the native
82    // side. If so, make sure they are using the correct transaction ids and arguments.
83    // If a transaction which will also be used on the native side is being inserted, add it to
84    // below block of transactions.
85
86    // Since these transactions are also called from native code, these must be kept in sync with
87    // the ones in frameworks/native/include/binder/IActivityManager.h
88    // =============== Beginning of transactions used on native side as well ======================
89    ParcelFileDescriptor openContentUri(in String uriString);
90    // =============== End of transactions used on native side as well ============================
91
92    // Special low-level communication with activity manager.
93    void handleApplicationCrash(in IBinder app,
94            in ApplicationErrorReport.ParcelableCrashInfo crashInfo);
95    int startActivity(in IApplicationThread caller, in String callingPackage, in Intent intent,
96            in String resolvedType, in IBinder resultTo, in String resultWho, int requestCode,
97            int flags, in ProfilerInfo profilerInfo, in Bundle options);
98    void unhandledBack();
99
100    boolean finishActivity(in IBinder token, int code, in Intent data, int finishTask);
101    Intent registerReceiver(in IApplicationThread caller, in String callerPackage,
102            in IIntentReceiver receiver, in IntentFilter filter,
103            in String requiredPermission, int userId, int flags);
104    void unregisterReceiver(in IIntentReceiver receiver);
105    int broadcastIntent(in IApplicationThread caller, in Intent intent,
106            in String resolvedType, in IIntentReceiver resultTo, int resultCode,
107            in String resultData, in Bundle map, in String[] requiredPermissions,
108            int appOp, in Bundle options, boolean serialized, boolean sticky, int userId);
109    void unbroadcastIntent(in IApplicationThread caller, in Intent intent, int userId);
110    oneway void finishReceiver(in IBinder who, int resultCode, in String resultData, in Bundle map,
111            boolean abortBroadcast, int flags);
112    void attachApplication(in IApplicationThread app);
113    oneway void activityIdle(in IBinder token, in Configuration config,
114            in boolean stopProfiling);
115    void activityPaused(in IBinder token);
116    oneway void activityStopped(in IBinder token, in Bundle state,
117            in PersistableBundle persistentState, in CharSequence description);
118    String getCallingPackage(in IBinder token);
119    ComponentName getCallingActivity(in IBinder token);
120    List<ActivityManager.RunningTaskInfo> getTasks(int maxNum, int flags);
121    void moveTaskToFront(int task, int flags, in Bundle options);
122    void moveTaskBackwards(int task);
123    int getTaskForActivity(in IBinder token, in boolean onlyRoot);
124    ContentProviderHolder getContentProvider(in IApplicationThread caller,
125            in String name, int userId, boolean stable);
126    void publishContentProviders(in IApplicationThread caller,
127            in List<ContentProviderHolder> providers);
128    boolean refContentProvider(in IBinder connection, int stableDelta, int unstableDelta);
129    void finishSubActivity(in IBinder token, in String resultWho, int requestCode);
130    PendingIntent getRunningServiceControlPanel(in ComponentName service);
131    ComponentName startService(in IApplicationThread caller, in Intent service,
132            in String resolvedType, boolean requireForeground, in String callingPackage, int userId);
133    int stopService(in IApplicationThread caller, in Intent service,
134            in String resolvedType, int userId);
135    int bindService(in IApplicationThread caller, in IBinder token, in Intent service,
136            in String resolvedType, in IServiceConnection connection, int flags,
137            in String callingPackage, int userId);
138    boolean unbindService(in IServiceConnection connection);
139    void publishService(in IBinder token, in Intent intent, in IBinder service);
140    void activityResumed(in IBinder token);
141    void setDebugApp(in String packageName, boolean waitForDebugger, boolean persistent);
142    void setAlwaysFinish(boolean enabled);
143    boolean startInstrumentation(in ComponentName className, in String profileFile,
144            int flags, in Bundle arguments, in IInstrumentationWatcher watcher,
145            in IUiAutomationConnection connection, int userId,
146            in String abiOverride);
147    void addInstrumentationResults(in IApplicationThread target, in Bundle results);
148    void finishInstrumentation(in IApplicationThread target, int resultCode,
149            in Bundle results);
150    /**
151     * @return A copy of global {@link Configuration}, contains general settings for the entire
152     *         system. Corresponds to the configuration of the default display.
153     * @throws RemoteException
154     */
155    Configuration getConfiguration();
156    /**
157     * Updates global configuration and applies changes to the entire system.
158     * @param values Update values for global configuration. If null is passed it will request the
159     *               Window Manager to compute new config for the default display.
160     * @throws RemoteException
161     * @return Returns true if the configuration was updated.
162     */
163    boolean updateConfiguration(in Configuration values);
164    boolean stopServiceToken(in ComponentName className, in IBinder token, int startId);
165    ComponentName getActivityClassForToken(in IBinder token);
166    String getPackageForToken(in IBinder token);
167    void setProcessLimit(int max);
168    int getProcessLimit();
169    int checkPermission(in String permission, int pid, int uid);
170    int checkUriPermission(in Uri uri, int pid, int uid, int mode, int userId,
171            in IBinder callerToken);
172    void grantUriPermission(in IApplicationThread caller, in String targetPkg, in Uri uri,
173            int mode, int userId);
174    void revokeUriPermission(in IApplicationThread caller, in String targetPkg, in Uri uri,
175            int mode, int userId);
176    void setActivityController(in IActivityController watcher, boolean imAMonkey);
177    void showWaitingForDebugger(in IApplicationThread who, boolean waiting);
178    /*
179     * This will deliver the specified signal to all the persistent processes. Currently only
180     * SIGUSR1 is delivered. All others are ignored.
181     */
182    void signalPersistentProcesses(int signal);
183    ParceledListSlice getRecentTasks(int maxNum,
184            int flags, int userId);
185    oneway void serviceDoneExecuting(in IBinder token, int type, int startId, int res);
186    oneway void activityDestroyed(in IBinder token);
187    IIntentSender getIntentSender(int type, in String packageName, in IBinder token,
188            in String resultWho, int requestCode, in Intent[] intents, in String[] resolvedTypes,
189            int flags, in Bundle options, int userId);
190    void cancelIntentSender(in IIntentSender sender);
191    String getPackageForIntentSender(in IIntentSender sender);
192    void registerIntentSenderCancelListener(in IIntentSender sender, in IResultReceiver receiver);
193    void unregisterIntentSenderCancelListener(in IIntentSender sender, in IResultReceiver receiver);
194    void enterSafeMode();
195    boolean startNextMatchingActivity(in IBinder callingActivity,
196            in Intent intent, in Bundle options);
197    void noteWakeupAlarm(in IIntentSender sender, int sourceUid,
198            in String sourcePkg, in String tag);
199    void removeContentProvider(in IBinder connection, boolean stable);
200    void setRequestedOrientation(in IBinder token, int requestedOrientation);
201    int getRequestedOrientation(in IBinder token);
202    void unbindFinished(in IBinder token, in Intent service, boolean doRebind);
203    void setProcessImportant(in IBinder token, int pid, boolean isForeground, String reason);
204    void setServiceForeground(in ComponentName className, in IBinder token,
205            int id, in Notification notification, int flags);
206    boolean moveActivityTaskToBack(in IBinder token, boolean nonRoot);
207    void getMemoryInfo(out ActivityManager.MemoryInfo outInfo);
208    List<ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState();
209    boolean clearApplicationUserData(in String packageName,
210            in IPackageDataObserver observer, int userId);
211    void forceStopPackage(in String packageName, int userId);
212    boolean killPids(in int[] pids, in String reason, boolean secure);
213    List<ActivityManager.RunningServiceInfo> getServices(int maxNum, int flags);
214    ActivityManager.TaskThumbnail getTaskThumbnail(int taskId);
215    ActivityManager.TaskDescription getTaskDescription(int taskId);
216    // Retrieve running application processes in the system
217    List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses();
218    // Get device configuration
219    ConfigurationInfo getDeviceConfigurationInfo();
220    IBinder peekService(in Intent service, in String resolvedType, in String callingPackage);
221    // Turn on/off profiling in a particular process.
222    boolean profileControl(in String process, int userId, boolean start,
223            in ProfilerInfo profilerInfo, int profileType);
224    boolean shutdown(int timeout);
225    void stopAppSwitches();
226    void resumeAppSwitches();
227    boolean bindBackupAgent(in String packageName, int backupRestoreMode, int userId);
228    void backupAgentCreated(in String packageName, in IBinder agent);
229    void unbindBackupAgent(in ApplicationInfo appInfo);
230    int getUidForIntentSender(in IIntentSender sender);
231    int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll,
232            boolean requireFull, in String name, in String callerPackage);
233    void addPackageDependency(in String packageName);
234    void killApplication(in String pkg, int appId, int userId, in String reason);
235    void closeSystemDialogs(in String reason);
236    Debug.MemoryInfo[] getProcessMemoryInfo(in int[] pids);
237    void killApplicationProcess(in String processName, int uid);
238    int startActivityIntentSender(in IApplicationThread caller,
239            in IntentSender intent, in Intent fillInIntent, in String resolvedType,
240            in IBinder resultTo, in String resultWho, int requestCode,
241            int flagsMask, int flagsValues, in Bundle options);
242    void overridePendingTransition(in IBinder token, in String packageName,
243            int enterAnim, int exitAnim);
244    // Special low-level communication with activity manager.
245    boolean handleApplicationWtf(in IBinder app, in String tag, boolean system,
246            in ApplicationErrorReport.ParcelableCrashInfo crashInfo);
247    void killBackgroundProcesses(in String packageName, int userId);
248    boolean isUserAMonkey();
249    WaitResult startActivityAndWait(in IApplicationThread caller, in String callingPackage,
250            in Intent intent, in String resolvedType, in IBinder resultTo, in String resultWho,
251            int requestCode, int flags, in ProfilerInfo profilerInfo, in Bundle options,
252            int userId);
253    boolean willActivityBeVisible(in IBinder token);
254    int startActivityWithConfig(in IApplicationThread caller, in String callingPackage,
255            in Intent intent, in String resolvedType, in IBinder resultTo, in String resultWho,
256            int requestCode, int startFlags, in Configuration newConfig,
257            in Bundle options, int userId);
258    // Retrieve info of applications installed on external media that are currently
259    // running.
260    List<ApplicationInfo> getRunningExternalApplications();
261    void finishHeavyWeightApp();
262    // A StrictMode violation to be handled.  The violationMask is a
263    // subset of the original StrictMode policy bitmask, with only the
264    // bit violated and penalty bits to be executed by the
265    // ActivityManagerService remaining set.
266    void handleApplicationStrictModeViolation(in IBinder app, int violationMask,
267            in StrictMode.ViolationInfo crashInfo);
268    boolean isImmersive(in IBinder token);
269    void setImmersive(in IBinder token, boolean immersive);
270    boolean isTopActivityImmersive();
271    void crashApplication(int uid, int initialPid, in String packageName, int userId, in String message);
272    String getProviderMimeType(in Uri uri, int userId);
273    IBinder newUriPermissionOwner(in String name);
274    void grantUriPermissionFromOwner(in IBinder owner, int fromUid, in String targetPkg,
275            in Uri uri, int mode, int sourceUserId, int targetUserId);
276    void revokeUriPermissionFromOwner(in IBinder owner, in Uri uri, int mode, int userId);
277    int checkGrantUriPermission(int callingUid, in String targetPkg, in Uri uri,
278            int modeFlags, int userId);
279    // Cause the specified process to dump the specified heap.
280    boolean dumpHeap(in String process, int userId, boolean managed, in String path,
281            in ParcelFileDescriptor fd);
282    int startActivities(in IApplicationThread caller, in String callingPackage,
283            in Intent[] intents, in String[] resolvedTypes, in IBinder resultTo,
284            in Bundle options, int userId);
285    boolean isUserRunning(int userid, int flags);
286    oneway void activitySlept(in IBinder token);
287    int getFrontActivityScreenCompatMode();
288    void setFrontActivityScreenCompatMode(int mode);
289    int getPackageScreenCompatMode(in String packageName);
290    void setPackageScreenCompatMode(in String packageName, int mode);
291    boolean getPackageAskScreenCompat(in String packageName);
292    void setPackageAskScreenCompat(in String packageName, boolean ask);
293    boolean switchUser(int userid);
294    void setFocusedTask(int taskId);
295    boolean removeTask(int taskId);
296    void registerProcessObserver(in IProcessObserver observer);
297    void unregisterProcessObserver(in IProcessObserver observer);
298    boolean isIntentSenderTargetedToPackage(in IIntentSender sender);
299    void updatePersistentConfiguration(in Configuration values);
300    long[] getProcessPss(in int[] pids);
301    void showBootMessage(in CharSequence msg, boolean always);
302    void killAllBackgroundProcesses();
303    ContentProviderHolder getContentProviderExternal(in String name, int userId,
304            in IBinder token);
305    void removeContentProviderExternal(in String name, in IBinder token);
306    // Get memory information about the calling process.
307    void getMyMemoryState(out ActivityManager.RunningAppProcessInfo outInfo);
308    boolean killProcessesBelowForeground(in String reason);
309    UserInfo getCurrentUser();
310    boolean shouldUpRecreateTask(in IBinder token, in String destAffinity);
311    boolean navigateUpTo(in IBinder token, in Intent target, int resultCode,
312            in Intent resultData);
313    void setLockScreenShown(boolean showing);
314    boolean finishActivityAffinity(in IBinder token);
315    // This is not public because you need to be very careful in how you
316    // manage your activity to make sure it is always the uid you expect.
317    int getLaunchedFromUid(in IBinder activityToken);
318    void unstableProviderDied(in IBinder connection);
319    boolean isIntentSenderAnActivity(in IIntentSender sender);
320    int startActivityAsUser(in IApplicationThread caller, in String callingPackage,
321            in Intent intent, in String resolvedType, in IBinder resultTo, in String resultWho,
322            int requestCode, int flags, in ProfilerInfo profilerInfo,
323            in Bundle options, int userId);
324    int stopUser(int userid, boolean force, in IStopUserCallback callback);
325    void registerUserSwitchObserver(in IUserSwitchObserver observer, in String name);
326    void unregisterUserSwitchObserver(in IUserSwitchObserver observer);
327    int[] getRunningUserIds();
328
329    // Deprecated - This method is only used by a few internal components and it will soon be
330    // replaced by a proper bug report API (which will be restricted to a few, pre-defined apps).
331    // No new code should be calling it.
332    void requestBugReport(int bugreportType);
333
334    /**
335     *  Takes a telephony bug report and notifies the user with the title and description
336     *  that are passed to this API as parameters
337     *
338     *  @param shareTitle should be a valid legible string less than 50 chars long
339     *  @param shareDescription should be less than 91 bytes when encoded into UTF-8 format
340     *
341     *  @throws IllegalArgumentException if shareTitle or shareDescription is too big or if the
342     *          paremeters cannot be encoding to an UTF-8 charset.
343     */
344    void requestTelephonyBugReport(in String shareTitle, in String shareDescription);
345
346    long inputDispatchingTimedOut(int pid, boolean aboveSystem, in String reason);
347    void clearPendingBackup();
348    Intent getIntentForIntentSender(in IIntentSender sender);
349    Bundle getAssistContextExtras(int requestType);
350    void reportAssistContextExtras(in IBinder token, in Bundle extras,
351            in AssistStructure structure, in AssistContent content, in Uri referrer);
352    // This is not public because you need to be very careful in how you
353    // manage your activity to make sure it is always the uid you expect.
354    String getLaunchedFromPackage(in IBinder activityToken);
355    void killUid(int appId, int userId, in String reason);
356    void setUserIsMonkey(boolean monkey);
357    void hang(in IBinder who, boolean allowRestart);
358    IActivityContainer createVirtualActivityContainer(in IBinder parentActivityToken,
359            in IActivityContainerCallback callback);
360    void moveTaskToStack(int taskId, int stackId, boolean toTop);
361    /**
362     * Resizes the input stack id to the given bounds.
363     *
364     * @param stackId Id of the stack to resize.
365     * @param bounds Bounds to resize the stack to or {@code null} for fullscreen.
366     * @param allowResizeInDockedMode True if the resize should be allowed when the docked stack is
367     *                                active.
368     * @param preserveWindows True if the windows of activities contained in the stack should be
369     *                        preserved.
370     * @param animate True if the stack resize should be animated.
371     * @param animationDuration The duration of the resize animation in milliseconds or -1 if the
372     *                          default animation duration should be used.
373     * @throws RemoteException
374     */
375    void resizeStack(int stackId, in Rect bounds, boolean allowResizeInDockedMode,
376            boolean preserveWindows, boolean animate, int animationDuration);
377    List<ActivityManager.StackInfo> getAllStackInfos();
378    void setFocusedStack(int stackId);
379    ActivityManager.StackInfo getStackInfo(int stackId);
380    boolean convertFromTranslucent(in IBinder token);
381    boolean convertToTranslucent(in IBinder token, in Bundle options);
382    void notifyActivityDrawn(in IBinder token);
383    void reportActivityFullyDrawn(in IBinder token);
384    void restart();
385    void performIdleMaintenance();
386    void takePersistableUriPermission(in Uri uri, int modeFlags, int userId);
387    void releasePersistableUriPermission(in Uri uri, int modeFlags, int userId);
388    ParceledListSlice getPersistedUriPermissions(in String packageName, boolean incoming);
389    void appNotRespondingViaProvider(in IBinder connection);
390    Rect getTaskBounds(int taskId);
391    int getActivityDisplayId(in IBinder activityToken);
392    boolean setProcessMemoryTrimLevel(in String process, int uid, int level);
393
394
395    // Start of L transactions
396    String getTagForIntentSender(in IIntentSender sender, in String prefix);
397    boolean startUserInBackground(int userid);
398    void startLockTaskModeById(int taskId);
399    void startLockTaskModeByToken(in IBinder token);
400    void stopLockTaskMode();
401    boolean isInLockTaskMode();
402    void setTaskDescription(in IBinder token, in ActivityManager.TaskDescription values);
403    int startVoiceActivity(in String callingPackage, int callingPid, int callingUid,
404            in Intent intent, in String resolvedType, in IVoiceInteractionSession session,
405            in IVoiceInteractor interactor, int flags, in ProfilerInfo profilerInfo,
406            in Bundle options, int userId);
407    int startAssistantActivity(in String callingPackage, int callingPid, int callingUid,
408            in Intent intent, in String resolvedType, in Bundle options, int userId);
409    Bundle getActivityOptions(in IBinder token);
410    List<IBinder> getAppTasks(in String callingPackage);
411    void startSystemLockTaskMode(int taskId);
412    void stopSystemLockTaskMode();
413    void finishVoiceTask(in IVoiceInteractionSession session);
414    boolean isTopOfTask(in IBinder token);
415    boolean requestVisibleBehind(in IBinder token, boolean visible);
416    boolean isBackgroundVisibleBehind(in IBinder token);
417    void backgroundResourcesReleased(in IBinder token);
418    void notifyLaunchTaskBehindComplete(in IBinder token);
419    int startActivityFromRecents(int taskId, in Bundle options);
420    void notifyEnterAnimationComplete(in IBinder token);
421    int startActivityAsCaller(in IApplicationThread caller, in String callingPackage,
422            in Intent intent, in String resolvedType, in IBinder resultTo, in String resultWho,
423            int requestCode, int flags, in ProfilerInfo profilerInfo, in Bundle options,
424            boolean ignoreTargetSecurity, int userId);
425    int addAppTask(in IBinder activityToken, in Intent intent,
426            in ActivityManager.TaskDescription description, in Bitmap thumbnail);
427    Point getAppTaskThumbnailSize();
428    boolean releaseActivityInstance(in IBinder token);
429    void releaseSomeActivities(in IApplicationThread app);
430    void bootAnimationComplete();
431    Bitmap getTaskDescriptionIcon(in String filename, int userId);
432    boolean launchAssistIntent(in Intent intent, int requestType, in String hint, int userHandle,
433            in Bundle args);
434    void startInPlaceAnimationOnFrontMostApplication(in Bundle opts);
435    int checkPermissionWithToken(in String permission, int pid, int uid,
436            in IBinder callerToken);
437    void registerTaskStackListener(in ITaskStackListener listener);
438
439
440    // Start of M transactions
441    void notifyCleartextNetwork(int uid, in byte[] firstPacket);
442    IActivityContainer createStackOnDisplay(int displayId);
443    int getFocusedStackId();
444    void setTaskResizeable(int taskId, int resizeableMode);
445    boolean requestAssistContextExtras(int requestType, in IResultReceiver receiver,
446            in Bundle receiverExtras, in IBinder activityToken,
447            boolean focused, boolean newSessionId);
448    void resizeTask(int taskId, in Rect bounds, int resizeMode);
449    int getLockTaskModeState();
450    void setDumpHeapDebugLimit(in String processName, int uid, long maxMemSize,
451            in String reportPackage);
452    void dumpHeapFinished(in String path);
453    void setVoiceKeepAwake(in IVoiceInteractionSession session, boolean keepAwake);
454    void updateLockTaskPackages(int userId, in String[] packages);
455    void noteAlarmStart(in IIntentSender sender, int sourceUid, in String tag);
456    void noteAlarmFinish(in IIntentSender sender, int sourceUid, in String tag);
457    int getPackageProcessState(in String packageName, in String callingPackage);
458    oneway void showLockTaskEscapeMessage(in IBinder token);
459    void updateDeviceOwner(in String packageName);
460    /**
461     * Notify the system that the keyguard is going away.
462     *
463     * @param flags See {@link android.view.WindowManagerPolicy#KEYGUARD_GOING_AWAY_FLAG_TO_SHADE}
464     *              etc.
465     */
466    void keyguardGoingAway(int flags);
467    int getUidProcessState(int uid, in String callingPackage);
468    void registerUidObserver(in IUidObserver observer, int which, int cutpoint,
469            String callingPackage);
470    void unregisterUidObserver(in IUidObserver observer);
471    boolean isAssistDataAllowedOnCurrentActivity();
472    boolean showAssistFromActivity(in IBinder token, in Bundle args);
473    boolean isRootVoiceInteraction(in IBinder token);
474
475
476    // Start of N transactions
477    // Start Binder transaction tracking for all applications.
478    boolean startBinderTracking();
479    // Stop Binder transaction tracking for all applications and dump trace data to the given file
480    // descriptor.
481    boolean stopBinderTrackingAndDump(in ParcelFileDescriptor fd);
482    /**
483     * Try to place task to provided position. The final position might be different depending on
484     * current user and stacks state. The task will be moved to target stack if it's currently in
485     * different stack.
486     */
487    void positionTaskInStack(int taskId, int stackId, int position);
488    int getActivityStackId(in IBinder token);
489    void exitFreeformMode(in IBinder token);
490    void reportSizeConfigurations(in IBinder token, in int[] horizontalSizeConfiguration,
491            in int[] verticalSizeConfigurations, in int[] smallestWidthConfigurations);
492    boolean moveTaskToDockedStack(int taskId, int createMode, boolean toTop, boolean animate,
493            in Rect initialBounds);
494    void suppressResizeConfigChanges(boolean suppress);
495    void moveTasksToFullscreenStack(int fromStackId, boolean onTop);
496    boolean moveTopActivityToPinnedStack(int stackId, in Rect bounds);
497    boolean isAppStartModeDisabled(int uid, in String packageName);
498    boolean unlockUser(int userid, in byte[] token, in byte[] secret,
499            in IProgressListener listener);
500    boolean isInMultiWindowMode(in IBinder token);
501    boolean isInPictureInPictureMode(in IBinder token);
502    void killPackageDependents(in String packageName, int userId);
503    boolean enterPictureInPictureMode(in IBinder token, in PictureInPictureParams params);
504    void setPictureInPictureParams(in IBinder token, in PictureInPictureParams params);
505    int getMaxNumPictureInPictureActions(in IBinder token);
506    void activityRelaunched(in IBinder token);
507    IBinder getUriPermissionOwnerForActivity(in IBinder activityToken);
508    /**
509     * Resizes the docked stack, and all other stacks as the result of the dock stack bounds change.
510     *
511     * @param dockedBounds The bounds for the docked stack.
512     * @param tempDockedTaskBounds The temporary bounds for the tasks in the docked stack, which
513     *                             might be different from the stack bounds to allow more
514     *                             flexibility while resizing, or {@code null} if they should be the
515     *                             same as the stack bounds.
516     * @param tempDockedTaskInsetBounds The temporary bounds for the tasks to calculate the insets.
517     *                                  When resizing, we usually "freeze" the layout of a task. To
518     *                                  achieve that, we also need to "freeze" the insets, which
519     *                                  gets achieved by changing task bounds but not bounds used
520     *                                  to calculate the insets in this transient state
521     * @param tempOtherTaskBounds The temporary bounds for the tasks in all other stacks, or
522     *                            {@code null} if they should be the same as the stack bounds.
523     * @param tempOtherTaskInsetBounds Like {@code tempDockedTaskInsetBounds}, but for the other
524     *                                 stacks.
525     * @throws RemoteException
526     */
527    void resizeDockedStack(in Rect dockedBounds, in Rect tempDockedTaskBounds,
528            in Rect tempDockedTaskInsetBounds,
529            in Rect tempOtherTaskBounds, in Rect tempOtherTaskInsetBounds);
530    int setVrMode(in IBinder token, boolean enabled, in ComponentName packageName);
531    // Gets the URI permissions granted to an arbitrary package.
532    // NOTE: this is different from getPersistedUriPermissions(), which returns the URIs the package
533    // granted to another packages (instead of those granted to it).
534    ParceledListSlice getGrantedUriPermissions(in String packageName, int userId);
535    // Clears the URI permissions granted to an arbitrary package.
536    void clearGrantedUriPermissions(in String packageName, int userId);
537    boolean isAppForeground(int uid);
538    void startLocalVoiceInteraction(in IBinder token, in Bundle options);
539    void stopLocalVoiceInteraction(in IBinder token);
540    boolean supportsLocalVoiceInteraction();
541    void notifyPinnedStackAnimationStarted();
542    void notifyPinnedStackAnimationEnded();
543    void removeStack(int stackId);
544    void makePackageIdle(String packageName, int userId);
545    int getMemoryTrimLevel();
546    /**
547     * Resizes the pinned stack.
548     *
549     * @param pinnedBounds The bounds for the pinned stack.
550     * @param tempPinnedTaskBounds The temporary bounds for the tasks in the pinned stack, which
551     *                             might be different from the stack bounds to allow more
552     *                             flexibility while resizing, or {@code null} if they should be the
553     *                             same as the stack bounds.
554     */
555    void resizePinnedStack(in Rect pinnedBounds, in Rect tempPinnedTaskBounds);
556    boolean isVrModePackageEnabled(in ComponentName packageName);
557    /**
558     * Moves all tasks from the docked stack in the fullscreen stack and puts the top task of the
559     * fullscreen stack into the docked stack.
560     */
561    void swapDockedAndFullscreenStack();
562    void notifyLockedProfile(int userId);
563    void startConfirmDeviceCredentialIntent(in Intent intent, in Bundle options);
564    void sendIdleJobTrigger();
565    int sendIntentSender(in IIntentSender target, int code, in Intent intent,
566            in String resolvedType, in IIntentReceiver finishedReceiver,
567            in String requiredPermission, in Bundle options);
568
569
570    // Start of N MR1 transactions
571    void setVrThread(int tid);
572    void setRenderThread(int tid);
573    /**
574     * Lets activity manager know whether the calling process is currently showing "top-level" UI
575     * that is not an activity, i.e. windows on the screen the user is currently interacting with.
576     *
577     * <p>This flag can only be set for persistent processes.
578     *
579     * @param hasTopUi Whether the calling process has "top-level" UI.
580     */
581    void setHasTopUi(boolean hasTopUi);
582
583    // Start of O transactions
584    void requestActivityRelaunch(in IBinder token);
585    /**
586     * Updates override configuration applied to specific display.
587     * @param values Update values for display configuration. If null is passed it will request the
588     *               Window Manager to compute new config for the specified display.
589     * @param displayId Id of the display to apply the config to.
590     * @throws RemoteException
591     * @return Returns true if the configuration was updated.
592     */
593    boolean updateDisplayOverrideConfiguration(in Configuration values, int displayId);
594    void unregisterTaskStackListener(ITaskStackListener listener);
595    void moveStackToDisplay(int stackId, int displayId);
596    boolean requestAutofillData(in IResultReceiver receiver, in Bundle receiverExtras,
597                                in IBinder activityToken, int flags);
598    void dismissKeyguard(in IBinder token, in IKeyguardDismissCallback callback);
599    int restartUserInBackground(int userId);
600
601    /** Cancels the window transitions for the given task. */
602    void cancelTaskWindowTransition(int taskId);
603
604    /** Cancels the thumbnail transitions for the given task. */
605    void cancelTaskThumbnailTransition(int taskId);
606
607    /**
608     * @param taskId the id of the task to retrieve the sAutoapshots for
609     * @param reducedResolution if set, if the snapshot needs to be loaded from disk, this will load
610     *                          a reduced resolution of it, which is much faster
611     * @return a graphic buffer representing a screenshot of a task
612     */
613    ActivityManager.TaskSnapshot getTaskSnapshot(int taskId, boolean reducedResolution);
614
615    void scheduleApplicationInfoChanged(in List<String> packageNames, int userId);
616    void setPersistentVrThread(int tid);
617
618    void waitForNetworkStateUpdate(long procStateSeq);
619
620    /**
621     * See {@link android.app.Activity#setDisablePreviewScreenshots}
622     */
623    void setDisablePreviewScreenshots(IBinder token, boolean disable);
624
625    /**
626     * Return the user id of last resumed activity.
627     */
628    int getLastResumedActivityUserId();
629
630    /**
631     * Add a bare uid to the background restrictions whitelist.  Only the system uid may call this.
632     */
633     void backgroundWhitelistUid(int uid);
634
635    // WARNING: when these transactions are updated, check if they are any callers on the native
636    // side. If so, make sure they are using the correct transaction ids and arguments.
637    // If a transaction which will also be used on the native side is being inserted, add it
638    // alongside with other transactions of this kind at the top of this file.
639}
640