Home | History | Annotate | Download | only in app
      1 /*
      2  * Copyright (C) 2006 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.app.ActivityManager.RunningTaskInfo;
     20 import android.app.ActivityManager.RunningServiceInfo;
     21 import android.app.ActivityManager.StackBoxInfo;
     22 import android.content.ComponentName;
     23 import android.content.ContentProviderNative;
     24 import android.content.IContentProvider;
     25 import android.content.IIntentReceiver;
     26 import android.content.IIntentSender;
     27 import android.content.Intent;
     28 import android.content.IntentFilter;
     29 import android.content.IntentSender;
     30 import android.content.UriPermission;
     31 import android.content.pm.ApplicationInfo;
     32 import android.content.pm.ConfigurationInfo;
     33 import android.content.pm.IPackageDataObserver;
     34 import android.content.pm.ParceledListSlice;
     35 import android.content.pm.ProviderInfo;
     36 import android.content.pm.UserInfo;
     37 import android.content.res.Configuration;
     38 import android.graphics.Bitmap;
     39 import android.net.Uri;
     40 import android.os.Bundle;
     41 import android.os.Debug;
     42 import android.os.IBinder;
     43 import android.os.IInterface;
     44 import android.os.Parcel;
     45 import android.os.ParcelFileDescriptor;
     46 import android.os.Parcelable;
     47 import android.os.RemoteException;
     48 import android.os.StrictMode;
     49 
     50 import java.util.List;
     51 
     52 /**
     53  * System private API for talking with the activity manager service.  This
     54  * provides calls from the application back to the activity manager.
     55  *
     56  * {@hide}
     57  */
     58 public interface IActivityManager extends IInterface {
     59     public int startActivity(IApplicationThread caller, String callingPackage,
     60             Intent intent, String resolvedType, IBinder resultTo, String resultWho,
     61             int requestCode, int flags, String profileFile,
     62             ParcelFileDescriptor profileFd, Bundle options) throws RemoteException;
     63     public int startActivityAsUser(IApplicationThread caller, String callingPackage,
     64             Intent intent, String resolvedType, IBinder resultTo, String resultWho,
     65             int requestCode, int flags, String profileFile,
     66             ParcelFileDescriptor profileFd, Bundle options, int userId) throws RemoteException;
     67     public WaitResult startActivityAndWait(IApplicationThread caller, String callingPackage,
     68             Intent intent, String resolvedType, IBinder resultTo, String resultWho,
     69             int requestCode, int flags, String profileFile,
     70             ParcelFileDescriptor profileFd, Bundle options, int userId) throws RemoteException;
     71     public int startActivityWithConfig(IApplicationThread caller, String callingPackage,
     72             Intent intent, String resolvedType, IBinder resultTo, String resultWho,
     73             int requestCode, int startFlags, Configuration newConfig,
     74             Bundle options, int userId) throws RemoteException;
     75     public int startActivityIntentSender(IApplicationThread caller,
     76             IntentSender intent, Intent fillInIntent, String resolvedType,
     77             IBinder resultTo, String resultWho, int requestCode,
     78             int flagsMask, int flagsValues, Bundle options) throws RemoteException;
     79     public boolean startNextMatchingActivity(IBinder callingActivity,
     80             Intent intent, Bundle options) throws RemoteException;
     81     public boolean finishActivity(IBinder token, int code, Intent data)
     82             throws RemoteException;
     83     public void finishSubActivity(IBinder token, String resultWho, int requestCode) throws RemoteException;
     84     public boolean finishActivityAffinity(IBinder token) throws RemoteException;
     85     public boolean willActivityBeVisible(IBinder token) throws RemoteException;
     86     public Intent registerReceiver(IApplicationThread caller, String callerPackage,
     87             IIntentReceiver receiver, IntentFilter filter,
     88             String requiredPermission, int userId) throws RemoteException;
     89     public void unregisterReceiver(IIntentReceiver receiver) throws RemoteException;
     90     public int broadcastIntent(IApplicationThread caller, Intent intent,
     91             String resolvedType, IIntentReceiver resultTo, int resultCode,
     92             String resultData, Bundle map, String requiredPermission,
     93             int appOp, boolean serialized, boolean sticky, int userId) throws RemoteException;
     94     public void unbroadcastIntent(IApplicationThread caller, Intent intent, int userId) throws RemoteException;
     95     public void finishReceiver(IBinder who, int resultCode, String resultData, Bundle map, boolean abortBroadcast) throws RemoteException;
     96     public void attachApplication(IApplicationThread app) throws RemoteException;
     97     public void activityResumed(IBinder token) throws RemoteException;
     98     public void activityIdle(IBinder token, Configuration config,
     99             boolean stopProfiling) throws RemoteException;
    100     public void activityPaused(IBinder token) throws RemoteException;
    101     public void activityStopped(IBinder token, Bundle state,
    102             Bitmap thumbnail, CharSequence description) throws RemoteException;
    103     public void activitySlept(IBinder token) throws RemoteException;
    104     public void activityDestroyed(IBinder token) throws RemoteException;
    105     public String getCallingPackage(IBinder token) throws RemoteException;
    106     public ComponentName getCallingActivity(IBinder token) throws RemoteException;
    107     public List<RunningTaskInfo> getTasks(int maxNum, int flags,
    108                          IThumbnailReceiver receiver) throws RemoteException;
    109     public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum,
    110             int flags, int userId) throws RemoteException;
    111     public ActivityManager.TaskThumbnails getTaskThumbnails(int taskId) throws RemoteException;
    112     public Bitmap getTaskTopThumbnail(int taskId) throws RemoteException;
    113     public List<RunningServiceInfo> getServices(int maxNum, int flags) throws RemoteException;
    114     public List<ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState()
    115             throws RemoteException;
    116     public void moveTaskToFront(int task, int flags, Bundle options) throws RemoteException;
    117     public void moveTaskToBack(int task) throws RemoteException;
    118     public boolean moveActivityTaskToBack(IBinder token, boolean nonRoot) throws RemoteException;
    119     public void moveTaskBackwards(int task) throws RemoteException;
    120     public int createStack(int taskId, int relativeStackBoxId, int position, float weight)
    121             throws RemoteException;
    122     public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException;
    123     public void resizeStackBox(int stackBoxId, float weight) throws RemoteException;
    124     public List<StackBoxInfo> getStackBoxes() throws RemoteException;
    125     public StackBoxInfo getStackBoxInfo(int stackBoxId) throws RemoteException;
    126     public void setFocusedStack(int stackId) throws RemoteException;
    127     public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException;
    128     /* oneway */
    129     public void reportThumbnail(IBinder token,
    130             Bitmap thumbnail, CharSequence description) throws RemoteException;
    131     public ContentProviderHolder getContentProvider(IApplicationThread caller,
    132             String name, int userId, boolean stable) throws RemoteException;
    133     public ContentProviderHolder getContentProviderExternal(String name, int userId, IBinder token)
    134             throws RemoteException;
    135     public void removeContentProvider(IBinder connection, boolean stable) throws RemoteException;
    136     public void removeContentProviderExternal(String name, IBinder token) throws RemoteException;
    137     public void publishContentProviders(IApplicationThread caller,
    138             List<ContentProviderHolder> providers) throws RemoteException;
    139     public boolean refContentProvider(IBinder connection, int stableDelta, int unstableDelta)
    140             throws RemoteException;
    141     public void unstableProviderDied(IBinder connection) throws RemoteException;
    142     public void appNotRespondingViaProvider(IBinder connection) throws RemoteException;
    143     public PendingIntent getRunningServiceControlPanel(ComponentName service)
    144             throws RemoteException;
    145     public ComponentName startService(IApplicationThread caller, Intent service,
    146             String resolvedType, int userId) throws RemoteException;
    147     public int stopService(IApplicationThread caller, Intent service,
    148             String resolvedType, int userId) throws RemoteException;
    149     public boolean stopServiceToken(ComponentName className, IBinder token,
    150             int startId) throws RemoteException;
    151     public void setServiceForeground(ComponentName className, IBinder token,
    152             int id, Notification notification, boolean keepNotification) throws RemoteException;
    153     public int bindService(IApplicationThread caller, IBinder token,
    154             Intent service, String resolvedType,
    155             IServiceConnection connection, int flags, int userId) throws RemoteException;
    156     public boolean unbindService(IServiceConnection connection) throws RemoteException;
    157     public void publishService(IBinder token,
    158             Intent intent, IBinder service) throws RemoteException;
    159     public void unbindFinished(IBinder token, Intent service,
    160             boolean doRebind) throws RemoteException;
    161     /* oneway */
    162     public void serviceDoneExecuting(IBinder token, int type, int startId,
    163             int res) throws RemoteException;
    164     public IBinder peekService(Intent service, String resolvedType) throws RemoteException;
    165 
    166     public boolean bindBackupAgent(ApplicationInfo appInfo, int backupRestoreMode)
    167             throws RemoteException;
    168     public void clearPendingBackup() throws RemoteException;
    169     public void backupAgentCreated(String packageName, IBinder agent) throws RemoteException;
    170     public void unbindBackupAgent(ApplicationInfo appInfo) throws RemoteException;
    171     public void killApplicationProcess(String processName, int uid) throws RemoteException;
    172 
    173     public boolean startInstrumentation(ComponentName className, String profileFile,
    174             int flags, Bundle arguments, IInstrumentationWatcher watcher,
    175             IUiAutomationConnection connection, int userId) throws RemoteException;
    176     public void finishInstrumentation(IApplicationThread target,
    177             int resultCode, Bundle results) throws RemoteException;
    178 
    179     public Configuration getConfiguration() throws RemoteException;
    180     public void updateConfiguration(Configuration values) throws RemoteException;
    181     public void setRequestedOrientation(IBinder token,
    182             int requestedOrientation) throws RemoteException;
    183     public int getRequestedOrientation(IBinder token) throws RemoteException;
    184 
    185     public ComponentName getActivityClassForToken(IBinder token) throws RemoteException;
    186     public String getPackageForToken(IBinder token) throws RemoteException;
    187 
    188     public IIntentSender getIntentSender(int type,
    189             String packageName, IBinder token, String resultWho,
    190             int requestCode, Intent[] intents, String[] resolvedTypes,
    191             int flags, Bundle options, int userId) throws RemoteException;
    192     public void cancelIntentSender(IIntentSender sender) throws RemoteException;
    193     public boolean clearApplicationUserData(final String packageName,
    194             final IPackageDataObserver observer, int userId) throws RemoteException;
    195     public String getPackageForIntentSender(IIntentSender sender) throws RemoteException;
    196     public int getUidForIntentSender(IIntentSender sender) throws RemoteException;
    197 
    198     public int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll,
    199             boolean requireFull, String name, String callerPackage) throws RemoteException;
    200 
    201     public void setProcessLimit(int max) throws RemoteException;
    202     public int getProcessLimit() throws RemoteException;
    203 
    204     public void setProcessForeground(IBinder token, int pid,
    205             boolean isForeground) throws RemoteException;
    206 
    207     public int checkPermission(String permission, int pid, int uid)
    208             throws RemoteException;
    209 
    210     public int checkUriPermission(Uri uri, int pid, int uid, int mode)
    211             throws RemoteException;
    212     public void grantUriPermission(IApplicationThread caller, String targetPkg,
    213             Uri uri, int mode) throws RemoteException;
    214     public void revokeUriPermission(IApplicationThread caller, Uri uri,
    215             int mode) throws RemoteException;
    216     public void takePersistableUriPermission(Uri uri, int modeFlags) throws RemoteException;
    217     public void releasePersistableUriPermission(Uri uri, int modeFlags) throws RemoteException;
    218     public ParceledListSlice<UriPermission> getPersistedUriPermissions(
    219             String packageName, boolean incoming) throws RemoteException;
    220 
    221     public void showWaitingForDebugger(IApplicationThread who, boolean waiting)
    222             throws RemoteException;
    223 
    224     public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) throws RemoteException;
    225 
    226     public void killBackgroundProcesses(final String packageName, int userId)
    227             throws RemoteException;
    228     public void killAllBackgroundProcesses() throws RemoteException;
    229     public void forceStopPackage(final String packageName, int userId) throws RemoteException;
    230 
    231     // Note: probably don't want to allow applications access to these.
    232     public void goingToSleep() throws RemoteException;
    233     public void wakingUp() throws RemoteException;
    234     public void setLockScreenShown(boolean shown) throws RemoteException;
    235 
    236     public void unhandledBack() throws RemoteException;
    237     public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException;
    238     public void setDebugApp(
    239         String packageName, boolean waitForDebugger, boolean persistent)
    240         throws RemoteException;
    241     public void setAlwaysFinish(boolean enabled) throws RemoteException;
    242     public void setActivityController(IActivityController watcher)
    243         throws RemoteException;
    244 
    245     public void enterSafeMode() throws RemoteException;
    246 
    247     public void noteWakeupAlarm(IIntentSender sender) throws RemoteException;
    248 
    249     public boolean killPids(int[] pids, String reason, boolean secure) throws RemoteException;
    250     public boolean killProcessesBelowForeground(String reason) throws RemoteException;
    251 
    252     // Special low-level communication with activity manager.
    253     public void startRunning(String pkg, String cls, String action,
    254             String data) throws RemoteException;
    255     public void handleApplicationCrash(IBinder app,
    256             ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException;
    257     public boolean handleApplicationWtf(IBinder app, String tag,
    258             ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException;
    259 
    260     // A StrictMode violation to be handled.  The violationMask is a
    261     // subset of the original StrictMode policy bitmask, with only the
    262     // bit violated and penalty bits to be executed by the
    263     // ActivityManagerService remaining set.
    264     public void handleApplicationStrictModeViolation(IBinder app, int violationMask,
    265             StrictMode.ViolationInfo crashInfo) throws RemoteException;
    266 
    267     /*
    268      * This will deliver the specified signal to all the persistent processes. Currently only
    269      * SIGUSR1 is delivered. All others are ignored.
    270      */
    271     public void signalPersistentProcesses(int signal) throws RemoteException;
    272     // Retrieve running application processes in the system
    273     public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses()
    274             throws RemoteException;
    275     // Retrieve info of applications installed on external media that are currently
    276     // running.
    277     public List<ApplicationInfo> getRunningExternalApplications()
    278             throws RemoteException;
    279     // Get memory information about the calling process.
    280     public void getMyMemoryState(ActivityManager.RunningAppProcessInfo outInfo)
    281             throws RemoteException;
    282     // Get device configuration
    283     public ConfigurationInfo getDeviceConfigurationInfo() throws RemoteException;
    284 
    285     // Turn on/off profiling in a particular process.
    286     public boolean profileControl(String process, int userId, boolean start,
    287             String path, ParcelFileDescriptor fd, int profileType) throws RemoteException;
    288 
    289     public boolean shutdown(int timeout) throws RemoteException;
    290 
    291     public void stopAppSwitches() throws RemoteException;
    292     public void resumeAppSwitches() throws RemoteException;
    293 
    294     public void killApplicationWithAppId(String pkg, int appid, String reason)
    295             throws RemoteException;
    296 
    297     public void closeSystemDialogs(String reason) throws RemoteException;
    298 
    299     public Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids)
    300             throws RemoteException;
    301 
    302     public void overridePendingTransition(IBinder token, String packageName,
    303             int enterAnim, int exitAnim) throws RemoteException;
    304 
    305     public boolean isUserAMonkey() throws RemoteException;
    306 
    307     public void setUserIsMonkey(boolean monkey) throws RemoteException;
    308 
    309     public void finishHeavyWeightApp() throws RemoteException;
    310 
    311     public boolean convertFromTranslucent(IBinder token) throws RemoteException;
    312     public boolean convertToTranslucent(IBinder token) throws RemoteException;
    313     public void notifyActivityDrawn(IBinder token) throws RemoteException;
    314 
    315     public void setImmersive(IBinder token, boolean immersive) throws RemoteException;
    316     public boolean isImmersive(IBinder token) throws RemoteException;
    317     public boolean isTopActivityImmersive() throws RemoteException;
    318 
    319     public void crashApplication(int uid, int initialPid, String packageName,
    320             String message) throws RemoteException;
    321 
    322     public String getProviderMimeType(Uri uri, int userId) throws RemoteException;
    323 
    324     public IBinder newUriPermissionOwner(String name) throws RemoteException;
    325     public void grantUriPermissionFromOwner(IBinder owner, int fromUid, String targetPkg,
    326             Uri uri, int mode) throws RemoteException;
    327     public void revokeUriPermissionFromOwner(IBinder owner, Uri uri,
    328             int mode) throws RemoteException;
    329 
    330     public int checkGrantUriPermission(int callingUid, String targetPkg,
    331             Uri uri, int modeFlags) throws RemoteException;
    332 
    333     // Cause the specified process to dump the specified heap.
    334     public boolean dumpHeap(String process, int userId, boolean managed, String path,
    335         ParcelFileDescriptor fd) throws RemoteException;
    336 
    337     public int startActivities(IApplicationThread caller, String callingPackage,
    338             Intent[] intents, String[] resolvedTypes, IBinder resultTo,
    339             Bundle options, int userId) throws RemoteException;
    340 
    341     public int getFrontActivityScreenCompatMode() throws RemoteException;
    342     public void setFrontActivityScreenCompatMode(int mode) throws RemoteException;
    343     public int getPackageScreenCompatMode(String packageName) throws RemoteException;
    344     public void setPackageScreenCompatMode(String packageName, int mode)
    345             throws RemoteException;
    346     public boolean getPackageAskScreenCompat(String packageName) throws RemoteException;
    347     public void setPackageAskScreenCompat(String packageName, boolean ask)
    348             throws RemoteException;
    349 
    350     // Multi-user APIs
    351     public boolean switchUser(int userid) throws RemoteException;
    352     public int stopUser(int userid, IStopUserCallback callback) throws RemoteException;
    353     public UserInfo getCurrentUser() throws RemoteException;
    354     public boolean isUserRunning(int userid, boolean orStopping) throws RemoteException;
    355     public int[] getRunningUserIds() throws RemoteException;
    356 
    357     public boolean removeSubTask(int taskId, int subTaskIndex) throws RemoteException;
    358 
    359     public boolean removeTask(int taskId, int flags) throws RemoteException;
    360 
    361     public void registerProcessObserver(IProcessObserver observer) throws RemoteException;
    362     public void unregisterProcessObserver(IProcessObserver observer) throws RemoteException;
    363 
    364     public boolean isIntentSenderTargetedToPackage(IIntentSender sender) throws RemoteException;
    365 
    366     public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException;
    367 
    368     public Intent getIntentForIntentSender(IIntentSender sender) throws RemoteException;
    369 
    370     public void updatePersistentConfiguration(Configuration values) throws RemoteException;
    371 
    372     public long[] getProcessPss(int[] pids) throws RemoteException;
    373 
    374     public void showBootMessage(CharSequence msg, boolean always) throws RemoteException;
    375 
    376     public void dismissKeyguardOnNextActivity() throws RemoteException;
    377 
    378     public boolean targetTaskAffinityMatchesActivity(IBinder token, String destAffinity)
    379             throws RemoteException;
    380 
    381     public boolean navigateUpTo(IBinder token, Intent target, int resultCode, Intent resultData)
    382             throws RemoteException;
    383 
    384     // These are not public because you need to be very careful in how you
    385     // manage your activity to make sure it is always the uid you expect.
    386     public int getLaunchedFromUid(IBinder activityToken) throws RemoteException;
    387     public String getLaunchedFromPackage(IBinder activityToken) throws RemoteException;
    388 
    389     public void registerUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException;
    390     public void unregisterUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException;
    391 
    392     public void requestBugReport() throws RemoteException;
    393 
    394     public long inputDispatchingTimedOut(int pid, boolean aboveSystem, String reason)
    395             throws RemoteException;
    396 
    397     public Bundle getAssistContextExtras(int requestType) throws RemoteException;
    398 
    399     public void reportAssistContextExtras(IBinder token, Bundle extras) throws RemoteException;
    400 
    401     public void killUid(int uid, String reason) throws RemoteException;
    402 
    403     public void hang(IBinder who, boolean allowRestart) throws RemoteException;
    404 
    405     public void reportActivityFullyDrawn(IBinder token) throws RemoteException;
    406 
    407     public void restart() throws RemoteException;
    408 
    409     public void performIdleMaintenance() throws RemoteException;
    410 
    411     /*
    412      * Private non-Binder interfaces
    413      */
    414     /* package */ boolean testIsSystemReady();
    415 
    416     /** Information you can retrieve about a particular application. */
    417     public static class ContentProviderHolder implements Parcelable {
    418         public final ProviderInfo info;
    419         public IContentProvider provider;
    420         public IBinder connection;
    421         public boolean noReleaseNeeded;
    422 
    423         public ContentProviderHolder(ProviderInfo _info) {
    424             info = _info;
    425         }
    426 
    427         @Override
    428         public int describeContents() {
    429             return 0;
    430         }
    431 
    432         @Override
    433         public void writeToParcel(Parcel dest, int flags) {
    434             info.writeToParcel(dest, 0);
    435             if (provider != null) {
    436                 dest.writeStrongBinder(provider.asBinder());
    437             } else {
    438                 dest.writeStrongBinder(null);
    439             }
    440             dest.writeStrongBinder(connection);
    441             dest.writeInt(noReleaseNeeded ? 1:0);
    442         }
    443 
    444         public static final Parcelable.Creator<ContentProviderHolder> CREATOR
    445                 = new Parcelable.Creator<ContentProviderHolder>() {
    446             @Override
    447             public ContentProviderHolder createFromParcel(Parcel source) {
    448                 return new ContentProviderHolder(source);
    449             }
    450 
    451             @Override
    452             public ContentProviderHolder[] newArray(int size) {
    453                 return new ContentProviderHolder[size];
    454             }
    455         };
    456 
    457         private ContentProviderHolder(Parcel source) {
    458             info = ProviderInfo.CREATOR.createFromParcel(source);
    459             provider = ContentProviderNative.asInterface(
    460                 source.readStrongBinder());
    461             connection = source.readStrongBinder();
    462             noReleaseNeeded = source.readInt() != 0;
    463         }
    464     }
    465 
    466     /** Information returned after waiting for an activity start. */
    467     public static class WaitResult implements Parcelable {
    468         public int result;
    469         public boolean timeout;
    470         public ComponentName who;
    471         public long thisTime;
    472         public long totalTime;
    473 
    474         public WaitResult() {
    475         }
    476 
    477         @Override
    478         public int describeContents() {
    479             return 0;
    480         }
    481 
    482         @Override
    483         public void writeToParcel(Parcel dest, int flags) {
    484             dest.writeInt(result);
    485             dest.writeInt(timeout ? 1 : 0);
    486             ComponentName.writeToParcel(who, dest);
    487             dest.writeLong(thisTime);
    488             dest.writeLong(totalTime);
    489         }
    490 
    491         public static final Parcelable.Creator<WaitResult> CREATOR
    492                 = new Parcelable.Creator<WaitResult>() {
    493             @Override
    494             public WaitResult createFromParcel(Parcel source) {
    495                 return new WaitResult(source);
    496             }
    497 
    498             @Override
    499             public WaitResult[] newArray(int size) {
    500                 return new WaitResult[size];
    501             }
    502         };
    503 
    504         private WaitResult(Parcel source) {
    505             result = source.readInt();
    506             timeout = source.readInt() != 0;
    507             who = ComponentName.readFromParcel(source);
    508             thisTime = source.readLong();
    509             totalTime = source.readLong();
    510         }
    511     }
    512 
    513     String descriptor = "android.app.IActivityManager";
    514 
    515     // Please keep these transaction codes the same -- they are also
    516     // sent by C++ code.
    517     int START_RUNNING_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION;
    518     int HANDLE_APPLICATION_CRASH_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+1;
    519     int START_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+2;
    520     int UNHANDLED_BACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+3;
    521     int OPEN_CONTENT_URI_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+4;
    522 
    523     // Remaining non-native transaction codes.
    524     int FINISH_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+10;
    525     int REGISTER_RECEIVER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+11;
    526     int UNREGISTER_RECEIVER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+12;
    527     int BROADCAST_INTENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+13;
    528     int UNBROADCAST_INTENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+14;
    529     int FINISH_RECEIVER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+15;
    530     int ATTACH_APPLICATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+16;
    531     int ACTIVITY_IDLE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+17;
    532     int ACTIVITY_PAUSED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+18;
    533     int ACTIVITY_STOPPED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+19;
    534     int GET_CALLING_PACKAGE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+20;
    535     int GET_CALLING_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+21;
    536     int GET_TASKS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+22;
    537     int MOVE_TASK_TO_FRONT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+23;
    538     int MOVE_TASK_TO_BACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+24;
    539     int MOVE_TASK_BACKWARDS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+25;
    540     int GET_TASK_FOR_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+26;
    541     int REPORT_THUMBNAIL_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+27;
    542     int GET_CONTENT_PROVIDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+28;
    543     int PUBLISH_CONTENT_PROVIDERS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+29;
    544     int REF_CONTENT_PROVIDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+30;
    545     int FINISH_SUB_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+31;
    546     int GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+32;
    547     int START_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+33;
    548     int STOP_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+34;
    549     int BIND_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+35;
    550     int UNBIND_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+36;
    551     int PUBLISH_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+37;
    552     int ACTIVITY_RESUMED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+38;
    553     int GOING_TO_SLEEP_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+39;
    554     int WAKING_UP_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+40;
    555     int SET_DEBUG_APP_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+41;
    556     int SET_ALWAYS_FINISH_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+42;
    557     int START_INSTRUMENTATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+43;
    558     int FINISH_INSTRUMENTATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+44;
    559     int GET_CONFIGURATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+45;
    560     int UPDATE_CONFIGURATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+46;
    561     int STOP_SERVICE_TOKEN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+47;
    562     int GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+48;
    563     int GET_PACKAGE_FOR_TOKEN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+49;
    564     int SET_PROCESS_LIMIT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+50;
    565     int GET_PROCESS_LIMIT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+51;
    566     int CHECK_PERMISSION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+52;
    567     int CHECK_URI_PERMISSION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+53;
    568     int GRANT_URI_PERMISSION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+54;
    569     int REVOKE_URI_PERMISSION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+55;
    570     int SET_ACTIVITY_CONTROLLER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+56;
    571     int SHOW_WAITING_FOR_DEBUGGER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+57;
    572     int SIGNAL_PERSISTENT_PROCESSES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+58;
    573     int GET_RECENT_TASKS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+59;
    574     int SERVICE_DONE_EXECUTING_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+60;
    575     int ACTIVITY_DESTROYED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+61;
    576     int GET_INTENT_SENDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+62;
    577     int CANCEL_INTENT_SENDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+63;
    578     int GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+64;
    579     int ENTER_SAFE_MODE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+65;
    580     int START_NEXT_MATCHING_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+66;
    581     int NOTE_WAKEUP_ALARM_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+67;
    582     int REMOVE_CONTENT_PROVIDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+68;
    583     int SET_REQUESTED_ORIENTATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+69;
    584     int GET_REQUESTED_ORIENTATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+70;
    585     int UNBIND_FINISHED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+71;
    586     int SET_PROCESS_FOREGROUND_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+72;
    587     int SET_SERVICE_FOREGROUND_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+73;
    588     int MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+74;
    589     int GET_MEMORY_INFO_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+75;
    590     int GET_PROCESSES_IN_ERROR_STATE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+76;
    591     int CLEAR_APP_DATA_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+77;
    592     int FORCE_STOP_PACKAGE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+78;
    593     int KILL_PIDS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+79;
    594     int GET_SERVICES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+80;
    595     int GET_TASK_THUMBNAILS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+81;
    596     int GET_RUNNING_APP_PROCESSES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+82;
    597     int GET_DEVICE_CONFIGURATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+83;
    598     int PEEK_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+84;
    599     int PROFILE_CONTROL_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+85;
    600     int SHUTDOWN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+86;
    601     int STOP_APP_SWITCHES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+87;
    602     int RESUME_APP_SWITCHES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+88;
    603     int START_BACKUP_AGENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+89;
    604     int BACKUP_AGENT_CREATED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+90;
    605     int UNBIND_BACKUP_AGENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+91;
    606     int GET_UID_FOR_INTENT_SENDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+92;
    607     int HANDLE_INCOMING_USER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+93;
    608     int GET_TASK_TOP_THUMBNAIL_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+94;
    609     int KILL_APPLICATION_WITH_APPID_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+95;
    610     int CLOSE_SYSTEM_DIALOGS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+96;
    611     int GET_PROCESS_MEMORY_INFO_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+97;
    612     int KILL_APPLICATION_PROCESS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+98;
    613     int START_ACTIVITY_INTENT_SENDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+99;
    614     int OVERRIDE_PENDING_TRANSITION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+100;
    615     int HANDLE_APPLICATION_WTF_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+101;
    616     int KILL_BACKGROUND_PROCESSES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+102;
    617     int IS_USER_A_MONKEY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+103;
    618     int START_ACTIVITY_AND_WAIT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+104;
    619     int WILL_ACTIVITY_BE_VISIBLE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+105;
    620     int START_ACTIVITY_WITH_CONFIG_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+106;
    621     int GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+107;
    622     int FINISH_HEAVY_WEIGHT_APP_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+108;
    623     int HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+109;
    624     int IS_IMMERSIVE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+110;
    625     int SET_IMMERSIVE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+111;
    626     int IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+112;
    627     int CRASH_APPLICATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+113;
    628     int GET_PROVIDER_MIME_TYPE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+114;
    629     int NEW_URI_PERMISSION_OWNER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+115;
    630     int GRANT_URI_PERMISSION_FROM_OWNER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+116;
    631     int REVOKE_URI_PERMISSION_FROM_OWNER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+117;
    632     int CHECK_GRANT_URI_PERMISSION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+118;
    633     int DUMP_HEAP_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+119;
    634     int START_ACTIVITIES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+120;
    635     int IS_USER_RUNNING_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+121;
    636     int ACTIVITY_SLEPT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+122;
    637     int GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+123;
    638     int SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+124;
    639     int GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+125;
    640     int SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+126;
    641     int GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+127;
    642     int SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+128;
    643     int SWITCH_USER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+129;
    644     int REMOVE_SUB_TASK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+130;
    645     int REMOVE_TASK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+131;
    646     int REGISTER_PROCESS_OBSERVER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+132;
    647     int UNREGISTER_PROCESS_OBSERVER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+133;
    648     int IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+134;
    649     int UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+135;
    650     int GET_PROCESS_PSS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+136;
    651     int SHOW_BOOT_MESSAGE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+137;
    652     int DISMISS_KEYGUARD_ON_NEXT_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+138;
    653     int KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+139;
    654     int GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+140;
    655     int REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+141;
    656     int GET_MY_MEMORY_STATE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+142;
    657     int KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+143;
    658     int GET_CURRENT_USER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+144;
    659     int TARGET_TASK_AFFINITY_MATCHES_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+145;
    660     int NAVIGATE_UP_TO_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+146;
    661     int SET_LOCK_SCREEN_SHOWN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+147;
    662     int FINISH_ACTIVITY_AFFINITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+148;
    663     int GET_LAUNCHED_FROM_UID_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+149;
    664     int UNSTABLE_PROVIDER_DIED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+150;
    665     int IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+151;
    666     int START_ACTIVITY_AS_USER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+152;
    667     int STOP_USER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+153;
    668     int REGISTER_USER_SWITCH_OBSERVER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+154;
    669     int UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+155;
    670     int GET_RUNNING_USER_IDS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+156;
    671     int REQUEST_BUG_REPORT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+157;
    672     int INPUT_DISPATCHING_TIMED_OUT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+158;
    673     int CLEAR_PENDING_BACKUP_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+159;
    674     int GET_INTENT_FOR_INTENT_SENDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+160;
    675     int GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+161;
    676     int REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+162;
    677     int GET_LAUNCHED_FROM_PACKAGE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+163;
    678     int KILL_UID_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+164;
    679     int SET_USER_IS_MONKEY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+165;
    680     int HANG_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+166;
    681     int CREATE_STACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+167;
    682     int MOVE_TASK_TO_STACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+168;
    683     int RESIZE_STACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+169;
    684     int GET_STACK_BOXES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+170;
    685     int SET_FOCUSED_STACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+171;
    686     int GET_STACK_BOX_INFO_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+172;
    687     int CONVERT_FROM_TRANSLUCENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+173;
    688     int CONVERT_TO_TRANSLUCENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+174;
    689     int NOTIFY_ACTIVITY_DRAWN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+175;
    690     int REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+176;
    691     int RESTART_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+177;
    692     int PERFORM_IDLE_MAINTENANCE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+178;
    693     int TAKE_PERSISTABLE_URI_PERMISSION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+179;
    694     int RELEASE_PERSISTABLE_URI_PERMISSION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+180;
    695     int GET_PERSISTED_URI_PERMISSIONS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+181;
    696     int APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+182;
    697 }
    698