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.content.ComponentName;
20 import android.content.Intent;
21 import android.content.IIntentReceiver;
22 import android.content.pm.ActivityInfo;
23 import android.content.pm.ApplicationInfo;
24 import android.content.pm.ProviderInfo;
25 import android.content.pm.ServiceInfo;
26 import android.content.res.CompatibilityInfo;
27 import android.content.res.Configuration;
28 import android.net.Uri;
29 import android.os.Bundle;
30 import android.os.Debug;
31 import android.os.ParcelFileDescriptor;
32 import android.os.PersistableBundle;
33 import android.os.RemoteException;
34 import android.os.IBinder;
35 import android.os.IInterface;
36 import com.android.internal.app.IVoiceInteractor;
37 import com.android.internal.content.ReferrerIntent;
38 
39 import java.io.FileDescriptor;
40 import java.util.List;
41 import java.util.Map;
42 
43 /**
44  * System private API for communicating with the application.  This is given to
45  * the activity manager by an application  when it starts up, for the activity
46  * manager to tell the application about things it needs to do.
47  *
48  * {@hide}
49  */
50 public interface IApplicationThread extends IInterface {
schedulePauseActivity(IBinder token, boolean finished, boolean userLeaving, int configChanges, boolean dontReport)51     void schedulePauseActivity(IBinder token, boolean finished, boolean userLeaving,
52             int configChanges, boolean dontReport) throws RemoteException;
scheduleStopActivity(IBinder token, boolean showWindow, int configChanges)53     void scheduleStopActivity(IBinder token, boolean showWindow,
54             int configChanges) throws RemoteException;
scheduleWindowVisibility(IBinder token, boolean showWindow)55     void scheduleWindowVisibility(IBinder token, boolean showWindow) throws RemoteException;
scheduleSleeping(IBinder token, boolean sleeping)56     void scheduleSleeping(IBinder token, boolean sleeping) throws RemoteException;
scheduleResumeActivity(IBinder token, int procState, boolean isForward, Bundle resumeArgs)57     void scheduleResumeActivity(IBinder token, int procState, boolean isForward, Bundle resumeArgs)
58             throws RemoteException;
scheduleSendResult(IBinder token, List<ResultInfo> results)59     void scheduleSendResult(IBinder token, List<ResultInfo> results) throws RemoteException;
scheduleLaunchActivity(Intent intent, IBinder token, int ident, ActivityInfo info, Configuration curConfig, Configuration overrideConfig, CompatibilityInfo compatInfo, String referrer, IVoiceInteractor voiceInteractor, int procState, Bundle state, PersistableBundle persistentState, List<ResultInfo> pendingResults, List<ReferrerIntent> pendingNewIntents, boolean notResumed, boolean isForward, ProfilerInfo profilerInfo)60     void scheduleLaunchActivity(Intent intent, IBinder token, int ident,
61             ActivityInfo info, Configuration curConfig, Configuration overrideConfig,
62             CompatibilityInfo compatInfo, String referrer, IVoiceInteractor voiceInteractor,
63             int procState, Bundle state, PersistableBundle persistentState,
64             List<ResultInfo> pendingResults, List<ReferrerIntent> pendingNewIntents,
65             boolean notResumed, boolean isForward, ProfilerInfo profilerInfo) throws RemoteException;
scheduleRelaunchActivity(IBinder token, List<ResultInfo> pendingResults, List<ReferrerIntent> pendingNewIntents, int configChanges, boolean notResumed, Configuration config, Configuration overrideConfig)66     void scheduleRelaunchActivity(IBinder token, List<ResultInfo> pendingResults,
67             List<ReferrerIntent> pendingNewIntents, int configChanges, boolean notResumed,
68             Configuration config, Configuration overrideConfig) throws RemoteException;
scheduleNewIntent(List<ReferrerIntent> intent, IBinder token)69     void scheduleNewIntent(List<ReferrerIntent> intent, IBinder token) throws RemoteException;
scheduleDestroyActivity(IBinder token, boolean finished, int configChanges)70     void scheduleDestroyActivity(IBinder token, boolean finished,
71             int configChanges) throws RemoteException;
scheduleReceiver(Intent intent, ActivityInfo info, CompatibilityInfo compatInfo, int resultCode, String data, Bundle extras, boolean sync, int sendingUser, int processState)72     void scheduleReceiver(Intent intent, ActivityInfo info, CompatibilityInfo compatInfo,
73             int resultCode, String data, Bundle extras, boolean sync,
74             int sendingUser, int processState) throws RemoteException;
75     static final int BACKUP_MODE_INCREMENTAL = 0;
76     static final int BACKUP_MODE_FULL = 1;
77     static final int BACKUP_MODE_RESTORE = 2;
78     static final int BACKUP_MODE_RESTORE_FULL = 3;
scheduleCreateBackupAgent(ApplicationInfo app, CompatibilityInfo compatInfo, int backupMode)79     void scheduleCreateBackupAgent(ApplicationInfo app, CompatibilityInfo compatInfo,
80             int backupMode) throws RemoteException;
scheduleDestroyBackupAgent(ApplicationInfo app, CompatibilityInfo compatInfo)81     void scheduleDestroyBackupAgent(ApplicationInfo app, CompatibilityInfo compatInfo)
82             throws RemoteException;
scheduleCreateService(IBinder token, ServiceInfo info, CompatibilityInfo compatInfo, int processState)83     void scheduleCreateService(IBinder token, ServiceInfo info,
84             CompatibilityInfo compatInfo, int processState) throws RemoteException;
scheduleBindService(IBinder token, Intent intent, boolean rebind, int processState)85     void scheduleBindService(IBinder token,
86             Intent intent, boolean rebind, int processState) throws RemoteException;
scheduleUnbindService(IBinder token, Intent intent)87     void scheduleUnbindService(IBinder token,
88             Intent intent) throws RemoteException;
scheduleServiceArgs(IBinder token, boolean taskRemoved, int startId, int flags, Intent args)89     void scheduleServiceArgs(IBinder token, boolean taskRemoved, int startId,
90             int flags, Intent args) throws RemoteException;
scheduleStopService(IBinder token)91     void scheduleStopService(IBinder token) throws RemoteException;
92     static final int DEBUG_OFF = 0;
93     static final int DEBUG_ON = 1;
94     static final int DEBUG_WAIT = 2;
bindApplication(String packageName, ApplicationInfo info, List<ProviderInfo> providers, ComponentName testName, ProfilerInfo profilerInfo, Bundle testArguments, IInstrumentationWatcher testWatcher, IUiAutomationConnection uiAutomationConnection, int debugMode, boolean openGlTrace, boolean restrictedBackupMode, boolean persistent, Configuration config, CompatibilityInfo compatInfo, Map<String, IBinder> services, Bundle coreSettings)95     void bindApplication(String packageName, ApplicationInfo info, List<ProviderInfo> providers,
96             ComponentName testName, ProfilerInfo profilerInfo, Bundle testArguments,
97             IInstrumentationWatcher testWatcher, IUiAutomationConnection uiAutomationConnection,
98             int debugMode, boolean openGlTrace, boolean restrictedBackupMode, boolean persistent,
99             Configuration config, CompatibilityInfo compatInfo, Map<String, IBinder> services,
100             Bundle coreSettings) throws RemoteException;
scheduleExit()101     void scheduleExit() throws RemoteException;
scheduleSuicide()102     void scheduleSuicide() throws RemoteException;
scheduleConfigurationChanged(Configuration config)103     void scheduleConfigurationChanged(Configuration config) throws RemoteException;
updateTimeZone()104     void updateTimeZone() throws RemoteException;
clearDnsCache()105     void clearDnsCache() throws RemoteException;
setHttpProxy(String proxy, String port, String exclList, Uri pacFileUrl)106     void setHttpProxy(String proxy, String port, String exclList,
107             Uri pacFileUrl) throws RemoteException;
processInBackground()108     void processInBackground() throws RemoteException;
dumpService(FileDescriptor fd, IBinder servicetoken, String[] args)109     void dumpService(FileDescriptor fd, IBinder servicetoken, String[] args)
110             throws RemoteException;
dumpProvider(FileDescriptor fd, IBinder servicetoken, String[] args)111     void dumpProvider(FileDescriptor fd, IBinder servicetoken, String[] args)
112             throws RemoteException;
scheduleRegisteredReceiver(IIntentReceiver receiver, Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser, int processState)113     void scheduleRegisteredReceiver(IIntentReceiver receiver, Intent intent,
114             int resultCode, String data, Bundle extras, boolean ordered,
115             boolean sticky, int sendingUser, int processState) throws RemoteException;
scheduleLowMemory()116     void scheduleLowMemory() throws RemoteException;
scheduleActivityConfigurationChanged(IBinder token, Configuration overrideConfig)117     void scheduleActivityConfigurationChanged(IBinder token, Configuration overrideConfig)
118             throws RemoteException;
profilerControl(boolean start, ProfilerInfo profilerInfo, int profileType)119     void profilerControl(boolean start, ProfilerInfo profilerInfo, int profileType)
120             throws RemoteException;
dumpHeap(boolean managed, String path, ParcelFileDescriptor fd)121     void dumpHeap(boolean managed, String path, ParcelFileDescriptor fd)
122             throws RemoteException;
setSchedulingGroup(int group)123     void setSchedulingGroup(int group) throws RemoteException;
124     static final int PACKAGE_REMOVED = 0;
125     static final int EXTERNAL_STORAGE_UNAVAILABLE = 1;
dispatchPackageBroadcast(int cmd, String[] packages)126     void dispatchPackageBroadcast(int cmd, String[] packages) throws RemoteException;
scheduleCrash(String msg)127     void scheduleCrash(String msg) throws RemoteException;
dumpActivity(FileDescriptor fd, IBinder servicetoken, String prefix, String[] args)128     void dumpActivity(FileDescriptor fd, IBinder servicetoken, String prefix, String[] args)
129             throws RemoteException;
setCoreSettings(Bundle coreSettings)130     void setCoreSettings(Bundle coreSettings) throws RemoteException;
updatePackageCompatibilityInfo(String pkg, CompatibilityInfo info)131     void updatePackageCompatibilityInfo(String pkg, CompatibilityInfo info) throws RemoteException;
scheduleTrimMemory(int level)132     void scheduleTrimMemory(int level) throws RemoteException;
dumpMemInfo(FileDescriptor fd, Debug.MemoryInfo mem, boolean checkin, boolean dumpInfo, boolean dumpDalvik, boolean dumpSummaryOnly, String[] args)133     void dumpMemInfo(FileDescriptor fd, Debug.MemoryInfo mem, boolean checkin, boolean dumpInfo,
134             boolean dumpDalvik, boolean dumpSummaryOnly, String[] args) throws RemoteException;
dumpGfxInfo(FileDescriptor fd, String[] args)135     void dumpGfxInfo(FileDescriptor fd, String[] args) throws RemoteException;
dumpDbInfo(FileDescriptor fd, String[] args)136     void dumpDbInfo(FileDescriptor fd, String[] args) throws RemoteException;
unstableProviderDied(IBinder provider)137     void unstableProviderDied(IBinder provider) throws RemoteException;
requestAssistContextExtras(IBinder activityToken, IBinder requestToken, int requestType)138     void requestAssistContextExtras(IBinder activityToken, IBinder requestToken, int requestType)
139             throws RemoteException;
scheduleTranslucentConversionComplete(IBinder token, boolean timeout)140     void scheduleTranslucentConversionComplete(IBinder token, boolean timeout)
141             throws RemoteException;
scheduleOnNewActivityOptions(IBinder token, ActivityOptions options)142     void scheduleOnNewActivityOptions(IBinder token, ActivityOptions options)
143             throws RemoteException;
setProcessState(int state)144     void setProcessState(int state) throws RemoteException;
scheduleInstallProvider(ProviderInfo provider)145     void scheduleInstallProvider(ProviderInfo provider) throws RemoteException;
updateTimePrefs(boolean is24Hour)146     void updateTimePrefs(boolean is24Hour) throws RemoteException;
scheduleCancelVisibleBehind(IBinder token)147     void scheduleCancelVisibleBehind(IBinder token) throws RemoteException;
scheduleBackgroundVisibleBehindChanged(IBinder token, boolean enabled)148     void scheduleBackgroundVisibleBehindChanged(IBinder token, boolean enabled) throws RemoteException;
scheduleEnterAnimationComplete(IBinder token)149     void scheduleEnterAnimationComplete(IBinder token) throws RemoteException;
notifyCleartextNetwork(byte[] firstPacket)150     void notifyCleartextNetwork(byte[] firstPacket) throws RemoteException;
151 
152     String descriptor = "android.app.IApplicationThread";
153 
154     int SCHEDULE_PAUSE_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION;
155     int SCHEDULE_STOP_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+2;
156     int SCHEDULE_WINDOW_VISIBILITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+3;
157     int SCHEDULE_RESUME_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+4;
158     int SCHEDULE_SEND_RESULT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+5;
159     int SCHEDULE_LAUNCH_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+6;
160     int SCHEDULE_NEW_INTENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+7;
161     int SCHEDULE_FINISH_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+8;
162     int SCHEDULE_RECEIVER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+9;
163     int SCHEDULE_CREATE_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+10;
164     int SCHEDULE_STOP_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+11;
165     int BIND_APPLICATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+12;
166     int SCHEDULE_EXIT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+13;
167 
168     int SCHEDULE_CONFIGURATION_CHANGED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+15;
169     int SCHEDULE_SERVICE_ARGS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+16;
170     int UPDATE_TIME_ZONE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+17;
171     int PROCESS_IN_BACKGROUND_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+18;
172     int SCHEDULE_BIND_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+19;
173     int SCHEDULE_UNBIND_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+20;
174     int DUMP_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+21;
175     int SCHEDULE_REGISTERED_RECEIVER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+22;
176     int SCHEDULE_LOW_MEMORY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+23;
177     int SCHEDULE_ACTIVITY_CONFIGURATION_CHANGED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+24;
178     int SCHEDULE_RELAUNCH_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+25;
179     int SCHEDULE_SLEEPING_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+26;
180     int PROFILER_CONTROL_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+27;
181     int SET_SCHEDULING_GROUP_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+28;
182     int SCHEDULE_CREATE_BACKUP_AGENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+29;
183     int SCHEDULE_DESTROY_BACKUP_AGENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+30;
184     int SCHEDULE_ON_NEW_ACTIVITY_OPTIONS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+31;
185     int SCHEDULE_SUICIDE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+32;
186     int DISPATCH_PACKAGE_BROADCAST_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+33;
187     int SCHEDULE_CRASH_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+34;
188     int DUMP_HEAP_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+35;
189     int DUMP_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+36;
190     int CLEAR_DNS_CACHE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+37;
191     int SET_HTTP_PROXY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+38;
192     int SET_CORE_SETTINGS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+39;
193     int UPDATE_PACKAGE_COMPATIBILITY_INFO_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+40;
194     int SCHEDULE_TRIM_MEMORY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+41;
195     int DUMP_MEM_INFO_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+42;
196     int DUMP_GFX_INFO_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+43;
197     int DUMP_PROVIDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+44;
198     int DUMP_DB_INFO_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+45;
199     int UNSTABLE_PROVIDER_DIED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+46;
200     int REQUEST_ASSIST_CONTEXT_EXTRAS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+47;
201     int SCHEDULE_TRANSLUCENT_CONVERSION_COMPLETE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+48;
202     int SET_PROCESS_STATE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+49;
203     int SCHEDULE_INSTALL_PROVIDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+50;
204     int UPDATE_TIME_PREFS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+51;
205     int CANCEL_VISIBLE_BEHIND_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+52;
206     int BACKGROUND_VISIBLE_BEHIND_CHANGED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+53;
207     int ENTER_ANIMATION_COMPLETE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+54;
208     int NOTIFY_CLEARTEXT_NETWORK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+55;
209 }
210