blob: b1c37de8ca2b0e4d9bb7122d51910b370b2ed690 [file] [log] [blame]
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001/*
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
17package android.app;
18
Craig Mautnerbdc748af2013-12-02 14:08:25 -080019import android.app.ActivityManager.StackInfo;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080020import android.content.ComponentName;
Adam Powelldd8fab22012-03-22 17:47:27 -070021import android.content.IIntentReceiver;
22import android.content.IIntentSender;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080023import android.content.Intent;
24import android.content.IntentFilter;
Dianne Hackbornfa82f222009-09-17 15:14:12 -070025import android.content.IntentSender;
Jeff Sharkeye66c1772013-09-20 14:30:59 -070026import android.content.UriPermission;
Christopher Tate181fafa2009-05-14 11:12:14 -070027import android.content.pm.ApplicationInfo;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080028import android.content.pm.ConfigurationInfo;
29import android.content.pm.IPackageDataObserver;
Jeff Sharkeye66c1772013-09-20 14:30:59 -070030import android.content.pm.ParceledListSlice;
Amith Yamasani52f1d752012-03-28 18:19:29 -070031import android.content.pm.UserInfo;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080032import android.content.res.Configuration;
33import android.graphics.Bitmap;
Craig Mautnerbdc748af2013-12-02 14:08:25 -080034import android.graphics.Rect;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080035import android.net.Uri;
36import android.os.Binder;
37import android.os.Bundle;
Dianne Hackborn3025ef32009-08-31 21:31:47 -070038import android.os.Debug;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080039import android.os.IBinder;
40import android.os.Parcel;
Adam Powelldd8fab22012-03-22 17:47:27 -070041import android.os.ParcelFileDescriptor;
42import android.os.Parcelable;
43import android.os.RemoteException;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080044import android.os.ServiceManager;
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -070045import android.os.StrictMode;
Dianne Hackborn91097de2014-04-04 18:02:06 -070046import android.service.voice.IVoiceInteractionSession;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080047import android.text.TextUtils;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080048import android.util.Log;
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080049import android.util.Singleton;
Dianne Hackborn91097de2014-04-04 18:02:06 -070050import com.android.internal.app.IVoiceInteractor;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080051
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080052import java.util.ArrayList;
53import java.util.List;
54
55/** {@hide} */
56public abstract class ActivityManagerNative extends Binder implements IActivityManager
57{
58 /**
59 * Cast a Binder object into an activity manager interface, generating
60 * a proxy if needed.
61 */
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080062 static public IActivityManager asInterface(IBinder obj) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080063 if (obj == null) {
64 return null;
65 }
66 IActivityManager in =
67 (IActivityManager)obj.queryLocalInterface(descriptor);
68 if (in != null) {
69 return in;
70 }
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080071
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080072 return new ActivityManagerProxy(obj);
73 }
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080074
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080075 /**
76 * Retrieve the system's default/global activity manager.
77 */
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080078 static public IActivityManager getDefault() {
79 return gDefault.get();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080080 }
81
82 /**
83 * Convenience for checking whether the system is ready. For internal use only.
84 */
85 static public boolean isSystemReady() {
86 if (!sSystemReady) {
87 sSystemReady = getDefault().testIsSystemReady();
88 }
89 return sSystemReady;
90 }
91 static boolean sSystemReady = false;
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080092
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080093 /**
94 * Convenience for sending a sticky broadcast. For internal use only.
95 * If you don't care about permission, use null.
96 */
Dianne Hackborn5ac72a22012-08-29 18:32:08 -070097 static public void broadcastStickyIntent(Intent intent, String permission, int userId) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080098 try {
99 getDefault().broadcastIntent(
100 null, intent, null, null, Activity.RESULT_OK, null, null,
Dianne Hackbornf51f6122013-02-04 18:23:34 -0800101 null /*permission*/, AppOpsManager.OP_NONE, false, true, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800102 } catch (RemoteException ex) {
103 }
104 }
105
Dianne Hackborn099bc622014-01-22 13:39:16 -0800106 static public void noteWakeupAlarm(PendingIntent ps, int sourceUid, String sourcePkg) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800107 try {
Dianne Hackborn099bc622014-01-22 13:39:16 -0800108 getDefault().noteWakeupAlarm(ps.getTarget(), sourceUid, sourcePkg);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800109 } catch (RemoteException ex) {
110 }
111 }
112
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -0800113 public ActivityManagerNative() {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800114 attachInterface(this, descriptor);
115 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700116
117 @Override
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800118 public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
119 throws RemoteException {
120 switch (code) {
121 case START_ACTIVITY_TRANSACTION:
122 {
123 data.enforceInterface(IActivityManager.descriptor);
124 IBinder b = data.readStrongBinder();
125 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800126 String callingPackage = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800127 Intent intent = Intent.CREATOR.createFromParcel(data);
128 String resolvedType = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800129 IBinder resultTo = data.readStrongBinder();
Siva Velusamy92a8b222012-03-09 16:24:04 -0800130 String resultWho = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800131 int requestCode = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700132 int startFlags = data.readInt();
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700133 String profileFile = data.readString();
134 ParcelFileDescriptor profileFd = data.readInt() != 0
135 ? data.readFileDescriptor() : null;
Dianne Hackborna4972e92012-03-14 10:38:05 -0700136 Bundle options = data.readInt() != 0
137 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800138 int result = startActivity(app, callingPackage, intent, resolvedType,
Dianne Hackborna4972e92012-03-14 10:38:05 -0700139 resultTo, resultWho, requestCode, startFlags,
140 profileFile, profileFd, options);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800141 reply.writeNoException();
142 reply.writeInt(result);
143 return true;
144 }
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700145
Amith Yamasani82644082012-08-03 13:09:11 -0700146 case START_ACTIVITY_AS_USER_TRANSACTION:
147 {
148 data.enforceInterface(IActivityManager.descriptor);
149 IBinder b = data.readStrongBinder();
150 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800151 String callingPackage = data.readString();
Amith Yamasani82644082012-08-03 13:09:11 -0700152 Intent intent = Intent.CREATOR.createFromParcel(data);
153 String resolvedType = data.readString();
154 IBinder resultTo = data.readStrongBinder();
155 String resultWho = data.readString();
156 int requestCode = data.readInt();
157 int startFlags = data.readInt();
158 String profileFile = data.readString();
159 ParcelFileDescriptor profileFd = data.readInt() != 0
Amith Yamasanic2be0d62013-09-23 11:16:28 -0700160 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null;
Amith Yamasani82644082012-08-03 13:09:11 -0700161 Bundle options = data.readInt() != 0
162 ? Bundle.CREATOR.createFromParcel(data) : null;
163 int userId = data.readInt();
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800164 int result = startActivityAsUser(app, callingPackage, intent, resolvedType,
Amith Yamasani82644082012-08-03 13:09:11 -0700165 resultTo, resultWho, requestCode, startFlags,
166 profileFile, profileFd, options, userId);
167 reply.writeNoException();
168 reply.writeInt(result);
169 return true;
170 }
171
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800172 case START_ACTIVITY_AND_WAIT_TRANSACTION:
173 {
174 data.enforceInterface(IActivityManager.descriptor);
175 IBinder b = data.readStrongBinder();
176 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800177 String callingPackage = data.readString();
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800178 Intent intent = Intent.CREATOR.createFromParcel(data);
179 String resolvedType = data.readString();
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800180 IBinder resultTo = data.readStrongBinder();
Siva Velusamy92a8b222012-03-09 16:24:04 -0800181 String resultWho = data.readString();
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800182 int requestCode = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700183 int startFlags = data.readInt();
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700184 String profileFile = data.readString();
185 ParcelFileDescriptor profileFd = data.readInt() != 0
Amith Yamasanic2be0d62013-09-23 11:16:28 -0700186 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null;
Dianne Hackborna4972e92012-03-14 10:38:05 -0700187 Bundle options = data.readInt() != 0
188 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -0700189 int userId = data.readInt();
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800190 WaitResult result = startActivityAndWait(app, callingPackage, intent, resolvedType,
Dianne Hackborna4972e92012-03-14 10:38:05 -0700191 resultTo, resultWho, requestCode, startFlags,
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -0700192 profileFile, profileFd, options, userId);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800193 reply.writeNoException();
194 result.writeToParcel(reply, 0);
195 return true;
196 }
197
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700198 case START_ACTIVITY_WITH_CONFIG_TRANSACTION:
199 {
200 data.enforceInterface(IActivityManager.descriptor);
201 IBinder b = data.readStrongBinder();
202 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800203 String callingPackage = data.readString();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700204 Intent intent = Intent.CREATOR.createFromParcel(data);
205 String resolvedType = data.readString();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700206 IBinder resultTo = data.readStrongBinder();
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700207 String resultWho = data.readString();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700208 int requestCode = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700209 int startFlags = data.readInt();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700210 Configuration config = Configuration.CREATOR.createFromParcel(data);
Dianne Hackborna4972e92012-03-14 10:38:05 -0700211 Bundle options = data.readInt() != 0
212 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackborn41203752012-08-31 14:05:51 -0700213 int userId = data.readInt();
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800214 int result = startActivityWithConfig(app, callingPackage, intent, resolvedType,
Dianne Hackborn41203752012-08-31 14:05:51 -0700215 resultTo, resultWho, requestCode, startFlags, config, options, userId);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700216 reply.writeNoException();
217 reply.writeInt(result);
218 return true;
219 }
220
Dianne Hackbornfa82f222009-09-17 15:14:12 -0700221 case START_ACTIVITY_INTENT_SENDER_TRANSACTION:
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700222 {
223 data.enforceInterface(IActivityManager.descriptor);
224 IBinder b = data.readStrongBinder();
225 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornfa82f222009-09-17 15:14:12 -0700226 IntentSender intent = IntentSender.CREATOR.createFromParcel(data);
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700227 Intent fillInIntent = null;
228 if (data.readInt() != 0) {
229 fillInIntent = Intent.CREATOR.createFromParcel(data);
230 }
231 String resolvedType = data.readString();
232 IBinder resultTo = data.readStrongBinder();
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700233 String resultWho = data.readString();
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700234 int requestCode = data.readInt();
235 int flagsMask = data.readInt();
236 int flagsValues = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700237 Bundle options = data.readInt() != 0
238 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackbornfa82f222009-09-17 15:14:12 -0700239 int result = startActivityIntentSender(app, intent,
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700240 fillInIntent, resolvedType, resultTo, resultWho,
Dianne Hackborna4972e92012-03-14 10:38:05 -0700241 requestCode, flagsMask, flagsValues, options);
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700242 reply.writeNoException();
243 reply.writeInt(result);
244 return true;
245 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700246
Dianne Hackborn91097de2014-04-04 18:02:06 -0700247 case START_VOICE_ACTIVITY_TRANSACTION:
248 {
249 data.enforceInterface(IActivityManager.descriptor);
250 String callingPackage = data.readString();
251 int callingPid = data.readInt();
252 int callingUid = data.readInt();
253 Intent intent = Intent.CREATOR.createFromParcel(data);
254 String resolvedType = data.readString();
255 IVoiceInteractionSession session = IVoiceInteractionSession.Stub.asInterface(
256 data.readStrongBinder());
257 IVoiceInteractor interactor = IVoiceInteractor.Stub.asInterface(
258 data.readStrongBinder());
259 int startFlags = data.readInt();
260 String profileFile = data.readString();
261 ParcelFileDescriptor profileFd = data.readInt() != 0
262 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null;
263 Bundle options = data.readInt() != 0
264 ? Bundle.CREATOR.createFromParcel(data) : null;
265 int userId = data.readInt();
266 int result = startVoiceActivity(callingPackage, callingPid, callingUid,
267 intent, resolvedType, session, interactor, startFlags,
268 profileFile, profileFd, options, userId);
269 reply.writeNoException();
270 reply.writeInt(result);
271 return true;
272 }
273
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800274 case START_NEXT_MATCHING_ACTIVITY_TRANSACTION:
275 {
276 data.enforceInterface(IActivityManager.descriptor);
277 IBinder callingActivity = data.readStrongBinder();
278 Intent intent = Intent.CREATOR.createFromParcel(data);
Dianne Hackborna4972e92012-03-14 10:38:05 -0700279 Bundle options = data.readInt() != 0
280 ? Bundle.CREATOR.createFromParcel(data) : null;
281 boolean result = startNextMatchingActivity(callingActivity, intent, options);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800282 reply.writeNoException();
283 reply.writeInt(result ? 1 : 0);
284 return true;
285 }
Dianne Hackbornecc5a9c2012-04-26 18:56:09 -0700286
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800287 case FINISH_ACTIVITY_TRANSACTION: {
288 data.enforceInterface(IActivityManager.descriptor);
289 IBinder token = data.readStrongBinder();
290 Intent resultData = null;
291 int resultCode = data.readInt();
292 if (data.readInt() != 0) {
293 resultData = Intent.CREATOR.createFromParcel(data);
294 }
Winson Chung3b3f4642014-04-22 10:08:18 -0700295 boolean finishTask = (data.readInt() != 0);
296 boolean res = finishActivity(token, resultCode, resultData, finishTask);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800297 reply.writeNoException();
298 reply.writeInt(res ? 1 : 0);
299 return true;
300 }
301
302 case FINISH_SUB_ACTIVITY_TRANSACTION: {
303 data.enforceInterface(IActivityManager.descriptor);
304 IBinder token = data.readStrongBinder();
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700305 String resultWho = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800306 int requestCode = data.readInt();
307 finishSubActivity(token, resultWho, requestCode);
308 reply.writeNoException();
309 return true;
310 }
311
Dianne Hackbornecc5a9c2012-04-26 18:56:09 -0700312 case FINISH_ACTIVITY_AFFINITY_TRANSACTION: {
313 data.enforceInterface(IActivityManager.descriptor);
314 IBinder token = data.readStrongBinder();
315 boolean res = finishActivityAffinity(token);
316 reply.writeNoException();
317 reply.writeInt(res ? 1 : 0);
318 return true;
319 }
320
Dianne Hackborn061d58a2010-03-12 15:07:06 -0800321 case WILL_ACTIVITY_BE_VISIBLE_TRANSACTION: {
322 data.enforceInterface(IActivityManager.descriptor);
323 IBinder token = data.readStrongBinder();
324 boolean res = willActivityBeVisible(token);
325 reply.writeNoException();
326 reply.writeInt(res ? 1 : 0);
327 return true;
328 }
329
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800330 case REGISTER_RECEIVER_TRANSACTION:
331 {
332 data.enforceInterface(IActivityManager.descriptor);
333 IBinder b = data.readStrongBinder();
334 IApplicationThread app =
335 b != null ? ApplicationThreadNative.asInterface(b) : null;
Dianne Hackborn6c418d52011-06-29 14:05:33 -0700336 String packageName = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800337 b = data.readStrongBinder();
338 IIntentReceiver rec
339 = b != null ? IIntentReceiver.Stub.asInterface(b) : null;
340 IntentFilter filter = IntentFilter.CREATOR.createFromParcel(data);
341 String perm = data.readString();
Dianne Hackborn20e80982012-08-31 19:00:44 -0700342 int userId = data.readInt();
343 Intent intent = registerReceiver(app, packageName, rec, filter, perm, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800344 reply.writeNoException();
345 if (intent != null) {
346 reply.writeInt(1);
347 intent.writeToParcel(reply, 0);
348 } else {
349 reply.writeInt(0);
350 }
351 return true;
352 }
353
354 case UNREGISTER_RECEIVER_TRANSACTION:
355 {
356 data.enforceInterface(IActivityManager.descriptor);
357 IBinder b = data.readStrongBinder();
358 if (b == null) {
359 return true;
360 }
361 IIntentReceiver rec = IIntentReceiver.Stub.asInterface(b);
362 unregisterReceiver(rec);
363 reply.writeNoException();
364 return true;
365 }
366
367 case BROADCAST_INTENT_TRANSACTION:
368 {
369 data.enforceInterface(IActivityManager.descriptor);
370 IBinder b = data.readStrongBinder();
371 IApplicationThread app =
372 b != null ? ApplicationThreadNative.asInterface(b) : null;
373 Intent intent = Intent.CREATOR.createFromParcel(data);
374 String resolvedType = data.readString();
375 b = data.readStrongBinder();
376 IIntentReceiver resultTo =
377 b != null ? IIntentReceiver.Stub.asInterface(b) : null;
378 int resultCode = data.readInt();
379 String resultData = data.readString();
380 Bundle resultExtras = data.readBundle();
381 String perm = data.readString();
Dianne Hackbornf51f6122013-02-04 18:23:34 -0800382 int appOp = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800383 boolean serialized = data.readInt() != 0;
384 boolean sticky = data.readInt() != 0;
Amith Yamasani742a6712011-05-04 14:49:28 -0700385 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800386 int res = broadcastIntent(app, intent, resolvedType, resultTo,
Dianne Hackbornf51f6122013-02-04 18:23:34 -0800387 resultCode, resultData, resultExtras, perm, appOp,
Amith Yamasani742a6712011-05-04 14:49:28 -0700388 serialized, sticky, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800389 reply.writeNoException();
390 reply.writeInt(res);
391 return true;
392 }
393
394 case UNBROADCAST_INTENT_TRANSACTION:
395 {
396 data.enforceInterface(IActivityManager.descriptor);
397 IBinder b = data.readStrongBinder();
398 IApplicationThread app = b != null ? ApplicationThreadNative.asInterface(b) : null;
399 Intent intent = Intent.CREATOR.createFromParcel(data);
Amith Yamasani742a6712011-05-04 14:49:28 -0700400 int userId = data.readInt();
401 unbroadcastIntent(app, intent, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800402 reply.writeNoException();
403 return true;
404 }
405
406 case FINISH_RECEIVER_TRANSACTION: {
407 data.enforceInterface(IActivityManager.descriptor);
408 IBinder who = data.readStrongBinder();
409 int resultCode = data.readInt();
410 String resultData = data.readString();
411 Bundle resultExtras = data.readBundle();
412 boolean resultAbort = data.readInt() != 0;
413 if (who != null) {
414 finishReceiver(who, resultCode, resultData, resultExtras, resultAbort);
415 }
416 reply.writeNoException();
417 return true;
418 }
419
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800420 case ATTACH_APPLICATION_TRANSACTION: {
421 data.enforceInterface(IActivityManager.descriptor);
422 IApplicationThread app = ApplicationThreadNative.asInterface(
423 data.readStrongBinder());
424 if (app != null) {
425 attachApplication(app);
426 }
427 reply.writeNoException();
428 return true;
429 }
430
431 case ACTIVITY_IDLE_TRANSACTION: {
432 data.enforceInterface(IActivityManager.descriptor);
433 IBinder token = data.readStrongBinder();
Dianne Hackborne88846e2009-09-30 21:34:25 -0700434 Configuration config = null;
435 if (data.readInt() != 0) {
436 config = Configuration.CREATOR.createFromParcel(data);
437 }
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700438 boolean stopProfiling = data.readInt() != 0;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800439 if (token != null) {
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700440 activityIdle(token, config, stopProfiling);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800441 }
442 reply.writeNoException();
443 return true;
444 }
445
Dianne Hackbornad9b32112012-09-17 15:35:01 -0700446 case ACTIVITY_RESUMED_TRANSACTION: {
447 data.enforceInterface(IActivityManager.descriptor);
448 IBinder token = data.readStrongBinder();
449 activityResumed(token);
450 reply.writeNoException();
451 return true;
452 }
453
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800454 case ACTIVITY_PAUSED_TRANSACTION: {
455 data.enforceInterface(IActivityManager.descriptor);
456 IBinder token = data.readStrongBinder();
Dianne Hackborn0aae2d42010-12-07 23:51:29 -0800457 activityPaused(token);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800458 reply.writeNoException();
459 return true;
460 }
461
462 case ACTIVITY_STOPPED_TRANSACTION: {
463 data.enforceInterface(IActivityManager.descriptor);
464 IBinder token = data.readStrongBinder();
Dianne Hackborn0aae2d42010-12-07 23:51:29 -0800465 Bundle map = data.readBundle();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800466 Bitmap thumbnail = data.readInt() != 0
467 ? Bitmap.CREATOR.createFromParcel(data) : null;
468 CharSequence description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data);
Dianne Hackborn0aae2d42010-12-07 23:51:29 -0800469 activityStopped(token, map, thumbnail, description);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800470 reply.writeNoException();
471 return true;
472 }
473
Dianne Hackborn4eba96b2011-01-21 13:34:36 -0800474 case ACTIVITY_SLEPT_TRANSACTION: {
475 data.enforceInterface(IActivityManager.descriptor);
476 IBinder token = data.readStrongBinder();
477 activitySlept(token);
478 reply.writeNoException();
479 return true;
480 }
481
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800482 case ACTIVITY_DESTROYED_TRANSACTION: {
483 data.enforceInterface(IActivityManager.descriptor);
484 IBinder token = data.readStrongBinder();
485 activityDestroyed(token);
486 reply.writeNoException();
487 return true;
488 }
489
490 case GET_CALLING_PACKAGE_TRANSACTION: {
491 data.enforceInterface(IActivityManager.descriptor);
492 IBinder token = data.readStrongBinder();
493 String res = token != null ? getCallingPackage(token) : null;
494 reply.writeNoException();
495 reply.writeString(res);
496 return true;
497 }
498
499 case GET_CALLING_ACTIVITY_TRANSACTION: {
500 data.enforceInterface(IActivityManager.descriptor);
501 IBinder token = data.readStrongBinder();
502 ComponentName cn = getCallingActivity(token);
503 reply.writeNoException();
504 ComponentName.writeToParcel(cn, reply);
505 return true;
506 }
507
508 case GET_TASKS_TRANSACTION: {
509 data.enforceInterface(IActivityManager.descriptor);
510 int maxNum = data.readInt();
511 int fl = data.readInt();
512 IBinder receiverBinder = data.readStrongBinder();
513 IThumbnailReceiver receiver = receiverBinder != null
514 ? IThumbnailReceiver.Stub.asInterface(receiverBinder)
515 : null;
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700516 List<ActivityManager.RunningTaskInfo> list = getTasks(maxNum, fl, receiver);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800517 reply.writeNoException();
518 int N = list != null ? list.size() : -1;
519 reply.writeInt(N);
520 int i;
521 for (i=0; i<N; i++) {
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700522 ActivityManager.RunningTaskInfo info = list.get(i);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800523 info.writeToParcel(reply, 0);
524 }
525 return true;
526 }
527
528 case GET_RECENT_TASKS_TRANSACTION: {
529 data.enforceInterface(IActivityManager.descriptor);
530 int maxNum = data.readInt();
531 int fl = data.readInt();
Amith Yamasani82644082012-08-03 13:09:11 -0700532 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800533 List<ActivityManager.RecentTaskInfo> list = getRecentTasks(maxNum,
Amith Yamasani82644082012-08-03 13:09:11 -0700534 fl, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800535 reply.writeNoException();
536 reply.writeTypedList(list);
537 return true;
538 }
Dianne Hackborn15491c62012-09-19 10:59:14 -0700539
Dianne Hackbornf26fd992011-04-08 18:14:09 -0700540 case GET_TASK_THUMBNAILS_TRANSACTION: {
Dianne Hackbornd94df452011-02-16 18:53:31 -0800541 data.enforceInterface(IActivityManager.descriptor);
542 int id = data.readInt();
Dianne Hackbornf26fd992011-04-08 18:14:09 -0700543 ActivityManager.TaskThumbnails bm = getTaskThumbnails(id);
Dianne Hackbornd94df452011-02-16 18:53:31 -0800544 reply.writeNoException();
545 if (bm != null) {
546 reply.writeInt(1);
547 bm.writeToParcel(reply, 0);
548 } else {
549 reply.writeInt(0);
550 }
551 return true;
552 }
Dianne Hackborn15491c62012-09-19 10:59:14 -0700553
554 case GET_TASK_TOP_THUMBNAIL_TRANSACTION: {
555 data.enforceInterface(IActivityManager.descriptor);
556 int id = data.readInt();
557 Bitmap bm = getTaskTopThumbnail(id);
558 reply.writeNoException();
559 if (bm != null) {
560 reply.writeInt(1);
561 bm.writeToParcel(reply, 0);
562 } else {
563 reply.writeInt(0);
564 }
565 return true;
566 }
567
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800568 case GET_SERVICES_TRANSACTION: {
569 data.enforceInterface(IActivityManager.descriptor);
570 int maxNum = data.readInt();
571 int fl = data.readInt();
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700572 List<ActivityManager.RunningServiceInfo> list = getServices(maxNum, fl);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800573 reply.writeNoException();
574 int N = list != null ? list.size() : -1;
575 reply.writeInt(N);
576 int i;
577 for (i=0; i<N; i++) {
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700578 ActivityManager.RunningServiceInfo info = list.get(i);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800579 info.writeToParcel(reply, 0);
580 }
581 return true;
582 }
583
584 case GET_PROCESSES_IN_ERROR_STATE_TRANSACTION: {
585 data.enforceInterface(IActivityManager.descriptor);
586 List<ActivityManager.ProcessErrorStateInfo> list = getProcessesInErrorState();
587 reply.writeNoException();
588 reply.writeTypedList(list);
589 return true;
590 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700591
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800592 case GET_RUNNING_APP_PROCESSES_TRANSACTION: {
593 data.enforceInterface(IActivityManager.descriptor);
594 List<ActivityManager.RunningAppProcessInfo> list = getRunningAppProcesses();
595 reply.writeNoException();
596 reply.writeTypedList(list);
597 return true;
598 }
599
Suchi Amalapurapuf7f5dda2010-03-23 10:34:28 -0700600 case GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION: {
601 data.enforceInterface(IActivityManager.descriptor);
602 List<ApplicationInfo> list = getRunningExternalApplications();
603 reply.writeNoException();
604 reply.writeTypedList(list);
605 return true;
606 }
607
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800608 case MOVE_TASK_TO_FRONT_TRANSACTION: {
609 data.enforceInterface(IActivityManager.descriptor);
610 int task = data.readInt();
Dianne Hackborn621e17d2010-11-22 15:59:56 -0800611 int fl = data.readInt();
Dianne Hackborn8078d8c2012-03-20 11:11:26 -0700612 Bundle options = data.readInt() != 0
613 ? Bundle.CREATOR.createFromParcel(data) : null;
614 moveTaskToFront(task, fl, options);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800615 reply.writeNoException();
616 return true;
617 }
618
619 case MOVE_TASK_TO_BACK_TRANSACTION: {
620 data.enforceInterface(IActivityManager.descriptor);
621 int task = data.readInt();
622 moveTaskToBack(task);
623 reply.writeNoException();
624 return true;
625 }
626
627 case MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION: {
628 data.enforceInterface(IActivityManager.descriptor);
629 IBinder token = data.readStrongBinder();
630 boolean nonRoot = data.readInt() != 0;
631 boolean res = moveActivityTaskToBack(token, nonRoot);
632 reply.writeNoException();
633 reply.writeInt(res ? 1 : 0);
634 return true;
635 }
636
637 case MOVE_TASK_BACKWARDS_TRANSACTION: {
638 data.enforceInterface(IActivityManager.descriptor);
639 int task = data.readInt();
640 moveTaskBackwards(task);
641 reply.writeNoException();
642 return true;
643 }
644
Craig Mautnerc00204b2013-03-05 15:02:14 -0800645 case MOVE_TASK_TO_STACK_TRANSACTION: {
646 data.enforceInterface(IActivityManager.descriptor);
647 int taskId = data.readInt();
648 int stackId = data.readInt();
649 boolean toTop = data.readInt() != 0;
650 moveTaskToStack(taskId, stackId, toTop);
651 reply.writeNoException();
652 return true;
653 }
654
655 case RESIZE_STACK_TRANSACTION: {
656 data.enforceInterface(IActivityManager.descriptor);
Craig Mautnerbdc748af2013-12-02 14:08:25 -0800657 int stackId = data.readInt();
Craig Mautnerc00204b2013-03-05 15:02:14 -0800658 float weight = data.readFloat();
Craig Mautnerbdc748af2013-12-02 14:08:25 -0800659 Rect r = Rect.CREATOR.createFromParcel(data);
660 resizeStack(stackId, r);
Craig Mautnerc00204b2013-03-05 15:02:14 -0800661 reply.writeNoException();
662 return true;
663 }
664
Craig Mautnerbdc748af2013-12-02 14:08:25 -0800665 case GET_ALL_STACK_INFOS_TRANSACTION: {
Craig Mautner5ff12102013-05-24 12:50:15 -0700666 data.enforceInterface(IActivityManager.descriptor);
Craig Mautnerbdc748af2013-12-02 14:08:25 -0800667 List<StackInfo> list = getAllStackInfos();
Craig Mautner5ff12102013-05-24 12:50:15 -0700668 reply.writeNoException();
669 reply.writeTypedList(list);
670 return true;
671 }
672
Craig Mautnerbdc748af2013-12-02 14:08:25 -0800673 case GET_STACK_INFO_TRANSACTION: {
Craig Mautnerfd1ce8d2013-06-17 16:15:42 -0700674 data.enforceInterface(IActivityManager.descriptor);
Craig Mautnerbdc748af2013-12-02 14:08:25 -0800675 int stackId = data.readInt();
676 StackInfo info = getStackInfo(stackId);
Craig Mautnerfd1ce8d2013-06-17 16:15:42 -0700677 reply.writeNoException();
678 if (info != null) {
679 reply.writeInt(1);
680 info.writeToParcel(reply, 0);
681 } else {
682 reply.writeInt(0);
683 }
684 return true;
685 }
686
Winson Chung303e1ff2014-03-07 15:06:19 -0800687 case IS_IN_HOME_STACK_TRANSACTION: {
688 data.enforceInterface(IActivityManager.descriptor);
689 int taskId = data.readInt();
690 boolean isInHomeStack = isInHomeStack(taskId);
691 reply.writeNoException();
692 reply.writeInt(isInHomeStack ? 1 : 0);
693 return true;
694 }
695
Craig Mautnercf910b02013-04-23 11:23:27 -0700696 case SET_FOCUSED_STACK_TRANSACTION: {
697 data.enforceInterface(IActivityManager.descriptor);
698 int stackId = data.readInt();
699 setFocusedStack(stackId);
700 reply.writeNoException();
701 return true;
702 }
703
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800704 case GET_TASK_FOR_ACTIVITY_TRANSACTION: {
705 data.enforceInterface(IActivityManager.descriptor);
706 IBinder token = data.readStrongBinder();
707 boolean onlyRoot = data.readInt() != 0;
708 int res = token != null
709 ? getTaskForActivity(token, onlyRoot) : -1;
710 reply.writeNoException();
711 reply.writeInt(res);
712 return true;
713 }
714
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800715 case REPORT_THUMBNAIL_TRANSACTION: {
716 data.enforceInterface(IActivityManager.descriptor);
717 IBinder token = data.readStrongBinder();
718 Bitmap thumbnail = data.readInt() != 0
719 ? Bitmap.CREATOR.createFromParcel(data) : null;
720 CharSequence description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data);
721 reportThumbnail(token, thumbnail, description);
722 reply.writeNoException();
723 return true;
724 }
725
726 case GET_CONTENT_PROVIDER_TRANSACTION: {
727 data.enforceInterface(IActivityManager.descriptor);
728 IBinder b = data.readStrongBinder();
729 IApplicationThread app = ApplicationThreadNative.asInterface(b);
730 String name = data.readString();
Jeff Sharkey6d515712012-09-20 16:06:08 -0700731 int userId = data.readInt();
Dianne Hackborn6ae8d182012-05-23 13:12:42 -0700732 boolean stable = data.readInt() != 0;
Jeff Sharkey6d515712012-09-20 16:06:08 -0700733 ContentProviderHolder cph = getContentProvider(app, name, userId, stable);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800734 reply.writeNoException();
735 if (cph != null) {
736 reply.writeInt(1);
737 cph.writeToParcel(reply, 0);
738 } else {
739 reply.writeInt(0);
740 }
741 return true;
742 }
743
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800744 case GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION: {
745 data.enforceInterface(IActivityManager.descriptor);
746 String name = data.readString();
Jeff Sharkey6d515712012-09-20 16:06:08 -0700747 int userId = data.readInt();
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800748 IBinder token = data.readStrongBinder();
Jeff Sharkey6d515712012-09-20 16:06:08 -0700749 ContentProviderHolder cph = getContentProviderExternal(name, userId, token);
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800750 reply.writeNoException();
751 if (cph != null) {
752 reply.writeInt(1);
753 cph.writeToParcel(reply, 0);
754 } else {
755 reply.writeInt(0);
756 }
757 return true;
758 }
759
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800760 case PUBLISH_CONTENT_PROVIDERS_TRANSACTION: {
761 data.enforceInterface(IActivityManager.descriptor);
762 IBinder b = data.readStrongBinder();
763 IApplicationThread app = ApplicationThreadNative.asInterface(b);
764 ArrayList<ContentProviderHolder> providers =
765 data.createTypedArrayList(ContentProviderHolder.CREATOR);
766 publishContentProviders(app, providers);
767 reply.writeNoException();
768 return true;
769 }
770
Dianne Hackborn6ae8d182012-05-23 13:12:42 -0700771 case REF_CONTENT_PROVIDER_TRANSACTION: {
772 data.enforceInterface(IActivityManager.descriptor);
773 IBinder b = data.readStrongBinder();
774 int stable = data.readInt();
775 int unstable = data.readInt();
776 boolean res = refContentProvider(b, stable, unstable);
777 reply.writeNoException();
778 reply.writeInt(res ? 1 : 0);
779 return true;
780 }
781
782 case UNSTABLE_PROVIDER_DIED_TRANSACTION: {
783 data.enforceInterface(IActivityManager.descriptor);
784 IBinder b = data.readStrongBinder();
785 unstableProviderDied(b);
786 reply.writeNoException();
787 return true;
788 }
789
Jeff Sharkey7aa76012013-09-30 14:26:27 -0700790 case APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION: {
791 data.enforceInterface(IActivityManager.descriptor);
792 IBinder b = data.readStrongBinder();
793 appNotRespondingViaProvider(b);
794 reply.writeNoException();
795 return true;
796 }
797
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800798 case REMOVE_CONTENT_PROVIDER_TRANSACTION: {
799 data.enforceInterface(IActivityManager.descriptor);
800 IBinder b = data.readStrongBinder();
Dianne Hackborn6ae8d182012-05-23 13:12:42 -0700801 boolean stable = data.readInt() != 0;
802 removeContentProvider(b, stable);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800803 reply.writeNoException();
804 return true;
805 }
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800806
807 case REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION: {
808 data.enforceInterface(IActivityManager.descriptor);
809 String name = data.readString();
810 IBinder token = data.readStrongBinder();
811 removeContentProviderExternal(name, token);
812 reply.writeNoException();
813 return true;
814 }
815
Dianne Hackborndd9b82c2009-09-03 00:18:47 -0700816 case GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION: {
817 data.enforceInterface(IActivityManager.descriptor);
818 ComponentName comp = ComponentName.CREATOR.createFromParcel(data);
819 PendingIntent pi = getRunningServiceControlPanel(comp);
820 reply.writeNoException();
821 PendingIntent.writePendingIntentOrNullToParcel(pi, reply);
822 return true;
823 }
824
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800825 case START_SERVICE_TRANSACTION: {
826 data.enforceInterface(IActivityManager.descriptor);
827 IBinder b = data.readStrongBinder();
828 IApplicationThread app = ApplicationThreadNative.asInterface(b);
829 Intent service = Intent.CREATOR.createFromParcel(data);
830 String resolvedType = data.readString();
Dianne Hackborn7767eac2012-08-23 18:25:40 -0700831 int userId = data.readInt();
832 ComponentName cn = startService(app, service, resolvedType, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800833 reply.writeNoException();
834 ComponentName.writeToParcel(cn, reply);
835 return true;
836 }
837
838 case STOP_SERVICE_TRANSACTION: {
839 data.enforceInterface(IActivityManager.descriptor);
840 IBinder b = data.readStrongBinder();
841 IApplicationThread app = ApplicationThreadNative.asInterface(b);
842 Intent service = Intent.CREATOR.createFromParcel(data);
843 String resolvedType = data.readString();
Dianne Hackborn7767eac2012-08-23 18:25:40 -0700844 int userId = data.readInt();
845 int res = stopService(app, service, resolvedType, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800846 reply.writeNoException();
847 reply.writeInt(res);
848 return true;
849 }
850
851 case STOP_SERVICE_TOKEN_TRANSACTION: {
852 data.enforceInterface(IActivityManager.descriptor);
853 ComponentName className = ComponentName.readFromParcel(data);
854 IBinder token = data.readStrongBinder();
855 int startId = data.readInt();
856 boolean res = stopServiceToken(className, token, startId);
857 reply.writeNoException();
858 reply.writeInt(res ? 1 : 0);
859 return true;
860 }
861
862 case SET_SERVICE_FOREGROUND_TRANSACTION: {
863 data.enforceInterface(IActivityManager.descriptor);
864 ComponentName className = ComponentName.readFromParcel(data);
865 IBinder token = data.readStrongBinder();
Dianne Hackbornd8a43f62009-08-17 23:33:56 -0700866 int id = data.readInt();
867 Notification notification = null;
868 if (data.readInt() != 0) {
869 notification = Notification.CREATOR.createFromParcel(data);
870 }
871 boolean removeNotification = data.readInt() != 0;
872 setServiceForeground(className, token, id, notification, removeNotification);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800873 reply.writeNoException();
874 return true;
875 }
876
877 case BIND_SERVICE_TRANSACTION: {
878 data.enforceInterface(IActivityManager.descriptor);
879 IBinder b = data.readStrongBinder();
880 IApplicationThread app = ApplicationThreadNative.asInterface(b);
881 IBinder token = data.readStrongBinder();
882 Intent service = Intent.CREATOR.createFromParcel(data);
883 String resolvedType = data.readString();
884 b = data.readStrongBinder();
885 int fl = data.readInt();
Amith Yamasani37ce3a82012-02-06 12:04:42 -0800886 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800887 IServiceConnection conn = IServiceConnection.Stub.asInterface(b);
Amith Yamasani37ce3a82012-02-06 12:04:42 -0800888 int res = bindService(app, token, service, resolvedType, conn, fl, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800889 reply.writeNoException();
890 reply.writeInt(res);
891 return true;
892 }
893
894 case UNBIND_SERVICE_TRANSACTION: {
895 data.enforceInterface(IActivityManager.descriptor);
896 IBinder b = data.readStrongBinder();
897 IServiceConnection conn = IServiceConnection.Stub.asInterface(b);
898 boolean res = unbindService(conn);
899 reply.writeNoException();
900 reply.writeInt(res ? 1 : 0);
901 return true;
902 }
903
904 case PUBLISH_SERVICE_TRANSACTION: {
905 data.enforceInterface(IActivityManager.descriptor);
906 IBinder token = data.readStrongBinder();
907 Intent intent = Intent.CREATOR.createFromParcel(data);
908 IBinder service = data.readStrongBinder();
909 publishService(token, intent, service);
910 reply.writeNoException();
911 return true;
912 }
913
914 case UNBIND_FINISHED_TRANSACTION: {
915 data.enforceInterface(IActivityManager.descriptor);
916 IBinder token = data.readStrongBinder();
917 Intent intent = Intent.CREATOR.createFromParcel(data);
918 boolean doRebind = data.readInt() != 0;
919 unbindFinished(token, intent, doRebind);
920 reply.writeNoException();
921 return true;
922 }
923
924 case SERVICE_DONE_EXECUTING_TRANSACTION: {
925 data.enforceInterface(IActivityManager.descriptor);
926 IBinder token = data.readStrongBinder();
Dianne Hackbornf6f9f2d2009-08-21 16:26:03 -0700927 int type = data.readInt();
928 int startId = data.readInt();
929 int res = data.readInt();
930 serviceDoneExecuting(token, type, startId, res);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800931 reply.writeNoException();
932 return true;
933 }
934
935 case START_INSTRUMENTATION_TRANSACTION: {
936 data.enforceInterface(IActivityManager.descriptor);
937 ComponentName className = ComponentName.readFromParcel(data);
938 String profileFile = data.readString();
939 int fl = data.readInt();
940 Bundle arguments = data.readBundle();
941 IBinder b = data.readStrongBinder();
942 IInstrumentationWatcher w = IInstrumentationWatcher.Stub.asInterface(b);
Svetoslav Ganov80943d82013-01-02 10:25:37 -0800943 b = data.readStrongBinder();
944 IUiAutomationConnection c = IUiAutomationConnection.Stub.asInterface(b);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -0700945 int userId = data.readInt();
Svetoslav Ganov80943d82013-01-02 10:25:37 -0800946 boolean res = startInstrumentation(className, profileFile, fl, arguments, w, c, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800947 reply.writeNoException();
948 reply.writeInt(res ? 1 : 0);
949 return true;
950 }
951
952
953 case FINISH_INSTRUMENTATION_TRANSACTION: {
954 data.enforceInterface(IActivityManager.descriptor);
955 IBinder b = data.readStrongBinder();
956 IApplicationThread app = ApplicationThreadNative.asInterface(b);
957 int resultCode = data.readInt();
958 Bundle results = data.readBundle();
959 finishInstrumentation(app, resultCode, results);
960 reply.writeNoException();
961 return true;
962 }
963
964 case GET_CONFIGURATION_TRANSACTION: {
965 data.enforceInterface(IActivityManager.descriptor);
966 Configuration config = getConfiguration();
967 reply.writeNoException();
968 config.writeToParcel(reply, 0);
969 return true;
970 }
971
972 case UPDATE_CONFIGURATION_TRANSACTION: {
973 data.enforceInterface(IActivityManager.descriptor);
974 Configuration config = Configuration.CREATOR.createFromParcel(data);
975 updateConfiguration(config);
976 reply.writeNoException();
977 return true;
978 }
979
980 case SET_REQUESTED_ORIENTATION_TRANSACTION: {
981 data.enforceInterface(IActivityManager.descriptor);
982 IBinder token = data.readStrongBinder();
983 int requestedOrientation = data.readInt();
984 setRequestedOrientation(token, requestedOrientation);
985 reply.writeNoException();
986 return true;
987 }
988
989 case GET_REQUESTED_ORIENTATION_TRANSACTION: {
990 data.enforceInterface(IActivityManager.descriptor);
991 IBinder token = data.readStrongBinder();
992 int req = getRequestedOrientation(token);
993 reply.writeNoException();
994 reply.writeInt(req);
995 return true;
996 }
997
998 case GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION: {
999 data.enforceInterface(IActivityManager.descriptor);
1000 IBinder token = data.readStrongBinder();
1001 ComponentName cn = getActivityClassForToken(token);
1002 reply.writeNoException();
1003 ComponentName.writeToParcel(cn, reply);
1004 return true;
1005 }
1006
1007 case GET_PACKAGE_FOR_TOKEN_TRANSACTION: {
1008 data.enforceInterface(IActivityManager.descriptor);
1009 IBinder token = data.readStrongBinder();
1010 reply.writeNoException();
1011 reply.writeString(getPackageForToken(token));
1012 return true;
1013 }
1014
1015 case GET_INTENT_SENDER_TRANSACTION: {
1016 data.enforceInterface(IActivityManager.descriptor);
1017 int type = data.readInt();
1018 String packageName = data.readString();
1019 IBinder token = data.readStrongBinder();
1020 String resultWho = data.readString();
1021 int requestCode = data.readInt();
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001022 Intent[] requestIntents;
1023 String[] requestResolvedTypes;
1024 if (data.readInt() != 0) {
1025 requestIntents = data.createTypedArray(Intent.CREATOR);
1026 requestResolvedTypes = data.createStringArray();
1027 } else {
1028 requestIntents = null;
1029 requestResolvedTypes = null;
1030 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001031 int fl = data.readInt();
Dianne Hackborn7a2195c2012-03-19 17:38:00 -07001032 Bundle options = data.readInt() != 0
1033 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackborn41203752012-08-31 14:05:51 -07001034 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001035 IIntentSender res = getIntentSender(type, packageName, token,
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001036 resultWho, requestCode, requestIntents,
Dianne Hackborn41203752012-08-31 14:05:51 -07001037 requestResolvedTypes, fl, options, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001038 reply.writeNoException();
1039 reply.writeStrongBinder(res != null ? res.asBinder() : null);
1040 return true;
1041 }
1042
1043 case CANCEL_INTENT_SENDER_TRANSACTION: {
1044 data.enforceInterface(IActivityManager.descriptor);
1045 IIntentSender r = IIntentSender.Stub.asInterface(
1046 data.readStrongBinder());
1047 cancelIntentSender(r);
1048 reply.writeNoException();
1049 return true;
1050 }
1051
1052 case GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION: {
1053 data.enforceInterface(IActivityManager.descriptor);
1054 IIntentSender r = IIntentSender.Stub.asInterface(
1055 data.readStrongBinder());
1056 String res = getPackageForIntentSender(r);
1057 reply.writeNoException();
1058 reply.writeString(res);
1059 return true;
1060 }
1061
Christopher Tatec4a07d12012-04-06 14:19:13 -07001062 case GET_UID_FOR_INTENT_SENDER_TRANSACTION: {
1063 data.enforceInterface(IActivityManager.descriptor);
1064 IIntentSender r = IIntentSender.Stub.asInterface(
1065 data.readStrongBinder());
1066 int res = getUidForIntentSender(r);
1067 reply.writeNoException();
1068 reply.writeInt(res);
1069 return true;
1070 }
1071
Dianne Hackborn41203752012-08-31 14:05:51 -07001072 case HANDLE_INCOMING_USER_TRANSACTION: {
1073 data.enforceInterface(IActivityManager.descriptor);
1074 int callingPid = data.readInt();
1075 int callingUid = data.readInt();
1076 int userId = data.readInt();
1077 boolean allowAll = data.readInt() != 0 ;
1078 boolean requireFull = data.readInt() != 0;
1079 String name = data.readString();
1080 String callerPackage = data.readString();
1081 int res = handleIncomingUser(callingPid, callingUid, userId, allowAll,
1082 requireFull, name, callerPackage);
1083 reply.writeNoException();
1084 reply.writeInt(res);
1085 return true;
1086 }
1087
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001088 case SET_PROCESS_LIMIT_TRANSACTION: {
1089 data.enforceInterface(IActivityManager.descriptor);
1090 int max = data.readInt();
1091 setProcessLimit(max);
1092 reply.writeNoException();
1093 return true;
1094 }
1095
1096 case GET_PROCESS_LIMIT_TRANSACTION: {
1097 data.enforceInterface(IActivityManager.descriptor);
1098 int limit = getProcessLimit();
1099 reply.writeNoException();
1100 reply.writeInt(limit);
1101 return true;
1102 }
1103
1104 case SET_PROCESS_FOREGROUND_TRANSACTION: {
1105 data.enforceInterface(IActivityManager.descriptor);
1106 IBinder token = data.readStrongBinder();
1107 int pid = data.readInt();
1108 boolean isForeground = data.readInt() != 0;
1109 setProcessForeground(token, pid, isForeground);
1110 reply.writeNoException();
1111 return true;
1112 }
1113
1114 case CHECK_PERMISSION_TRANSACTION: {
1115 data.enforceInterface(IActivityManager.descriptor);
1116 String perm = data.readString();
1117 int pid = data.readInt();
1118 int uid = data.readInt();
1119 int res = checkPermission(perm, pid, uid);
1120 reply.writeNoException();
1121 reply.writeInt(res);
1122 return true;
1123 }
1124
1125 case CHECK_URI_PERMISSION_TRANSACTION: {
1126 data.enforceInterface(IActivityManager.descriptor);
1127 Uri uri = Uri.CREATOR.createFromParcel(data);
1128 int pid = data.readInt();
1129 int uid = data.readInt();
1130 int mode = data.readInt();
1131 int res = checkUriPermission(uri, pid, uid, mode);
1132 reply.writeNoException();
1133 reply.writeInt(res);
1134 return true;
1135 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001136
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001137 case CLEAR_APP_DATA_TRANSACTION: {
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001138 data.enforceInterface(IActivityManager.descriptor);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001139 String packageName = data.readString();
1140 IPackageDataObserver observer = IPackageDataObserver.Stub.asInterface(
1141 data.readStrongBinder());
Amith Yamasani742a6712011-05-04 14:49:28 -07001142 int userId = data.readInt();
1143 boolean res = clearApplicationUserData(packageName, observer, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001144 reply.writeNoException();
1145 reply.writeInt(res ? 1 : 0);
1146 return true;
1147 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001148
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001149 case GRANT_URI_PERMISSION_TRANSACTION: {
1150 data.enforceInterface(IActivityManager.descriptor);
1151 IBinder b = data.readStrongBinder();
1152 IApplicationThread app = ApplicationThreadNative.asInterface(b);
1153 String targetPkg = data.readString();
1154 Uri uri = Uri.CREATOR.createFromParcel(data);
1155 int mode = data.readInt();
1156 grantUriPermission(app, targetPkg, uri, mode);
1157 reply.writeNoException();
1158 return true;
1159 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001160
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001161 case REVOKE_URI_PERMISSION_TRANSACTION: {
1162 data.enforceInterface(IActivityManager.descriptor);
1163 IBinder b = data.readStrongBinder();
1164 IApplicationThread app = ApplicationThreadNative.asInterface(b);
1165 Uri uri = Uri.CREATOR.createFromParcel(data);
1166 int mode = data.readInt();
1167 revokeUriPermission(app, uri, mode);
1168 reply.writeNoException();
1169 return true;
1170 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001171
Jeff Sharkeye66c1772013-09-20 14:30:59 -07001172 case TAKE_PERSISTABLE_URI_PERMISSION_TRANSACTION: {
1173 data.enforceInterface(IActivityManager.descriptor);
1174 Uri uri = Uri.CREATOR.createFromParcel(data);
1175 int mode = data.readInt();
1176 takePersistableUriPermission(uri, mode);
1177 reply.writeNoException();
1178 return true;
1179 }
1180
1181 case RELEASE_PERSISTABLE_URI_PERMISSION_TRANSACTION: {
1182 data.enforceInterface(IActivityManager.descriptor);
1183 Uri uri = Uri.CREATOR.createFromParcel(data);
1184 int mode = data.readInt();
1185 releasePersistableUriPermission(uri, mode);
1186 reply.writeNoException();
1187 return true;
1188 }
1189
1190 case GET_PERSISTED_URI_PERMISSIONS_TRANSACTION: {
1191 data.enforceInterface(IActivityManager.descriptor);
Jeff Sharkeybcaac0a2013-10-09 14:21:08 -07001192 final String packageName = data.readString();
1193 final boolean incoming = data.readInt() != 0;
1194 final ParceledListSlice<UriPermission> perms = getPersistedUriPermissions(
1195 packageName, incoming);
Jeff Sharkeye66c1772013-09-20 14:30:59 -07001196 reply.writeNoException();
1197 perms.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
1198 return true;
1199 }
1200
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001201 case SHOW_WAITING_FOR_DEBUGGER_TRANSACTION: {
1202 data.enforceInterface(IActivityManager.descriptor);
1203 IBinder b = data.readStrongBinder();
1204 IApplicationThread app = ApplicationThreadNative.asInterface(b);
1205 boolean waiting = data.readInt() != 0;
1206 showWaitingForDebugger(app, waiting);
1207 reply.writeNoException();
1208 return true;
1209 }
1210
1211 case GET_MEMORY_INFO_TRANSACTION: {
1212 data.enforceInterface(IActivityManager.descriptor);
1213 ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
1214 getMemoryInfo(mi);
1215 reply.writeNoException();
1216 mi.writeToParcel(reply, 0);
1217 return true;
1218 }
1219
1220 case UNHANDLED_BACK_TRANSACTION: {
1221 data.enforceInterface(IActivityManager.descriptor);
1222 unhandledBack();
1223 reply.writeNoException();
1224 return true;
1225 }
1226
1227 case OPEN_CONTENT_URI_TRANSACTION: {
1228 data.enforceInterface(IActivityManager.descriptor);
1229 Uri uri = Uri.parse(data.readString());
1230 ParcelFileDescriptor pfd = openContentUri(uri);
1231 reply.writeNoException();
1232 if (pfd != null) {
1233 reply.writeInt(1);
1234 pfd.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
1235 } else {
1236 reply.writeInt(0);
1237 }
1238 return true;
1239 }
Dianne Hackbornff5b1582012-04-12 17:24:07 -07001240
Dianne Hackbornff5b1582012-04-12 17:24:07 -07001241 case SET_LOCK_SCREEN_SHOWN_TRANSACTION: {
1242 data.enforceInterface(IActivityManager.descriptor);
1243 setLockScreenShown(data.readInt() != 0);
1244 reply.writeNoException();
1245 return true;
1246 }
1247
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001248 case SET_DEBUG_APP_TRANSACTION: {
1249 data.enforceInterface(IActivityManager.descriptor);
1250 String pn = data.readString();
1251 boolean wfd = data.readInt() != 0;
1252 boolean per = data.readInt() != 0;
1253 setDebugApp(pn, wfd, per);
1254 reply.writeNoException();
1255 return true;
1256 }
1257
1258 case SET_ALWAYS_FINISH_TRANSACTION: {
1259 data.enforceInterface(IActivityManager.descriptor);
1260 boolean enabled = data.readInt() != 0;
1261 setAlwaysFinish(enabled);
1262 reply.writeNoException();
1263 return true;
1264 }
1265
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001266 case SET_ACTIVITY_CONTROLLER_TRANSACTION: {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001267 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001268 IActivityController watcher = IActivityController.Stub.asInterface(
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001269 data.readStrongBinder());
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001270 setActivityController(watcher);
Sungmin Choicdb86bb2012-12-20 14:08:59 +09001271 reply.writeNoException();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001272 return true;
1273 }
1274
1275 case ENTER_SAFE_MODE_TRANSACTION: {
1276 data.enforceInterface(IActivityManager.descriptor);
1277 enterSafeMode();
1278 reply.writeNoException();
1279 return true;
1280 }
1281
1282 case NOTE_WAKEUP_ALARM_TRANSACTION: {
1283 data.enforceInterface(IActivityManager.descriptor);
1284 IIntentSender is = IIntentSender.Stub.asInterface(
1285 data.readStrongBinder());
Dianne Hackborn099bc622014-01-22 13:39:16 -08001286 int sourceUid = data.readInt();
1287 String sourcePkg = data.readString();
1288 noteWakeupAlarm(is, sourceUid, sourcePkg);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001289 reply.writeNoException();
1290 return true;
1291 }
1292
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07001293 case KILL_PIDS_TRANSACTION: {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001294 data.enforceInterface(IActivityManager.descriptor);
1295 int[] pids = data.createIntArray();
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07001296 String reason = data.readString();
Dianne Hackborn64825172011-03-02 21:32:58 -08001297 boolean secure = data.readInt() != 0;
1298 boolean res = killPids(pids, reason, secure);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001299 reply.writeNoException();
1300 reply.writeInt(res ? 1 : 0);
1301 return true;
1302 }
1303
Jeff Sharkeyb9a07012012-03-22 17:00:04 -07001304 case KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION: {
1305 data.enforceInterface(IActivityManager.descriptor);
1306 String reason = data.readString();
1307 boolean res = killProcessesBelowForeground(reason);
1308 reply.writeNoException();
1309 reply.writeInt(res ? 1 : 0);
1310 return true;
1311 }
1312
Dan Egnor60d87622009-12-16 16:32:58 -08001313 case HANDLE_APPLICATION_CRASH_TRANSACTION: {
1314 data.enforceInterface(IActivityManager.descriptor);
1315 IBinder app = data.readStrongBinder();
1316 ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data);
1317 handleApplicationCrash(app, ci);
1318 reply.writeNoException();
1319 return true;
1320 }
1321
1322 case HANDLE_APPLICATION_WTF_TRANSACTION: {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001323 data.enforceInterface(IActivityManager.descriptor);
1324 IBinder app = data.readStrongBinder();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001325 String tag = data.readString();
Dan Egnorb7f03672009-12-09 16:22:32 -08001326 ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data);
Dan Egnor60d87622009-12-16 16:32:58 -08001327 boolean res = handleApplicationWtf(app, tag, ci);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001328 reply.writeNoException();
Dan Egnor60d87622009-12-16 16:32:58 -08001329 reply.writeInt(res ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001330 return true;
1331 }
Dan Egnorb7f03672009-12-09 16:22:32 -08001332
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07001333 case HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION: {
1334 data.enforceInterface(IActivityManager.descriptor);
1335 IBinder app = data.readStrongBinder();
Brad Fitzpatrick46d42382010-06-11 13:57:58 -07001336 int violationMask = data.readInt();
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -07001337 StrictMode.ViolationInfo info = new StrictMode.ViolationInfo(data);
1338 handleApplicationStrictModeViolation(app, violationMask, info);
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07001339 reply.writeNoException();
1340 return true;
1341 }
1342
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001343 case SIGNAL_PERSISTENT_PROCESSES_TRANSACTION: {
1344 data.enforceInterface(IActivityManager.descriptor);
1345 int sig = data.readInt();
1346 signalPersistentProcesses(sig);
1347 reply.writeNoException();
1348 return true;
1349 }
1350
Dianne Hackborn03abb812010-01-04 18:43:19 -08001351 case KILL_BACKGROUND_PROCESSES_TRANSACTION: {
1352 data.enforceInterface(IActivityManager.descriptor);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001353 String packageName = data.readString();
Dianne Hackborn1676c852012-09-10 14:52:30 -07001354 int userId = data.readInt();
1355 killBackgroundProcesses(packageName, userId);
Dianne Hackborn03abb812010-01-04 18:43:19 -08001356 reply.writeNoException();
1357 return true;
1358 }
Dianne Hackborne4d4fbc2011-11-08 11:53:28 -08001359
1360 case KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION: {
1361 data.enforceInterface(IActivityManager.descriptor);
1362 killAllBackgroundProcesses();
1363 reply.writeNoException();
1364 return true;
1365 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001366
Dianne Hackborn03abb812010-01-04 18:43:19 -08001367 case FORCE_STOP_PACKAGE_TRANSACTION: {
1368 data.enforceInterface(IActivityManager.descriptor);
1369 String packageName = data.readString();
Dianne Hackborn1676c852012-09-10 14:52:30 -07001370 int userId = data.readInt();
1371 forceStopPackage(packageName, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001372 reply.writeNoException();
1373 return true;
1374 }
Dianne Hackborn27ff9132012-03-06 14:57:58 -08001375
1376 case GET_MY_MEMORY_STATE_TRANSACTION: {
1377 data.enforceInterface(IActivityManager.descriptor);
1378 ActivityManager.RunningAppProcessInfo info =
1379 new ActivityManager.RunningAppProcessInfo();
1380 getMyMemoryState(info);
1381 reply.writeNoException();
1382 info.writeToParcel(reply, 0);
1383 return true;
1384 }
1385
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001386 case GET_DEVICE_CONFIGURATION_TRANSACTION: {
1387 data.enforceInterface(IActivityManager.descriptor);
1388 ConfigurationInfo config = getDeviceConfigurationInfo();
1389 reply.writeNoException();
1390 config.writeToParcel(reply, 0);
1391 return true;
1392 }
1393
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001394 case PROFILE_CONTROL_TRANSACTION: {
1395 data.enforceInterface(IActivityManager.descriptor);
1396 String process = data.readString();
Dianne Hackborn1676c852012-09-10 14:52:30 -07001397 int userId = data.readInt();
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001398 boolean start = data.readInt() != 0;
Romain Guy9a8c5ce2011-07-21 18:04:29 -07001399 int profileType = data.readInt();
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001400 String path = data.readString();
Dianne Hackborn9c8dd552009-06-23 19:22:52 -07001401 ParcelFileDescriptor fd = data.readInt() != 0
Amith Yamasanic2be0d62013-09-23 11:16:28 -07001402 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null;
Dianne Hackborn1676c852012-09-10 14:52:30 -07001403 boolean res = profileControl(process, userId, start, path, fd, profileType);
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001404 reply.writeNoException();
1405 reply.writeInt(res ? 1 : 0);
1406 return true;
1407 }
1408
Dianne Hackborn55280a92009-05-07 15:53:46 -07001409 case SHUTDOWN_TRANSACTION: {
1410 data.enforceInterface(IActivityManager.descriptor);
1411 boolean res = shutdown(data.readInt());
1412 reply.writeNoException();
1413 reply.writeInt(res ? 1 : 0);
1414 return true;
1415 }
1416
Dianne Hackborn95fc68f2009-05-19 18:37:45 -07001417 case STOP_APP_SWITCHES_TRANSACTION: {
1418 data.enforceInterface(IActivityManager.descriptor);
1419 stopAppSwitches();
1420 reply.writeNoException();
1421 return true;
1422 }
1423
1424 case RESUME_APP_SWITCHES_TRANSACTION: {
1425 data.enforceInterface(IActivityManager.descriptor);
1426 resumeAppSwitches();
1427 reply.writeNoException();
1428 return true;
1429 }
1430
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001431 case PEEK_SERVICE_TRANSACTION: {
1432 data.enforceInterface(IActivityManager.descriptor);
1433 Intent service = Intent.CREATOR.createFromParcel(data);
1434 String resolvedType = data.readString();
1435 IBinder binder = peekService(service, resolvedType);
1436 reply.writeNoException();
1437 reply.writeStrongBinder(binder);
1438 return true;
1439 }
Christopher Tate181fafa2009-05-14 11:12:14 -07001440
1441 case START_BACKUP_AGENT_TRANSACTION: {
1442 data.enforceInterface(IActivityManager.descriptor);
1443 ApplicationInfo info = ApplicationInfo.CREATOR.createFromParcel(data);
1444 int backupRestoreMode = data.readInt();
1445 boolean success = bindBackupAgent(info, backupRestoreMode);
1446 reply.writeNoException();
1447 reply.writeInt(success ? 1 : 0);
1448 return true;
1449 }
1450
1451 case BACKUP_AGENT_CREATED_TRANSACTION: {
1452 data.enforceInterface(IActivityManager.descriptor);
1453 String packageName = data.readString();
1454 IBinder agent = data.readStrongBinder();
1455 backupAgentCreated(packageName, agent);
1456 reply.writeNoException();
1457 return true;
1458 }
1459
1460 case UNBIND_BACKUP_AGENT_TRANSACTION: {
1461 data.enforceInterface(IActivityManager.descriptor);
1462 ApplicationInfo info = ApplicationInfo.CREATOR.createFromParcel(data);
1463 unbindBackupAgent(info);
1464 reply.writeNoException();
1465 return true;
1466 }
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001467
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001468 case KILL_APPLICATION_WITH_APPID_TRANSACTION: {
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07001469 data.enforceInterface(IActivityManager.descriptor);
1470 String pkg = data.readString();
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001471 int appid = data.readInt();
Dianne Hackborn21d9b562013-05-28 17:46:59 -07001472 String reason = data.readString();
1473 killApplicationWithAppId(pkg, appid, reason);
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07001474 reply.writeNoException();
1475 return true;
1476 }
Dianne Hackborna6ddc8a2009-07-28 17:49:55 -07001477
1478 case CLOSE_SYSTEM_DIALOGS_TRANSACTION: {
1479 data.enforceInterface(IActivityManager.descriptor);
1480 String reason = data.readString();
1481 closeSystemDialogs(reason);
1482 reply.writeNoException();
1483 return true;
1484 }
Dianne Hackborn3025ef32009-08-31 21:31:47 -07001485
1486 case GET_PROCESS_MEMORY_INFO_TRANSACTION: {
1487 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07001488 int[] pids = data.createIntArray();
1489 Debug.MemoryInfo[] res = getProcessMemoryInfo(pids);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07001490 reply.writeNoException();
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07001491 reply.writeTypedArray(res, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07001492 return true;
1493 }
Christopher Tate5e1ab332009-09-01 20:32:49 -07001494
1495 case KILL_APPLICATION_PROCESS_TRANSACTION: {
1496 data.enforceInterface(IActivityManager.descriptor);
1497 String processName = data.readString();
1498 int uid = data.readInt();
1499 killApplicationProcess(processName, uid);
1500 reply.writeNoException();
1501 return true;
1502 }
Dianne Hackborn3b3e1452009-09-24 19:22:12 -07001503
1504 case OVERRIDE_PENDING_TRANSITION_TRANSACTION: {
1505 data.enforceInterface(IActivityManager.descriptor);
1506 IBinder token = data.readStrongBinder();
1507 String packageName = data.readString();
1508 int enterAnim = data.readInt();
1509 int exitAnim = data.readInt();
1510 overridePendingTransition(token, packageName, enterAnim, exitAnim);
Dianne Hackborn9327f4f2010-01-29 10:38:29 -08001511 reply.writeNoException();
1512 return true;
1513 }
1514
1515 case IS_USER_A_MONKEY_TRANSACTION: {
1516 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackborn7e269642010-08-25 19:50:20 -07001517 boolean areThey = isUserAMonkey();
Dianne Hackborn9327f4f2010-01-29 10:38:29 -08001518 reply.writeNoException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001519 reply.writeInt(areThey ? 1 : 0);
Dianne Hackborn3b3e1452009-09-24 19:22:12 -07001520 return true;
1521 }
Dianne Hackborn860755f2010-06-03 18:47:52 -07001522
Adam Momtaz8f6f1f42013-04-10 12:42:58 -07001523 case SET_USER_IS_MONKEY_TRANSACTION: {
1524 data.enforceInterface(IActivityManager.descriptor);
1525 final boolean monkey = (data.readInt() == 1);
1526 setUserIsMonkey(monkey);
1527 reply.writeNoException();
1528 return true;
1529 }
1530
Dianne Hackborn860755f2010-06-03 18:47:52 -07001531 case FINISH_HEAVY_WEIGHT_APP_TRANSACTION: {
1532 data.enforceInterface(IActivityManager.descriptor);
1533 finishHeavyWeightApp();
1534 reply.writeNoException();
1535 return true;
1536 }
Daniel Sandler69a48172010-06-23 16:29:36 -04001537
1538 case IS_IMMERSIVE_TRANSACTION: {
1539 data.enforceInterface(IActivityManager.descriptor);
1540 IBinder token = data.readStrongBinder();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001541 boolean isit = isImmersive(token);
Daniel Sandler69a48172010-06-23 16:29:36 -04001542 reply.writeNoException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001543 reply.writeInt(isit ? 1 : 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04001544 return true;
1545 }
1546
Craig Mautner5eda9b32013-07-02 11:58:16 -07001547 case CONVERT_FROM_TRANSLUCENT_TRANSACTION: {
Craig Mautner4addfc52013-06-25 08:05:45 -07001548 data.enforceInterface(IActivityManager.descriptor);
1549 IBinder token = data.readStrongBinder();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07001550 boolean converted = convertFromTranslucent(token);
Craig Mautner5eda9b32013-07-02 11:58:16 -07001551 reply.writeNoException();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07001552 reply.writeInt(converted ? 1 : 0);
Craig Mautner5eda9b32013-07-02 11:58:16 -07001553 return true;
1554 }
1555
1556 case CONVERT_TO_TRANSLUCENT_TRANSACTION: {
1557 data.enforceInterface(IActivityManager.descriptor);
1558 IBinder token = data.readStrongBinder();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07001559 boolean converted = convertToTranslucent(token);
Craig Mautner4addfc52013-06-25 08:05:45 -07001560 reply.writeNoException();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07001561 reply.writeInt(converted ? 1 : 0);
Craig Mautner4addfc52013-06-25 08:05:45 -07001562 return true;
1563 }
1564
Daniel Sandler69a48172010-06-23 16:29:36 -04001565 case SET_IMMERSIVE_TRANSACTION: {
1566 data.enforceInterface(IActivityManager.descriptor);
1567 IBinder token = data.readStrongBinder();
1568 boolean imm = data.readInt() == 1;
1569 setImmersive(token, imm);
1570 reply.writeNoException();
1571 return true;
1572 }
1573
1574 case IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION: {
1575 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackborn7e269642010-08-25 19:50:20 -07001576 boolean isit = isTopActivityImmersive();
Daniel Sandler69a48172010-06-23 16:29:36 -04001577 reply.writeNoException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001578 reply.writeInt(isit ? 1 : 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04001579 return true;
1580 }
1581
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07001582 case CRASH_APPLICATION_TRANSACTION: {
1583 data.enforceInterface(IActivityManager.descriptor);
1584 int uid = data.readInt();
1585 int initialPid = data.readInt();
1586 String packageName = data.readString();
1587 String message = data.readString();
1588 crashApplication(uid, initialPid, packageName, message);
1589 reply.writeNoException();
1590 return true;
1591 }
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07001592
1593 case GET_PROVIDER_MIME_TYPE_TRANSACTION: {
1594 data.enforceInterface(IActivityManager.descriptor);
1595 Uri uri = Uri.CREATOR.createFromParcel(data);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001596 int userId = data.readInt();
1597 String type = getProviderMimeType(uri, userId);
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07001598 reply.writeNoException();
1599 reply.writeString(type);
1600 return true;
1601 }
1602
Dianne Hackborn7e269642010-08-25 19:50:20 -07001603 case NEW_URI_PERMISSION_OWNER_TRANSACTION: {
1604 data.enforceInterface(IActivityManager.descriptor);
1605 String name = data.readString();
1606 IBinder perm = newUriPermissionOwner(name);
1607 reply.writeNoException();
1608 reply.writeStrongBinder(perm);
1609 return true;
1610 }
1611
1612 case GRANT_URI_PERMISSION_FROM_OWNER_TRANSACTION: {
1613 data.enforceInterface(IActivityManager.descriptor);
1614 IBinder owner = data.readStrongBinder();
1615 int fromUid = data.readInt();
1616 String targetPkg = data.readString();
1617 Uri uri = Uri.CREATOR.createFromParcel(data);
1618 int mode = data.readInt();
1619 grantUriPermissionFromOwner(owner, fromUid, targetPkg, uri, mode);
1620 reply.writeNoException();
1621 return true;
1622 }
1623
1624 case REVOKE_URI_PERMISSION_FROM_OWNER_TRANSACTION: {
1625 data.enforceInterface(IActivityManager.descriptor);
1626 IBinder owner = data.readStrongBinder();
1627 Uri uri = null;
1628 if (data.readInt() != 0) {
1629 Uri.CREATOR.createFromParcel(data);
1630 }
1631 int mode = data.readInt();
1632 revokeUriPermissionFromOwner(owner, uri, mode);
1633 reply.writeNoException();
1634 return true;
1635 }
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07001636
Dianne Hackborn90f4aaf2010-09-27 14:58:44 -07001637 case CHECK_GRANT_URI_PERMISSION_TRANSACTION: {
1638 data.enforceInterface(IActivityManager.descriptor);
1639 int callingUid = data.readInt();
1640 String targetPkg = data.readString();
1641 Uri uri = Uri.CREATOR.createFromParcel(data);
1642 int modeFlags = data.readInt();
1643 int res = checkGrantUriPermission(callingUid, targetPkg, uri, modeFlags);
1644 reply.writeNoException();
1645 reply.writeInt(res);
1646 return true;
1647 }
1648
Andy McFadden824c5102010-07-09 16:26:57 -07001649 case DUMP_HEAP_TRANSACTION: {
1650 data.enforceInterface(IActivityManager.descriptor);
1651 String process = data.readString();
Dianne Hackbornb12e1352012-09-26 11:39:20 -07001652 int userId = data.readInt();
Andy McFadden824c5102010-07-09 16:26:57 -07001653 boolean managed = data.readInt() != 0;
1654 String path = data.readString();
1655 ParcelFileDescriptor fd = data.readInt() != 0
Amith Yamasanic2be0d62013-09-23 11:16:28 -07001656 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null;
Dianne Hackborn1676c852012-09-10 14:52:30 -07001657 boolean res = dumpHeap(process, userId, managed, path, fd);
Andy McFadden824c5102010-07-09 16:26:57 -07001658 reply.writeNoException();
1659 reply.writeInt(res ? 1 : 0);
1660 return true;
1661 }
1662
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001663 case START_ACTIVITIES_TRANSACTION:
1664 {
1665 data.enforceInterface(IActivityManager.descriptor);
1666 IBinder b = data.readStrongBinder();
1667 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08001668 String callingPackage = data.readString();
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001669 Intent[] intents = data.createTypedArray(Intent.CREATOR);
1670 String[] resolvedTypes = data.createStringArray();
1671 IBinder resultTo = data.readStrongBinder();
Dianne Hackborna4972e92012-03-14 10:38:05 -07001672 Bundle options = data.readInt() != 0
1673 ? Bundle.CREATOR.createFromParcel(data) : null;
Amith Yamasaniea7e9152012-09-24 16:11:18 -07001674 int userId = data.readInt();
Dianne Hackbornf265ea92013-01-31 15:00:51 -08001675 int result = startActivities(app, callingPackage, intents, resolvedTypes, resultTo,
Amith Yamasaniea7e9152012-09-24 16:11:18 -07001676 options, userId);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001677 reply.writeNoException();
1678 reply.writeInt(result);
1679 return true;
1680 }
1681
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07001682 case GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION:
1683 {
1684 data.enforceInterface(IActivityManager.descriptor);
1685 int mode = getFrontActivityScreenCompatMode();
1686 reply.writeNoException();
1687 reply.writeInt(mode);
1688 return true;
1689 }
1690
1691 case SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION:
1692 {
1693 data.enforceInterface(IActivityManager.descriptor);
1694 int mode = data.readInt();
1695 setFrontActivityScreenCompatMode(mode);
1696 reply.writeNoException();
1697 reply.writeInt(mode);
1698 return true;
1699 }
1700
1701 case GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION:
1702 {
1703 data.enforceInterface(IActivityManager.descriptor);
1704 String pkg = data.readString();
1705 int mode = getPackageScreenCompatMode(pkg);
1706 reply.writeNoException();
1707 reply.writeInt(mode);
1708 return true;
1709 }
1710
Dianne Hackborne2515ee2011-04-27 18:52:56 -04001711 case SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION:
1712 {
1713 data.enforceInterface(IActivityManager.descriptor);
1714 String pkg = data.readString();
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07001715 int mode = data.readInt();
1716 setPackageScreenCompatMode(pkg, mode);
Dianne Hackborne2515ee2011-04-27 18:52:56 -04001717 reply.writeNoException();
1718 return true;
1719 }
Dianne Hackbornaa9d84c2011-05-09 19:00:59 -07001720
Amith Yamasani4b2e9342011-03-31 12:38:53 -07001721 case SWITCH_USER_TRANSACTION: {
1722 data.enforceInterface(IActivityManager.descriptor);
1723 int userid = data.readInt();
1724 boolean result = switchUser(userid);
1725 reply.writeNoException();
1726 reply.writeInt(result ? 1 : 0);
1727 return true;
1728 }
Amith Yamasani52f1d752012-03-28 18:19:29 -07001729
Kenny Guy08488bf2014-02-21 17:40:37 +00001730 case START_USER_IN_BACKGROUND_TRANSACTION: {
1731 data.enforceInterface(IActivityManager.descriptor);
1732 int userid = data.readInt();
1733 boolean result = startUserInBackground(userid);
1734 reply.writeNoException();
1735 reply.writeInt(result ? 1 : 0);
1736 return true;
1737 }
1738
Dianne Hackborn80a4af22012-08-27 19:18:31 -07001739 case STOP_USER_TRANSACTION: {
1740 data.enforceInterface(IActivityManager.descriptor);
1741 int userid = data.readInt();
1742 IStopUserCallback callback = IStopUserCallback.Stub.asInterface(
1743 data.readStrongBinder());
1744 int result = stopUser(userid, callback);
1745 reply.writeNoException();
1746 reply.writeInt(result);
1747 return true;
1748 }
1749
Amith Yamasani52f1d752012-03-28 18:19:29 -07001750 case GET_CURRENT_USER_TRANSACTION: {
1751 data.enforceInterface(IActivityManager.descriptor);
1752 UserInfo userInfo = getCurrentUser();
1753 reply.writeNoException();
1754 userInfo.writeToParcel(reply, 0);
1755 return true;
1756 }
1757
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001758 case IS_USER_RUNNING_TRANSACTION: {
1759 data.enforceInterface(IActivityManager.descriptor);
1760 int userid = data.readInt();
Dianne Hackborna8a9bd62012-10-09 15:36:59 -07001761 boolean orStopping = data.readInt() != 0;
1762 boolean result = isUserRunning(userid, orStopping);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001763 reply.writeNoException();
1764 reply.writeInt(result ? 1 : 0);
1765 return true;
1766 }
1767
Dianne Hackbornc72fc672012-09-20 13:12:03 -07001768 case GET_RUNNING_USER_IDS_TRANSACTION: {
1769 data.enforceInterface(IActivityManager.descriptor);
1770 int[] result = getRunningUserIds();
1771 reply.writeNoException();
1772 reply.writeIntArray(result);
1773 return true;
1774 }
1775
Dianne Hackborn0c5001d2011-04-12 18:16:08 -07001776 case REMOVE_SUB_TASK_TRANSACTION:
1777 {
1778 data.enforceInterface(IActivityManager.descriptor);
1779 int taskId = data.readInt();
1780 int subTaskIndex = data.readInt();
1781 boolean result = removeSubTask(taskId, subTaskIndex);
1782 reply.writeNoException();
1783 reply.writeInt(result ? 1 : 0);
1784 return true;
1785 }
1786
1787 case REMOVE_TASK_TRANSACTION:
1788 {
1789 data.enforceInterface(IActivityManager.descriptor);
1790 int taskId = data.readInt();
1791 int fl = data.readInt();
1792 boolean result = removeTask(taskId, fl);
1793 reply.writeNoException();
1794 reply.writeInt(result ? 1 : 0);
1795 return true;
1796 }
Amith Yamasani4b2e9342011-03-31 12:38:53 -07001797
Jeff Sharkeya4620792011-05-20 15:29:23 -07001798 case REGISTER_PROCESS_OBSERVER_TRANSACTION: {
1799 data.enforceInterface(IActivityManager.descriptor);
1800 IProcessObserver observer = IProcessObserver.Stub.asInterface(
1801 data.readStrongBinder());
1802 registerProcessObserver(observer);
1803 return true;
1804 }
1805
1806 case UNREGISTER_PROCESS_OBSERVER_TRANSACTION: {
1807 data.enforceInterface(IActivityManager.descriptor);
1808 IProcessObserver observer = IProcessObserver.Stub.asInterface(
1809 data.readStrongBinder());
1810 unregisterProcessObserver(observer);
1811 return true;
1812 }
1813
Dianne Hackborn36cd41f2011-05-25 21:00:46 -07001814 case GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION:
1815 {
1816 data.enforceInterface(IActivityManager.descriptor);
1817 String pkg = data.readString();
1818 boolean ask = getPackageAskScreenCompat(pkg);
1819 reply.writeNoException();
1820 reply.writeInt(ask ? 1 : 0);
1821 return true;
1822 }
1823
1824 case SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION:
1825 {
1826 data.enforceInterface(IActivityManager.descriptor);
1827 String pkg = data.readString();
1828 boolean ask = data.readInt() != 0;
1829 setPackageAskScreenCompat(pkg, ask);
1830 reply.writeNoException();
1831 return true;
1832 }
1833
Dianne Hackborn6c418d52011-06-29 14:05:33 -07001834 case IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION: {
1835 data.enforceInterface(IActivityManager.descriptor);
1836 IIntentSender r = IIntentSender.Stub.asInterface(
1837 data.readStrongBinder());
1838 boolean res = isIntentSenderTargetedToPackage(r);
1839 reply.writeNoException();
1840 reply.writeInt(res ? 1 : 0);
1841 return true;
1842 }
1843
Dianne Hackborn1927ae82012-06-22 15:21:36 -07001844 case IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION: {
1845 data.enforceInterface(IActivityManager.descriptor);
1846 IIntentSender r = IIntentSender.Stub.asInterface(
1847 data.readStrongBinder());
1848 boolean res = isIntentSenderAnActivity(r);
1849 reply.writeNoException();
1850 reply.writeInt(res ? 1 : 0);
1851 return true;
1852 }
1853
Dianne Hackborn81038902012-11-26 17:04:09 -08001854 case GET_INTENT_FOR_INTENT_SENDER_TRANSACTION: {
1855 data.enforceInterface(IActivityManager.descriptor);
1856 IIntentSender r = IIntentSender.Stub.asInterface(
1857 data.readStrongBinder());
1858 Intent intent = getIntentForIntentSender(r);
1859 reply.writeNoException();
1860 if (intent != null) {
1861 reply.writeInt(1);
1862 intent.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
1863 } else {
1864 reply.writeInt(0);
1865 }
1866 return true;
1867 }
1868
Dianne Hackborna1f1a3c2014-02-24 18:12:28 -08001869 case GET_TAG_FOR_INTENT_SENDER_TRANSACTION: {
1870 data.enforceInterface(IActivityManager.descriptor);
1871 IIntentSender r = IIntentSender.Stub.asInterface(
1872 data.readStrongBinder());
1873 String prefix = data.readString();
1874 String tag = getTagForIntentSender(r, prefix);
1875 reply.writeNoException();
1876 reply.writeString(tag);
1877 return true;
1878 }
1879
Dianne Hackborn31ca8542011-07-19 14:58:28 -07001880 case UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION: {
1881 data.enforceInterface(IActivityManager.descriptor);
1882 Configuration config = Configuration.CREATOR.createFromParcel(data);
1883 updatePersistentConfiguration(config);
1884 reply.writeNoException();
1885 return true;
1886 }
1887
Dianne Hackbornb437e092011-08-05 17:50:29 -07001888 case GET_PROCESS_PSS_TRANSACTION: {
1889 data.enforceInterface(IActivityManager.descriptor);
1890 int[] pids = data.createIntArray();
1891 long[] pss = getProcessPss(pids);
1892 reply.writeNoException();
1893 reply.writeLongArray(pss);
1894 return true;
1895 }
1896
Dianne Hackborn661cd522011-08-22 00:26:20 -07001897 case SHOW_BOOT_MESSAGE_TRANSACTION: {
1898 data.enforceInterface(IActivityManager.descriptor);
1899 CharSequence msg = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data);
1900 boolean always = data.readInt() != 0;
1901 showBootMessage(msg, always);
1902 reply.writeNoException();
1903 return true;
1904 }
1905
Dianne Hackborn90c52de2011-09-23 12:57:44 -07001906 case DISMISS_KEYGUARD_ON_NEXT_ACTIVITY_TRANSACTION: {
1907 data.enforceInterface(IActivityManager.descriptor);
1908 dismissKeyguardOnNextActivity();
1909 reply.writeNoException();
1910 return true;
1911 }
1912
Adam Powelldd8fab22012-03-22 17:47:27 -07001913 case TARGET_TASK_AFFINITY_MATCHES_ACTIVITY_TRANSACTION: {
1914 data.enforceInterface(IActivityManager.descriptor);
1915 IBinder token = data.readStrongBinder();
1916 String destAffinity = data.readString();
1917 boolean res = targetTaskAffinityMatchesActivity(token, destAffinity);
1918 reply.writeNoException();
1919 reply.writeInt(res ? 1 : 0);
1920 return true;
1921 }
1922
1923 case NAVIGATE_UP_TO_TRANSACTION: {
1924 data.enforceInterface(IActivityManager.descriptor);
1925 IBinder token = data.readStrongBinder();
1926 Intent target = Intent.CREATOR.createFromParcel(data);
1927 int resultCode = data.readInt();
1928 Intent resultData = null;
1929 if (data.readInt() != 0) {
1930 resultData = Intent.CREATOR.createFromParcel(data);
1931 }
1932 boolean res = navigateUpTo(token, target, resultCode, resultData);
1933 reply.writeNoException();
1934 reply.writeInt(res ? 1 : 0);
1935 return true;
1936 }
1937
Dianne Hackborn5320eb82012-05-18 12:05:04 -07001938 case GET_LAUNCHED_FROM_UID_TRANSACTION: {
1939 data.enforceInterface(IActivityManager.descriptor);
1940 IBinder token = data.readStrongBinder();
1941 int res = getLaunchedFromUid(token);
1942 reply.writeNoException();
1943 reply.writeInt(res);
1944 return true;
1945 }
1946
Dianne Hackbornf265ea92013-01-31 15:00:51 -08001947 case GET_LAUNCHED_FROM_PACKAGE_TRANSACTION: {
1948 data.enforceInterface(IActivityManager.descriptor);
1949 IBinder token = data.readStrongBinder();
1950 String res = getLaunchedFromPackage(token);
1951 reply.writeNoException();
1952 reply.writeString(res);
1953 return true;
1954 }
1955
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07001956 case REGISTER_USER_SWITCH_OBSERVER_TRANSACTION: {
1957 data.enforceInterface(IActivityManager.descriptor);
1958 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface(
1959 data.readStrongBinder());
1960 registerUserSwitchObserver(observer);
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07001961 reply.writeNoException();
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07001962 return true;
1963 }
1964
1965 case UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION: {
1966 data.enforceInterface(IActivityManager.descriptor);
1967 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface(
1968 data.readStrongBinder());
1969 unregisterUserSwitchObserver(observer);
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07001970 reply.writeNoException();
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07001971 return true;
1972 }
1973
Dianne Hackbornd4ac8d72012-09-27 23:20:10 -07001974 case REQUEST_BUG_REPORT_TRANSACTION: {
1975 data.enforceInterface(IActivityManager.descriptor);
1976 requestBugReport();
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07001977 reply.writeNoException();
1978 return true;
1979 }
1980
1981 case INPUT_DISPATCHING_TIMED_OUT_TRANSACTION: {
1982 data.enforceInterface(IActivityManager.descriptor);
1983 int pid = data.readInt();
1984 boolean aboveSystem = data.readInt() != 0;
Jeff Brownbd181bb2013-09-10 16:44:24 -07001985 String reason = data.readString();
1986 long res = inputDispatchingTimedOut(pid, aboveSystem, reason);
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07001987 reply.writeNoException();
1988 reply.writeLong(res);
Dianne Hackbornd4ac8d72012-09-27 23:20:10 -07001989 return true;
1990 }
1991
Adam Skorydfc7fd72013-08-05 19:23:41 -07001992 case GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION: {
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08001993 data.enforceInterface(IActivityManager.descriptor);
1994 int requestType = data.readInt();
Adam Skorydfc7fd72013-08-05 19:23:41 -07001995 Bundle res = getAssistContextExtras(requestType);
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08001996 reply.writeNoException();
1997 reply.writeBundle(res);
1998 return true;
1999 }
2000
Adam Skorydfc7fd72013-08-05 19:23:41 -07002001 case REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION: {
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08002002 data.enforceInterface(IActivityManager.descriptor);
2003 IBinder token = data.readStrongBinder();
2004 Bundle extras = data.readBundle();
Adam Skory7140a252013-09-11 12:04:58 +01002005 reportAssistContextExtras(token, extras);
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08002006 reply.writeNoException();
2007 return true;
2008 }
2009
Dianne Hackbornf1b78242013-04-08 22:28:59 -07002010 case KILL_UID_TRANSACTION: {
2011 data.enforceInterface(IActivityManager.descriptor);
2012 int uid = data.readInt();
2013 String reason = data.readString();
2014 killUid(uid, reason);
2015 reply.writeNoException();
2016 return true;
2017 }
2018
Dianne Hackborn8bd64df2013-05-06 16:07:26 -07002019 case HANG_TRANSACTION: {
2020 data.enforceInterface(IActivityManager.descriptor);
2021 IBinder who = data.readStrongBinder();
2022 boolean allowRestart = data.readInt() != 0;
2023 hang(who, allowRestart);
2024 reply.writeNoException();
2025 return true;
2026 }
2027
Dianne Hackborn2286cdc2013-07-01 19:10:06 -07002028 case REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION: {
2029 data.enforceInterface(IActivityManager.descriptor);
2030 IBinder token = data.readStrongBinder();
2031 reportActivityFullyDrawn(token);
2032 reply.writeNoException();
2033 return true;
2034 }
2035
Craig Mautner5eda9b32013-07-02 11:58:16 -07002036 case NOTIFY_ACTIVITY_DRAWN_TRANSACTION: {
2037 data.enforceInterface(IActivityManager.descriptor);
2038 IBinder token = data.readStrongBinder();
2039 notifyActivityDrawn(token);
2040 reply.writeNoException();
2041 return true;
2042 }
Dianne Hackborn57a7f592013-07-22 18:21:32 -07002043
2044 case RESTART_TRANSACTION: {
2045 data.enforceInterface(IActivityManager.descriptor);
2046 restart();
2047 reply.writeNoException();
2048 return true;
2049 }
Jeff Sharkey08da7a12013-08-11 20:53:18 -07002050
Dianne Hackborn35f72be2013-09-16 10:57:39 -07002051 case PERFORM_IDLE_MAINTENANCE_TRANSACTION: {
2052 data.enforceInterface(IActivityManager.descriptor);
2053 performIdleMaintenance();
2054 reply.writeNoException();
2055 return true;
2056 }
Craig Mautner4a1cb222013-12-04 16:14:06 -08002057
2058 case CREATE_ACTIVITY_CONTAINER_TRANSACTION: {
2059 data.enforceInterface(IActivityManager.descriptor);
2060 IBinder parentActivityToken = data.readStrongBinder();
2061 IActivityContainerCallback callback =
Craig Mautnere3a00d72014-04-16 08:31:19 -07002062 IActivityContainerCallback.Stub.asInterface(data.readStrongBinder());
Craig Mautner4a1cb222013-12-04 16:14:06 -08002063 IActivityContainer activityContainer =
2064 createActivityContainer(parentActivityToken, callback);
2065 reply.writeNoException();
Craig Mautnerbd503a42014-01-10 10:16:43 -08002066 if (activityContainer != null) {
2067 reply.writeInt(1);
2068 reply.writeStrongBinder(activityContainer.asBinder());
2069 } else {
2070 reply.writeInt(0);
2071 }
Craig Mautner4a1cb222013-12-04 16:14:06 -08002072 return true;
2073 }
2074
Craig Mautner95da1082014-02-24 17:54:35 -08002075 case DELETE_ACTIVITY_CONTAINER_TRANSACTION: {
2076 data.enforceInterface(IActivityManager.descriptor);
2077 IActivityContainer activityContainer =
2078 IActivityContainer.Stub.asInterface(data.readStrongBinder());
2079 deleteActivityContainer(activityContainer);
2080 reply.writeNoException();
2081 return true;
2082 }
2083
Craig Mautnere0a38842013-12-16 16:14:02 -08002084 case GET_ACTIVITY_CONTAINER_TRANSACTION: {
2085 data.enforceInterface(IActivityManager.descriptor);
2086 IBinder activityToken = data.readStrongBinder();
2087 IActivityContainer activityContainer = getEnclosingActivityContainer(activityToken);
2088 reply.writeNoException();
Craig Mautnerbd503a42014-01-10 10:16:43 -08002089 if (activityContainer != null) {
2090 reply.writeInt(1);
2091 reply.writeStrongBinder(activityContainer.asBinder());
2092 } else {
2093 reply.writeInt(0);
2094 }
Craig Mautnere0a38842013-12-16 16:14:02 -08002095 return true;
2096 }
2097
Craig Mautner4a1cb222013-12-04 16:14:06 -08002098 case GET_HOME_ACTIVITY_TOKEN_TRANSACTION: {
2099 data.enforceInterface(IActivityManager.descriptor);
2100 IBinder homeActivityToken = getHomeActivityToken();
2101 reply.writeNoException();
2102 reply.writeStrongBinder(homeActivityToken);
2103 return true;
2104 }
Craig Mautneraea74a52014-03-08 14:23:10 -08002105
2106 case START_LOCK_TASK_BY_TASK_ID_TRANSACTION: {
2107 data.enforceInterface(IActivityManager.descriptor);
2108 final int taskId = data.readInt();
2109 startLockTaskMode(taskId);
2110 reply.writeNoException();
2111 return true;
2112 }
2113
2114 case START_LOCK_TASK_BY_TOKEN_TRANSACTION: {
2115 data.enforceInterface(IActivityManager.descriptor);
2116 IBinder token = data.readStrongBinder();
2117 startLockTaskMode(token);
2118 reply.writeNoException();
2119 return true;
2120 }
2121
2122 case STOP_LOCK_TASK_MODE_TRANSACTION: {
2123 data.enforceInterface(IActivityManager.descriptor);
2124 stopLockTaskMode();
2125 reply.writeNoException();
2126 return true;
2127 }
2128
2129 case IS_IN_LOCK_TASK_MODE_TRANSACTION: {
2130 data.enforceInterface(IActivityManager.descriptor);
2131 final boolean isInLockTaskMode = isInLockTaskMode();
2132 reply.writeNoException();
2133 reply.writeInt(isInLockTaskMode ? 1 : 0);
2134 return true;
2135 }
Craig Mautner2fbd7542014-03-21 09:34:07 -07002136
Craig Mautner688b5102014-03-27 16:55:03 -07002137 case SET_ACTIVITY_LABEL_ICON_TRANSACTION: {
Craig Mautner2fbd7542014-03-21 09:34:07 -07002138 data.enforceInterface(IActivityManager.descriptor);
2139 IBinder token = data.readStrongBinder();
Craig Mautner688b5102014-03-27 16:55:03 -07002140 CharSequence activityLabel = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data);
2141 Bitmap activityIcon = data.readInt() > 0
Craig Mautner2fbd7542014-03-21 09:34:07 -07002142 ? Bitmap.CREATOR.createFromParcel(data) : null;
Craig Mautner688b5102014-03-27 16:55:03 -07002143 setActivityLabelAndIcon(token, activityLabel, activityIcon);
Craig Mautner2fbd7542014-03-21 09:34:07 -07002144 reply.writeNoException();
2145 return true;
2146 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002147 }
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08002148
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002149 return super.onTransact(code, data, reply, flags);
2150 }
2151
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08002152 public IBinder asBinder() {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002153 return this;
2154 }
2155
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08002156 private static final Singleton<IActivityManager> gDefault = new Singleton<IActivityManager>() {
2157 protected IActivityManager create() {
2158 IBinder b = ServiceManager.getService("activity");
Joe Onorato43a17652011-04-06 19:22:23 -07002159 if (false) {
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08002160 Log.v("ActivityManager", "default service binder = " + b);
2161 }
2162 IActivityManager am = asInterface(b);
Joe Onorato43a17652011-04-06 19:22:23 -07002163 if (false) {
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08002164 Log.v("ActivityManager", "default service = " + am);
2165 }
2166 return am;
2167 }
2168 };
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002169}
2170
2171class ActivityManagerProxy implements IActivityManager
2172{
2173 public ActivityManagerProxy(IBinder remote)
2174 {
2175 mRemote = remote;
2176 }
Siva Velusamy92a8b222012-03-09 16:24:04 -08002177
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002178 public IBinder asBinder()
2179 {
2180 return mRemote;
2181 }
Siva Velusamy92a8b222012-03-09 16:24:04 -08002182
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002183 public int startActivity(IApplicationThread caller, String callingPackage, Intent intent,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002184 String resolvedType, IBinder resultTo, String resultWho, int requestCode,
2185 int startFlags, String profileFile,
2186 ParcelFileDescriptor profileFd, Bundle options) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002187 Parcel data = Parcel.obtain();
2188 Parcel reply = Parcel.obtain();
2189 data.writeInterfaceToken(IActivityManager.descriptor);
2190 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002191 data.writeString(callingPackage);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002192 intent.writeToParcel(data, 0);
2193 data.writeString(resolvedType);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002194 data.writeStrongBinder(resultTo);
2195 data.writeString(resultWho);
2196 data.writeInt(requestCode);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002197 data.writeInt(startFlags);
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07002198 data.writeString(profileFile);
2199 if (profileFd != null) {
2200 data.writeInt(1);
2201 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
2202 } else {
2203 data.writeInt(0);
2204 }
Dianne Hackborna4972e92012-03-14 10:38:05 -07002205 if (options != null) {
2206 data.writeInt(1);
2207 options.writeToParcel(data, 0);
2208 } else {
2209 data.writeInt(0);
2210 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002211 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0);
2212 reply.readException();
2213 int result = reply.readInt();
2214 reply.recycle();
2215 data.recycle();
2216 return result;
2217 }
Amith Yamasani82644082012-08-03 13:09:11 -07002218
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002219 public int startActivityAsUser(IApplicationThread caller, String callingPackage, Intent intent,
Amith Yamasani82644082012-08-03 13:09:11 -07002220 String resolvedType, IBinder resultTo, String resultWho, int requestCode,
2221 int startFlags, String profileFile,
2222 ParcelFileDescriptor profileFd, Bundle options, int userId) throws RemoteException {
2223 Parcel data = Parcel.obtain();
2224 Parcel reply = Parcel.obtain();
2225 data.writeInterfaceToken(IActivityManager.descriptor);
2226 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002227 data.writeString(callingPackage);
Amith Yamasani82644082012-08-03 13:09:11 -07002228 intent.writeToParcel(data, 0);
2229 data.writeString(resolvedType);
2230 data.writeStrongBinder(resultTo);
2231 data.writeString(resultWho);
2232 data.writeInt(requestCode);
2233 data.writeInt(startFlags);
2234 data.writeString(profileFile);
2235 if (profileFd != null) {
2236 data.writeInt(1);
2237 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
2238 } else {
2239 data.writeInt(0);
2240 }
2241 if (options != null) {
2242 data.writeInt(1);
2243 options.writeToParcel(data, 0);
2244 } else {
2245 data.writeInt(0);
2246 }
2247 data.writeInt(userId);
2248 mRemote.transact(START_ACTIVITY_AS_USER_TRANSACTION, data, reply, 0);
2249 reply.readException();
2250 int result = reply.readInt();
2251 reply.recycle();
2252 data.recycle();
2253 return result;
2254 }
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002255 public WaitResult startActivityAndWait(IApplicationThread caller, String callingPackage,
2256 Intent intent, String resolvedType, IBinder resultTo, String resultWho,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002257 int requestCode, int startFlags, String profileFile,
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07002258 ParcelFileDescriptor profileFd, Bundle options, int userId) throws RemoteException {
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08002259 Parcel data = Parcel.obtain();
2260 Parcel reply = Parcel.obtain();
2261 data.writeInterfaceToken(IActivityManager.descriptor);
2262 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002263 data.writeString(callingPackage);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08002264 intent.writeToParcel(data, 0);
2265 data.writeString(resolvedType);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08002266 data.writeStrongBinder(resultTo);
2267 data.writeString(resultWho);
2268 data.writeInt(requestCode);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002269 data.writeInt(startFlags);
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07002270 data.writeString(profileFile);
2271 if (profileFd != null) {
2272 data.writeInt(1);
2273 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
2274 } else {
2275 data.writeInt(0);
2276 }
Dianne Hackborna4972e92012-03-14 10:38:05 -07002277 if (options != null) {
2278 data.writeInt(1);
2279 options.writeToParcel(data, 0);
2280 } else {
2281 data.writeInt(0);
2282 }
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07002283 data.writeInt(userId);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08002284 mRemote.transact(START_ACTIVITY_AND_WAIT_TRANSACTION, data, reply, 0);
2285 reply.readException();
2286 WaitResult result = WaitResult.CREATOR.createFromParcel(reply);
2287 reply.recycle();
2288 data.recycle();
2289 return result;
2290 }
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002291 public int startActivityWithConfig(IApplicationThread caller, String callingPackage,
2292 Intent intent, String resolvedType, IBinder resultTo, String resultWho,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002293 int requestCode, int startFlags, Configuration config,
Dianne Hackborn41203752012-08-31 14:05:51 -07002294 Bundle options, int userId) throws RemoteException {
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002295 Parcel data = Parcel.obtain();
2296 Parcel reply = Parcel.obtain();
2297 data.writeInterfaceToken(IActivityManager.descriptor);
2298 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002299 data.writeString(callingPackage);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002300 intent.writeToParcel(data, 0);
2301 data.writeString(resolvedType);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002302 data.writeStrongBinder(resultTo);
2303 data.writeString(resultWho);
2304 data.writeInt(requestCode);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002305 data.writeInt(startFlags);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002306 config.writeToParcel(data, 0);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002307 if (options != null) {
2308 data.writeInt(1);
2309 options.writeToParcel(data, 0);
2310 } else {
2311 data.writeInt(0);
2312 }
Dianne Hackborn41203752012-08-31 14:05:51 -07002313 data.writeInt(userId);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002314 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0);
2315 reply.readException();
2316 int result = reply.readInt();
2317 reply.recycle();
2318 data.recycle();
2319 return result;
2320 }
Dianne Hackbornfa82f222009-09-17 15:14:12 -07002321 public int startActivityIntentSender(IApplicationThread caller,
2322 IntentSender intent, Intent fillInIntent, String resolvedType,
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -07002323 IBinder resultTo, String resultWho, int requestCode,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002324 int flagsMask, int flagsValues, Bundle options) throws RemoteException {
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -07002325 Parcel data = Parcel.obtain();
2326 Parcel reply = Parcel.obtain();
2327 data.writeInterfaceToken(IActivityManager.descriptor);
2328 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2329 intent.writeToParcel(data, 0);
2330 if (fillInIntent != null) {
2331 data.writeInt(1);
2332 fillInIntent.writeToParcel(data, 0);
2333 } else {
2334 data.writeInt(0);
2335 }
2336 data.writeString(resolvedType);
2337 data.writeStrongBinder(resultTo);
2338 data.writeString(resultWho);
2339 data.writeInt(requestCode);
2340 data.writeInt(flagsMask);
2341 data.writeInt(flagsValues);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002342 if (options != null) {
2343 data.writeInt(1);
2344 options.writeToParcel(data, 0);
2345 } else {
2346 data.writeInt(0);
2347 }
Dianne Hackbornfa82f222009-09-17 15:14:12 -07002348 mRemote.transact(START_ACTIVITY_INTENT_SENDER_TRANSACTION, data, reply, 0);
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -07002349 reply.readException();
2350 int result = reply.readInt();
2351 reply.recycle();
2352 data.recycle();
2353 return result;
2354 }
Dianne Hackborn91097de2014-04-04 18:02:06 -07002355 public int startVoiceActivity(String callingPackage, int callingPid, int callingUid,
2356 Intent intent, String resolvedType, IVoiceInteractionSession session,
2357 IVoiceInteractor interactor, int startFlags, String profileFile,
2358 ParcelFileDescriptor profileFd, Bundle options, int userId) throws RemoteException {
2359 Parcel data = Parcel.obtain();
2360 Parcel reply = Parcel.obtain();
2361 data.writeInterfaceToken(IActivityManager.descriptor);
2362 data.writeString(callingPackage);
2363 data.writeInt(callingPid);
2364 data.writeInt(callingUid);
2365 intent.writeToParcel(data, 0);
2366 data.writeString(resolvedType);
2367 data.writeStrongBinder(session.asBinder());
2368 data.writeStrongBinder(interactor.asBinder());
2369 data.writeInt(startFlags);
2370 data.writeString(profileFile);
2371 if (profileFd != null) {
2372 data.writeInt(1);
2373 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
2374 } else {
2375 data.writeInt(0);
2376 }
2377 if (options != null) {
2378 data.writeInt(1);
2379 options.writeToParcel(data, 0);
2380 } else {
2381 data.writeInt(0);
2382 }
2383 data.writeInt(userId);
2384 mRemote.transact(START_VOICE_ACTIVITY_TRANSACTION, data, reply, 0);
2385 reply.readException();
2386 int result = reply.readInt();
2387 reply.recycle();
2388 data.recycle();
2389 return result;
2390 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002391 public boolean startNextMatchingActivity(IBinder callingActivity,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002392 Intent intent, Bundle options) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002393 Parcel data = Parcel.obtain();
2394 Parcel reply = Parcel.obtain();
2395 data.writeInterfaceToken(IActivityManager.descriptor);
2396 data.writeStrongBinder(callingActivity);
2397 intent.writeToParcel(data, 0);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002398 if (options != null) {
2399 data.writeInt(1);
2400 options.writeToParcel(data, 0);
2401 } else {
2402 data.writeInt(0);
2403 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002404 mRemote.transact(START_NEXT_MATCHING_ACTIVITY_TRANSACTION, data, reply, 0);
2405 reply.readException();
2406 int result = reply.readInt();
2407 reply.recycle();
2408 data.recycle();
2409 return result != 0;
2410 }
Winson Chung3b3f4642014-04-22 10:08:18 -07002411 public boolean finishActivity(IBinder token, int resultCode, Intent resultData, boolean finishTask)
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002412 throws RemoteException {
2413 Parcel data = Parcel.obtain();
2414 Parcel reply = Parcel.obtain();
2415 data.writeInterfaceToken(IActivityManager.descriptor);
2416 data.writeStrongBinder(token);
2417 data.writeInt(resultCode);
2418 if (resultData != null) {
2419 data.writeInt(1);
2420 resultData.writeToParcel(data, 0);
2421 } else {
2422 data.writeInt(0);
2423 }
Winson Chung3b3f4642014-04-22 10:08:18 -07002424 data.writeInt(finishTask ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002425 mRemote.transact(FINISH_ACTIVITY_TRANSACTION, data, reply, 0);
2426 reply.readException();
2427 boolean res = reply.readInt() != 0;
2428 data.recycle();
2429 reply.recycle();
2430 return res;
2431 }
2432 public void finishSubActivity(IBinder token, String resultWho, int requestCode) throws RemoteException
2433 {
2434 Parcel data = Parcel.obtain();
2435 Parcel reply = Parcel.obtain();
2436 data.writeInterfaceToken(IActivityManager.descriptor);
2437 data.writeStrongBinder(token);
2438 data.writeString(resultWho);
2439 data.writeInt(requestCode);
2440 mRemote.transact(FINISH_SUB_ACTIVITY_TRANSACTION, data, reply, 0);
2441 reply.readException();
2442 data.recycle();
2443 reply.recycle();
2444 }
Dianne Hackbornecc5a9c2012-04-26 18:56:09 -07002445 public boolean finishActivityAffinity(IBinder token) throws RemoteException {
2446 Parcel data = Parcel.obtain();
2447 Parcel reply = Parcel.obtain();
2448 data.writeInterfaceToken(IActivityManager.descriptor);
2449 data.writeStrongBinder(token);
2450 mRemote.transact(FINISH_ACTIVITY_AFFINITY_TRANSACTION, data, reply, 0);
2451 reply.readException();
2452 boolean res = reply.readInt() != 0;
2453 data.recycle();
2454 reply.recycle();
2455 return res;
2456 }
Dianne Hackborn061d58a2010-03-12 15:07:06 -08002457 public boolean willActivityBeVisible(IBinder token) throws RemoteException {
2458 Parcel data = Parcel.obtain();
2459 Parcel reply = Parcel.obtain();
2460 data.writeInterfaceToken(IActivityManager.descriptor);
2461 data.writeStrongBinder(token);
2462 mRemote.transact(WILL_ACTIVITY_BE_VISIBLE_TRANSACTION, data, reply, 0);
2463 reply.readException();
2464 boolean res = reply.readInt() != 0;
2465 data.recycle();
2466 reply.recycle();
2467 return res;
2468 }
Dianne Hackborn6c418d52011-06-29 14:05:33 -07002469 public Intent registerReceiver(IApplicationThread caller, String packageName,
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002470 IIntentReceiver receiver,
Dianne Hackborn20e80982012-08-31 19:00:44 -07002471 IntentFilter filter, String perm, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002472 {
2473 Parcel data = Parcel.obtain();
2474 Parcel reply = Parcel.obtain();
2475 data.writeInterfaceToken(IActivityManager.descriptor);
2476 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackborn6c418d52011-06-29 14:05:33 -07002477 data.writeString(packageName);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002478 data.writeStrongBinder(receiver != null ? receiver.asBinder() : null);
2479 filter.writeToParcel(data, 0);
2480 data.writeString(perm);
Dianne Hackborn20e80982012-08-31 19:00:44 -07002481 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002482 mRemote.transact(REGISTER_RECEIVER_TRANSACTION, data, reply, 0);
2483 reply.readException();
2484 Intent intent = null;
2485 int haveIntent = reply.readInt();
2486 if (haveIntent != 0) {
2487 intent = Intent.CREATOR.createFromParcel(reply);
2488 }
2489 reply.recycle();
2490 data.recycle();
2491 return intent;
2492 }
2493 public void unregisterReceiver(IIntentReceiver receiver) throws RemoteException
2494 {
2495 Parcel data = Parcel.obtain();
2496 Parcel reply = Parcel.obtain();
2497 data.writeInterfaceToken(IActivityManager.descriptor);
2498 data.writeStrongBinder(receiver.asBinder());
2499 mRemote.transact(UNREGISTER_RECEIVER_TRANSACTION, data, reply, 0);
2500 reply.readException();
2501 data.recycle();
2502 reply.recycle();
2503 }
2504 public int broadcastIntent(IApplicationThread caller,
2505 Intent intent, String resolvedType, IIntentReceiver resultTo,
2506 int resultCode, String resultData, Bundle map,
Dianne Hackbornf51f6122013-02-04 18:23:34 -08002507 String requiredPermission, int appOp, boolean serialized,
Amith Yamasani742a6712011-05-04 14:49:28 -07002508 boolean sticky, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002509 {
2510 Parcel data = Parcel.obtain();
2511 Parcel reply = Parcel.obtain();
2512 data.writeInterfaceToken(IActivityManager.descriptor);
2513 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2514 intent.writeToParcel(data, 0);
2515 data.writeString(resolvedType);
2516 data.writeStrongBinder(resultTo != null ? resultTo.asBinder() : null);
2517 data.writeInt(resultCode);
2518 data.writeString(resultData);
2519 data.writeBundle(map);
2520 data.writeString(requiredPermission);
Dianne Hackbornf51f6122013-02-04 18:23:34 -08002521 data.writeInt(appOp);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002522 data.writeInt(serialized ? 1 : 0);
2523 data.writeInt(sticky ? 1 : 0);
Amith Yamasani742a6712011-05-04 14:49:28 -07002524 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002525 mRemote.transact(BROADCAST_INTENT_TRANSACTION, data, reply, 0);
2526 reply.readException();
2527 int res = reply.readInt();
2528 reply.recycle();
2529 data.recycle();
2530 return res;
2531 }
Amith Yamasani742a6712011-05-04 14:49:28 -07002532 public void unbroadcastIntent(IApplicationThread caller, Intent intent, int userId)
2533 throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002534 {
2535 Parcel data = Parcel.obtain();
2536 Parcel reply = Parcel.obtain();
2537 data.writeInterfaceToken(IActivityManager.descriptor);
2538 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2539 intent.writeToParcel(data, 0);
Amith Yamasani742a6712011-05-04 14:49:28 -07002540 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002541 mRemote.transact(UNBROADCAST_INTENT_TRANSACTION, data, reply, 0);
2542 reply.readException();
2543 data.recycle();
2544 reply.recycle();
2545 }
2546 public void finishReceiver(IBinder who, int resultCode, String resultData, Bundle map, boolean abortBroadcast) throws RemoteException
2547 {
2548 Parcel data = Parcel.obtain();
2549 Parcel reply = Parcel.obtain();
2550 data.writeInterfaceToken(IActivityManager.descriptor);
2551 data.writeStrongBinder(who);
2552 data.writeInt(resultCode);
2553 data.writeString(resultData);
2554 data.writeBundle(map);
2555 data.writeInt(abortBroadcast ? 1 : 0);
2556 mRemote.transact(FINISH_RECEIVER_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2557 reply.readException();
2558 data.recycle();
2559 reply.recycle();
2560 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002561 public void attachApplication(IApplicationThread app) throws RemoteException
2562 {
2563 Parcel data = Parcel.obtain();
2564 Parcel reply = Parcel.obtain();
2565 data.writeInterfaceToken(IActivityManager.descriptor);
2566 data.writeStrongBinder(app.asBinder());
2567 mRemote.transact(ATTACH_APPLICATION_TRANSACTION, data, reply, 0);
2568 reply.readException();
2569 data.recycle();
2570 reply.recycle();
2571 }
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07002572 public void activityIdle(IBinder token, Configuration config, boolean stopProfiling)
2573 throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002574 {
2575 Parcel data = Parcel.obtain();
2576 Parcel reply = Parcel.obtain();
2577 data.writeInterfaceToken(IActivityManager.descriptor);
2578 data.writeStrongBinder(token);
Dianne Hackborne88846e2009-09-30 21:34:25 -07002579 if (config != null) {
2580 data.writeInt(1);
2581 config.writeToParcel(data, 0);
2582 } else {
2583 data.writeInt(0);
2584 }
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07002585 data.writeInt(stopProfiling ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002586 mRemote.transact(ACTIVITY_IDLE_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2587 reply.readException();
2588 data.recycle();
2589 reply.recycle();
2590 }
Dianne Hackbornad9b32112012-09-17 15:35:01 -07002591 public void activityResumed(IBinder token) throws RemoteException
2592 {
2593 Parcel data = Parcel.obtain();
2594 Parcel reply = Parcel.obtain();
2595 data.writeInterfaceToken(IActivityManager.descriptor);
2596 data.writeStrongBinder(token);
2597 mRemote.transact(ACTIVITY_RESUMED_TRANSACTION, data, reply, 0);
2598 reply.readException();
2599 data.recycle();
2600 reply.recycle();
2601 }
Dianne Hackborn0aae2d42010-12-07 23:51:29 -08002602 public void activityPaused(IBinder token) throws RemoteException
2603 {
2604 Parcel data = Parcel.obtain();
2605 Parcel reply = Parcel.obtain();
2606 data.writeInterfaceToken(IActivityManager.descriptor);
2607 data.writeStrongBinder(token);
2608 mRemote.transact(ACTIVITY_PAUSED_TRANSACTION, data, reply, 0);
2609 reply.readException();
2610 data.recycle();
2611 reply.recycle();
2612 }
2613 public void activityStopped(IBinder token, Bundle state,
2614 Bitmap thumbnail, CharSequence description) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002615 {
2616 Parcel data = Parcel.obtain();
2617 Parcel reply = Parcel.obtain();
2618 data.writeInterfaceToken(IActivityManager.descriptor);
2619 data.writeStrongBinder(token);
2620 data.writeBundle(state);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002621 if (thumbnail != null) {
2622 data.writeInt(1);
2623 thumbnail.writeToParcel(data, 0);
2624 } else {
2625 data.writeInt(0);
2626 }
2627 TextUtils.writeToParcel(description, data, 0);
2628 mRemote.transact(ACTIVITY_STOPPED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2629 reply.readException();
2630 data.recycle();
2631 reply.recycle();
2632 }
Dianne Hackborn4eba96b2011-01-21 13:34:36 -08002633 public void activitySlept(IBinder token) throws RemoteException
2634 {
2635 Parcel data = Parcel.obtain();
2636 Parcel reply = Parcel.obtain();
2637 data.writeInterfaceToken(IActivityManager.descriptor);
2638 data.writeStrongBinder(token);
2639 mRemote.transact(ACTIVITY_SLEPT_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2640 reply.readException();
2641 data.recycle();
2642 reply.recycle();
2643 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002644 public void activityDestroyed(IBinder token) throws RemoteException
2645 {
2646 Parcel data = Parcel.obtain();
2647 Parcel reply = Parcel.obtain();
2648 data.writeInterfaceToken(IActivityManager.descriptor);
2649 data.writeStrongBinder(token);
2650 mRemote.transact(ACTIVITY_DESTROYED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2651 reply.readException();
2652 data.recycle();
2653 reply.recycle();
2654 }
2655 public String getCallingPackage(IBinder token) throws RemoteException
2656 {
2657 Parcel data = Parcel.obtain();
2658 Parcel reply = Parcel.obtain();
2659 data.writeInterfaceToken(IActivityManager.descriptor);
2660 data.writeStrongBinder(token);
2661 mRemote.transact(GET_CALLING_PACKAGE_TRANSACTION, data, reply, 0);
2662 reply.readException();
2663 String res = reply.readString();
2664 data.recycle();
2665 reply.recycle();
2666 return res;
2667 }
2668 public ComponentName getCallingActivity(IBinder token)
2669 throws RemoteException {
2670 Parcel data = Parcel.obtain();
2671 Parcel reply = Parcel.obtain();
2672 data.writeInterfaceToken(IActivityManager.descriptor);
2673 data.writeStrongBinder(token);
2674 mRemote.transact(GET_CALLING_ACTIVITY_TRANSACTION, data, reply, 0);
2675 reply.readException();
2676 ComponentName res = ComponentName.readFromParcel(reply);
2677 data.recycle();
2678 reply.recycle();
2679 return res;
2680 }
2681 public List getTasks(int maxNum, int flags,
2682 IThumbnailReceiver receiver) throws RemoteException {
2683 Parcel data = Parcel.obtain();
2684 Parcel reply = Parcel.obtain();
2685 data.writeInterfaceToken(IActivityManager.descriptor);
2686 data.writeInt(maxNum);
2687 data.writeInt(flags);
2688 data.writeStrongBinder(receiver != null ? receiver.asBinder() : null);
2689 mRemote.transact(GET_TASKS_TRANSACTION, data, reply, 0);
2690 reply.readException();
2691 ArrayList list = null;
2692 int N = reply.readInt();
2693 if (N >= 0) {
2694 list = new ArrayList();
2695 while (N > 0) {
2696 ActivityManager.RunningTaskInfo info =
2697 ActivityManager.RunningTaskInfo.CREATOR
2698 .createFromParcel(reply);
2699 list.add(info);
2700 N--;
2701 }
2702 }
2703 data.recycle();
2704 reply.recycle();
2705 return list;
2706 }
2707 public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum,
Amith Yamasani82644082012-08-03 13:09:11 -07002708 int flags, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002709 Parcel data = Parcel.obtain();
2710 Parcel reply = Parcel.obtain();
2711 data.writeInterfaceToken(IActivityManager.descriptor);
2712 data.writeInt(maxNum);
2713 data.writeInt(flags);
Amith Yamasani82644082012-08-03 13:09:11 -07002714 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002715 mRemote.transact(GET_RECENT_TASKS_TRANSACTION, data, reply, 0);
2716 reply.readException();
2717 ArrayList<ActivityManager.RecentTaskInfo> list
2718 = reply.createTypedArrayList(ActivityManager.RecentTaskInfo.CREATOR);
2719 data.recycle();
2720 reply.recycle();
2721 return list;
2722 }
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002723 public ActivityManager.TaskThumbnails getTaskThumbnails(int id) throws RemoteException {
Dianne Hackbornd94df452011-02-16 18:53:31 -08002724 Parcel data = Parcel.obtain();
2725 Parcel reply = Parcel.obtain();
2726 data.writeInterfaceToken(IActivityManager.descriptor);
2727 data.writeInt(id);
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002728 mRemote.transact(GET_TASK_THUMBNAILS_TRANSACTION, data, reply, 0);
Dianne Hackbornd94df452011-02-16 18:53:31 -08002729 reply.readException();
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002730 ActivityManager.TaskThumbnails bm = null;
Dianne Hackbornd94df452011-02-16 18:53:31 -08002731 if (reply.readInt() != 0) {
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002732 bm = ActivityManager.TaskThumbnails.CREATOR.createFromParcel(reply);
Dianne Hackbornd94df452011-02-16 18:53:31 -08002733 }
2734 data.recycle();
2735 reply.recycle();
2736 return bm;
2737 }
Dianne Hackborn15491c62012-09-19 10:59:14 -07002738 public Bitmap getTaskTopThumbnail(int id) throws RemoteException {
2739 Parcel data = Parcel.obtain();
2740 Parcel reply = Parcel.obtain();
2741 data.writeInterfaceToken(IActivityManager.descriptor);
2742 data.writeInt(id);
2743 mRemote.transact(GET_TASK_TOP_THUMBNAIL_TRANSACTION, data, reply, 0);
2744 reply.readException();
2745 Bitmap bm = null;
2746 if (reply.readInt() != 0) {
2747 bm = Bitmap.CREATOR.createFromParcel(reply);
2748 }
2749 data.recycle();
2750 reply.recycle();
2751 return bm;
2752 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002753 public List getServices(int maxNum, int flags) throws RemoteException {
2754 Parcel data = Parcel.obtain();
2755 Parcel reply = Parcel.obtain();
2756 data.writeInterfaceToken(IActivityManager.descriptor);
2757 data.writeInt(maxNum);
2758 data.writeInt(flags);
2759 mRemote.transact(GET_SERVICES_TRANSACTION, data, reply, 0);
2760 reply.readException();
2761 ArrayList list = null;
2762 int N = reply.readInt();
2763 if (N >= 0) {
2764 list = new ArrayList();
2765 while (N > 0) {
2766 ActivityManager.RunningServiceInfo info =
2767 ActivityManager.RunningServiceInfo.CREATOR
2768 .createFromParcel(reply);
2769 list.add(info);
2770 N--;
2771 }
2772 }
2773 data.recycle();
2774 reply.recycle();
2775 return list;
2776 }
2777 public List<ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState()
2778 throws RemoteException {
2779 Parcel data = Parcel.obtain();
2780 Parcel reply = Parcel.obtain();
2781 data.writeInterfaceToken(IActivityManager.descriptor);
2782 mRemote.transact(GET_PROCESSES_IN_ERROR_STATE_TRANSACTION, data, reply, 0);
2783 reply.readException();
2784 ArrayList<ActivityManager.ProcessErrorStateInfo> list
2785 = reply.createTypedArrayList(ActivityManager.ProcessErrorStateInfo.CREATOR);
2786 data.recycle();
2787 reply.recycle();
2788 return list;
2789 }
2790 public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses()
2791 throws RemoteException {
2792 Parcel data = Parcel.obtain();
2793 Parcel reply = Parcel.obtain();
2794 data.writeInterfaceToken(IActivityManager.descriptor);
2795 mRemote.transact(GET_RUNNING_APP_PROCESSES_TRANSACTION, data, reply, 0);
2796 reply.readException();
2797 ArrayList<ActivityManager.RunningAppProcessInfo> list
2798 = reply.createTypedArrayList(ActivityManager.RunningAppProcessInfo.CREATOR);
2799 data.recycle();
2800 reply.recycle();
2801 return list;
2802 }
Suchi Amalapurapuf7f5dda2010-03-23 10:34:28 -07002803 public List<ApplicationInfo> getRunningExternalApplications()
2804 throws RemoteException {
2805 Parcel data = Parcel.obtain();
2806 Parcel reply = Parcel.obtain();
2807 data.writeInterfaceToken(IActivityManager.descriptor);
2808 mRemote.transact(GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION, data, reply, 0);
2809 reply.readException();
2810 ArrayList<ApplicationInfo> list
2811 = reply.createTypedArrayList(ApplicationInfo.CREATOR);
2812 data.recycle();
2813 reply.recycle();
2814 return list;
2815 }
Dianne Hackborn8078d8c2012-03-20 11:11:26 -07002816 public void moveTaskToFront(int task, int flags, Bundle options) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002817 {
2818 Parcel data = Parcel.obtain();
2819 Parcel reply = Parcel.obtain();
2820 data.writeInterfaceToken(IActivityManager.descriptor);
2821 data.writeInt(task);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08002822 data.writeInt(flags);
Dianne Hackborn8078d8c2012-03-20 11:11:26 -07002823 if (options != null) {
2824 data.writeInt(1);
2825 options.writeToParcel(data, 0);
2826 } else {
2827 data.writeInt(0);
2828 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002829 mRemote.transact(MOVE_TASK_TO_FRONT_TRANSACTION, data, reply, 0);
2830 reply.readException();
2831 data.recycle();
2832 reply.recycle();
2833 }
2834 public void moveTaskToBack(int task) throws RemoteException
2835 {
2836 Parcel data = Parcel.obtain();
2837 Parcel reply = Parcel.obtain();
2838 data.writeInterfaceToken(IActivityManager.descriptor);
2839 data.writeInt(task);
2840 mRemote.transact(MOVE_TASK_TO_BACK_TRANSACTION, data, reply, 0);
2841 reply.readException();
2842 data.recycle();
2843 reply.recycle();
2844 }
2845 public boolean moveActivityTaskToBack(IBinder token, boolean nonRoot)
2846 throws RemoteException {
2847 Parcel data = Parcel.obtain();
2848 Parcel reply = Parcel.obtain();
2849 data.writeInterfaceToken(IActivityManager.descriptor);
2850 data.writeStrongBinder(token);
2851 data.writeInt(nonRoot ? 1 : 0);
2852 mRemote.transact(MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION, data, reply, 0);
2853 reply.readException();
2854 boolean res = reply.readInt() != 0;
2855 data.recycle();
2856 reply.recycle();
2857 return res;
2858 }
2859 public void moveTaskBackwards(int task) throws RemoteException
2860 {
2861 Parcel data = Parcel.obtain();
2862 Parcel reply = Parcel.obtain();
2863 data.writeInterfaceToken(IActivityManager.descriptor);
2864 data.writeInt(task);
2865 mRemote.transact(MOVE_TASK_BACKWARDS_TRANSACTION, data, reply, 0);
2866 reply.readException();
2867 data.recycle();
2868 reply.recycle();
2869 }
Craig Mautnerc00204b2013-03-05 15:02:14 -08002870 @Override
Craig Mautnerc00204b2013-03-05 15:02:14 -08002871 public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException
2872 {
2873 Parcel data = Parcel.obtain();
2874 Parcel reply = Parcel.obtain();
Craig Mautner967212c2013-04-13 21:10:58 -07002875 data.writeInterfaceToken(IActivityManager.descriptor);
Craig Mautnerc00204b2013-03-05 15:02:14 -08002876 data.writeInt(taskId);
2877 data.writeInt(stackId);
2878 data.writeInt(toTop ? 1 : 0);
2879 mRemote.transact(MOVE_TASK_TO_STACK_TRANSACTION, data, reply, 0);
2880 reply.readException();
2881 data.recycle();
2882 reply.recycle();
2883 }
2884 @Override
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002885 public void resizeStack(int stackBoxId, Rect r) throws RemoteException
Craig Mautnerc00204b2013-03-05 15:02:14 -08002886 {
2887 Parcel data = Parcel.obtain();
2888 Parcel reply = Parcel.obtain();
Craig Mautner967212c2013-04-13 21:10:58 -07002889 data.writeInterfaceToken(IActivityManager.descriptor);
Craig Mautner5a449152013-05-24 15:49:29 -07002890 data.writeInt(stackBoxId);
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002891 r.writeToParcel(data, 0);
Craig Mautnercf910b02013-04-23 11:23:27 -07002892 mRemote.transact(RESIZE_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
Craig Mautnerc00204b2013-03-05 15:02:14 -08002893 reply.readException();
2894 data.recycle();
2895 reply.recycle();
2896 }
Craig Mautner967212c2013-04-13 21:10:58 -07002897 @Override
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002898 public List<StackInfo> getAllStackInfos() throws RemoteException
Craig Mautner5ff12102013-05-24 12:50:15 -07002899 {
2900 Parcel data = Parcel.obtain();
2901 Parcel reply = Parcel.obtain();
2902 data.writeInterfaceToken(IActivityManager.descriptor);
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002903 mRemote.transact(GET_ALL_STACK_INFOS_TRANSACTION, data, reply, 0);
Craig Mautner5ff12102013-05-24 12:50:15 -07002904 reply.readException();
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002905 ArrayList<StackInfo> list = reply.createTypedArrayList(StackInfo.CREATOR);
Craig Mautner967212c2013-04-13 21:10:58 -07002906 data.recycle();
2907 reply.recycle();
2908 return list;
2909 }
Craig Mautnercf910b02013-04-23 11:23:27 -07002910 @Override
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002911 public StackInfo getStackInfo(int stackId) throws RemoteException
Craig Mautnerfd1ce8d2013-06-17 16:15:42 -07002912 {
2913 Parcel data = Parcel.obtain();
2914 Parcel reply = Parcel.obtain();
2915 data.writeInterfaceToken(IActivityManager.descriptor);
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002916 data.writeInt(stackId);
2917 mRemote.transact(GET_STACK_INFO_TRANSACTION, data, reply, 0);
Craig Mautnerfd1ce8d2013-06-17 16:15:42 -07002918 reply.readException();
2919 int res = reply.readInt();
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002920 StackInfo info = null;
Craig Mautnerfd1ce8d2013-06-17 16:15:42 -07002921 if (res != 0) {
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002922 info = StackInfo.CREATOR.createFromParcel(reply);
Craig Mautnerfd1ce8d2013-06-17 16:15:42 -07002923 }
2924 data.recycle();
2925 reply.recycle();
2926 return info;
2927 }
2928 @Override
Winson Chung303e1ff2014-03-07 15:06:19 -08002929 public boolean isInHomeStack(int taskId) throws RemoteException {
2930 Parcel data = Parcel.obtain();
2931 Parcel reply = Parcel.obtain();
2932 data.writeInterfaceToken(IActivityManager.descriptor);
2933 data.writeInt(taskId);
2934 mRemote.transact(IS_IN_HOME_STACK_TRANSACTION, data, reply, 0);
2935 reply.readException();
2936 boolean isInHomeStack = reply.readInt() > 0;
2937 data.recycle();
2938 reply.recycle();
2939 return isInHomeStack;
2940 }
2941 @Override
Craig Mautnercf910b02013-04-23 11:23:27 -07002942 public void setFocusedStack(int stackId) throws RemoteException
2943 {
2944 Parcel data = Parcel.obtain();
2945 Parcel reply = Parcel.obtain();
2946 data.writeInterfaceToken(IActivityManager.descriptor);
2947 data.writeInt(stackId);
2948 mRemote.transact(SET_FOCUSED_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2949 reply.readException();
2950 data.recycle();
2951 reply.recycle();
2952 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002953 public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException
2954 {
2955 Parcel data = Parcel.obtain();
2956 Parcel reply = Parcel.obtain();
2957 data.writeInterfaceToken(IActivityManager.descriptor);
2958 data.writeStrongBinder(token);
2959 data.writeInt(onlyRoot ? 1 : 0);
2960 mRemote.transact(GET_TASK_FOR_ACTIVITY_TRANSACTION, data, reply, 0);
2961 reply.readException();
2962 int res = reply.readInt();
2963 data.recycle();
2964 reply.recycle();
2965 return res;
2966 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002967 public void reportThumbnail(IBinder token,
2968 Bitmap thumbnail, CharSequence description) throws RemoteException
2969 {
2970 Parcel data = Parcel.obtain();
2971 Parcel reply = Parcel.obtain();
2972 data.writeInterfaceToken(IActivityManager.descriptor);
2973 data.writeStrongBinder(token);
2974 if (thumbnail != null) {
2975 data.writeInt(1);
2976 thumbnail.writeToParcel(data, 0);
2977 } else {
2978 data.writeInt(0);
2979 }
2980 TextUtils.writeToParcel(description, data, 0);
2981 mRemote.transact(REPORT_THUMBNAIL_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2982 reply.readException();
2983 data.recycle();
2984 reply.recycle();
2985 }
2986 public ContentProviderHolder getContentProvider(IApplicationThread caller,
Jeff Sharkey6d515712012-09-20 16:06:08 -07002987 String name, int userId, boolean stable) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002988 Parcel data = Parcel.obtain();
2989 Parcel reply = Parcel.obtain();
2990 data.writeInterfaceToken(IActivityManager.descriptor);
2991 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2992 data.writeString(name);
Jeff Sharkey6d515712012-09-20 16:06:08 -07002993 data.writeInt(userId);
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07002994 data.writeInt(stable ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002995 mRemote.transact(GET_CONTENT_PROVIDER_TRANSACTION, data, reply, 0);
2996 reply.readException();
2997 int res = reply.readInt();
2998 ContentProviderHolder cph = null;
2999 if (res != 0) {
3000 cph = ContentProviderHolder.CREATOR.createFromParcel(reply);
3001 }
3002 data.recycle();
3003 reply.recycle();
3004 return cph;
3005 }
Jeff Sharkey6d515712012-09-20 16:06:08 -07003006 public ContentProviderHolder getContentProviderExternal(String name, int userId, IBinder token)
3007 throws RemoteException {
Svetoslav Ganov25872aa2012-02-03 19:19:09 -08003008 Parcel data = Parcel.obtain();
3009 Parcel reply = Parcel.obtain();
3010 data.writeInterfaceToken(IActivityManager.descriptor);
3011 data.writeString(name);
Jeff Sharkey6d515712012-09-20 16:06:08 -07003012 data.writeInt(userId);
Svetoslav Ganov25872aa2012-02-03 19:19:09 -08003013 data.writeStrongBinder(token);
3014 mRemote.transact(GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0);
3015 reply.readException();
3016 int res = reply.readInt();
3017 ContentProviderHolder cph = null;
3018 if (res != 0) {
3019 cph = ContentProviderHolder.CREATOR.createFromParcel(reply);
3020 }
3021 data.recycle();
3022 reply.recycle();
3023 return cph;
3024 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003025 public void publishContentProviders(IApplicationThread caller,
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07003026 List<ContentProviderHolder> providers) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003027 {
3028 Parcel data = Parcel.obtain();
3029 Parcel reply = Parcel.obtain();
3030 data.writeInterfaceToken(IActivityManager.descriptor);
3031 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
3032 data.writeTypedList(providers);
3033 mRemote.transact(PUBLISH_CONTENT_PROVIDERS_TRANSACTION, data, reply, 0);
3034 reply.readException();
3035 data.recycle();
3036 reply.recycle();
3037 }
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07003038 public boolean refContentProvider(IBinder connection, int stable, int unstable)
3039 throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003040 Parcel data = Parcel.obtain();
3041 Parcel reply = Parcel.obtain();
3042 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07003043 data.writeStrongBinder(connection);
3044 data.writeInt(stable);
3045 data.writeInt(unstable);
3046 mRemote.transact(REF_CONTENT_PROVIDER_TRANSACTION, data, reply, 0);
3047 reply.readException();
3048 boolean res = reply.readInt() != 0;
3049 data.recycle();
3050 reply.recycle();
3051 return res;
3052 }
Jeff Sharkey7aa76012013-09-30 14:26:27 -07003053
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07003054 public void unstableProviderDied(IBinder connection) throws RemoteException {
3055 Parcel data = Parcel.obtain();
3056 Parcel reply = Parcel.obtain();
3057 data.writeInterfaceToken(IActivityManager.descriptor);
3058 data.writeStrongBinder(connection);
3059 mRemote.transact(UNSTABLE_PROVIDER_DIED_TRANSACTION, data, reply, 0);
3060 reply.readException();
3061 data.recycle();
3062 reply.recycle();
3063 }
3064
Jeff Sharkey7aa76012013-09-30 14:26:27 -07003065 @Override
3066 public void appNotRespondingViaProvider(IBinder connection) throws RemoteException {
3067 Parcel data = Parcel.obtain();
3068 Parcel reply = Parcel.obtain();
3069 data.writeInterfaceToken(IActivityManager.descriptor);
3070 data.writeStrongBinder(connection);
3071 mRemote.transact(APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION, data, reply, 0);
3072 reply.readException();
3073 data.recycle();
3074 reply.recycle();
3075 }
3076
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07003077 public void removeContentProvider(IBinder connection, boolean stable) throws RemoteException {
3078 Parcel data = Parcel.obtain();
3079 Parcel reply = Parcel.obtain();
3080 data.writeInterfaceToken(IActivityManager.descriptor);
3081 data.writeStrongBinder(connection);
3082 data.writeInt(stable ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003083 mRemote.transact(REMOVE_CONTENT_PROVIDER_TRANSACTION, data, reply, 0);
3084 reply.readException();
3085 data.recycle();
3086 reply.recycle();
3087 }
Svetoslav Ganov25872aa2012-02-03 19:19:09 -08003088
3089 public void removeContentProviderExternal(String name, IBinder token) throws RemoteException {
3090 Parcel data = Parcel.obtain();
3091 Parcel reply = Parcel.obtain();
3092 data.writeInterfaceToken(IActivityManager.descriptor);
3093 data.writeString(name);
3094 data.writeStrongBinder(token);
3095 mRemote.transact(REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0);
3096 reply.readException();
3097 data.recycle();
3098 reply.recycle();
3099 }
3100
Dianne Hackborndd9b82c2009-09-03 00:18:47 -07003101 public PendingIntent getRunningServiceControlPanel(ComponentName service)
3102 throws RemoteException
3103 {
3104 Parcel data = Parcel.obtain();
3105 Parcel reply = Parcel.obtain();
3106 data.writeInterfaceToken(IActivityManager.descriptor);
3107 service.writeToParcel(data, 0);
3108 mRemote.transact(GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION, data, reply, 0);
3109 reply.readException();
3110 PendingIntent res = PendingIntent.readPendingIntentOrNullFromParcel(reply);
3111 data.recycle();
3112 reply.recycle();
3113 return res;
3114 }
3115
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003116 public ComponentName startService(IApplicationThread caller, Intent service,
Dianne Hackborn7767eac2012-08-23 18:25:40 -07003117 String resolvedType, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003118 {
3119 Parcel data = Parcel.obtain();
3120 Parcel reply = Parcel.obtain();
3121 data.writeInterfaceToken(IActivityManager.descriptor);
3122 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
3123 service.writeToParcel(data, 0);
3124 data.writeString(resolvedType);
Dianne Hackborn7767eac2012-08-23 18:25:40 -07003125 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003126 mRemote.transact(START_SERVICE_TRANSACTION, data, reply, 0);
3127 reply.readException();
3128 ComponentName res = ComponentName.readFromParcel(reply);
3129 data.recycle();
3130 reply.recycle();
3131 return res;
3132 }
3133 public int stopService(IApplicationThread caller, Intent service,
Dianne Hackborn7767eac2012-08-23 18:25:40 -07003134 String resolvedType, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003135 {
3136 Parcel data = Parcel.obtain();
3137 Parcel reply = Parcel.obtain();
3138 data.writeInterfaceToken(IActivityManager.descriptor);
3139 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
3140 service.writeToParcel(data, 0);
3141 data.writeString(resolvedType);
Dianne Hackborn7767eac2012-08-23 18:25:40 -07003142 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003143 mRemote.transact(STOP_SERVICE_TRANSACTION, data, reply, 0);
3144 reply.readException();
3145 int res = reply.readInt();
3146 reply.recycle();
3147 data.recycle();
3148 return res;
3149 }
3150 public boolean stopServiceToken(ComponentName className, IBinder token,
3151 int startId) throws RemoteException {
3152 Parcel data = Parcel.obtain();
3153 Parcel reply = Parcel.obtain();
3154 data.writeInterfaceToken(IActivityManager.descriptor);
3155 ComponentName.writeToParcel(className, data);
3156 data.writeStrongBinder(token);
3157 data.writeInt(startId);
3158 mRemote.transact(STOP_SERVICE_TOKEN_TRANSACTION, data, reply, 0);
3159 reply.readException();
3160 boolean res = reply.readInt() != 0;
3161 data.recycle();
3162 reply.recycle();
3163 return res;
3164 }
3165 public void setServiceForeground(ComponentName className, IBinder token,
Dianne Hackbornd8a43f62009-08-17 23:33:56 -07003166 int id, Notification notification, boolean removeNotification) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003167 Parcel data = Parcel.obtain();
3168 Parcel reply = Parcel.obtain();
3169 data.writeInterfaceToken(IActivityManager.descriptor);
3170 ComponentName.writeToParcel(className, data);
3171 data.writeStrongBinder(token);
Dianne Hackbornd8a43f62009-08-17 23:33:56 -07003172 data.writeInt(id);
3173 if (notification != null) {
3174 data.writeInt(1);
3175 notification.writeToParcel(data, 0);
3176 } else {
3177 data.writeInt(0);
3178 }
3179 data.writeInt(removeNotification ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003180 mRemote.transact(SET_SERVICE_FOREGROUND_TRANSACTION, data, reply, 0);
3181 reply.readException();
3182 data.recycle();
3183 reply.recycle();
3184 }
3185 public int bindService(IApplicationThread caller, IBinder token,
3186 Intent service, String resolvedType, IServiceConnection connection,
Amith Yamasani37ce3a82012-02-06 12:04:42 -08003187 int flags, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003188 Parcel data = Parcel.obtain();
3189 Parcel reply = Parcel.obtain();
3190 data.writeInterfaceToken(IActivityManager.descriptor);
3191 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
3192 data.writeStrongBinder(token);
3193 service.writeToParcel(data, 0);
3194 data.writeString(resolvedType);
3195 data.writeStrongBinder(connection.asBinder());
3196 data.writeInt(flags);
Amith Yamasani37ce3a82012-02-06 12:04:42 -08003197 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003198 mRemote.transact(BIND_SERVICE_TRANSACTION, data, reply, 0);
3199 reply.readException();
3200 int res = reply.readInt();
3201 data.recycle();
3202 reply.recycle();
3203 return res;
3204 }
3205 public boolean unbindService(IServiceConnection connection) throws RemoteException
3206 {
3207 Parcel data = Parcel.obtain();
3208 Parcel reply = Parcel.obtain();
3209 data.writeInterfaceToken(IActivityManager.descriptor);
3210 data.writeStrongBinder(connection.asBinder());
3211 mRemote.transact(UNBIND_SERVICE_TRANSACTION, data, reply, 0);
3212 reply.readException();
3213 boolean res = reply.readInt() != 0;
3214 data.recycle();
3215 reply.recycle();
3216 return res;
3217 }
3218
3219 public void publishService(IBinder token,
3220 Intent intent, IBinder service) throws RemoteException {
3221 Parcel data = Parcel.obtain();
3222 Parcel reply = Parcel.obtain();
3223 data.writeInterfaceToken(IActivityManager.descriptor);
3224 data.writeStrongBinder(token);
3225 intent.writeToParcel(data, 0);
3226 data.writeStrongBinder(service);
3227 mRemote.transact(PUBLISH_SERVICE_TRANSACTION, data, reply, 0);
3228 reply.readException();
3229 data.recycle();
3230 reply.recycle();
3231 }
3232
3233 public void unbindFinished(IBinder token, Intent intent, boolean doRebind)
3234 throws RemoteException {
3235 Parcel data = Parcel.obtain();
3236 Parcel reply = Parcel.obtain();
3237 data.writeInterfaceToken(IActivityManager.descriptor);
3238 data.writeStrongBinder(token);
3239 intent.writeToParcel(data, 0);
3240 data.writeInt(doRebind ? 1 : 0);
3241 mRemote.transact(UNBIND_FINISHED_TRANSACTION, data, reply, 0);
3242 reply.readException();
3243 data.recycle();
3244 reply.recycle();
3245 }
3246
Dianne Hackbornf6f9f2d2009-08-21 16:26:03 -07003247 public void serviceDoneExecuting(IBinder token, int type, int startId,
3248 int res) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003249 Parcel data = Parcel.obtain();
3250 Parcel reply = Parcel.obtain();
3251 data.writeInterfaceToken(IActivityManager.descriptor);
3252 data.writeStrongBinder(token);
Dianne Hackbornf6f9f2d2009-08-21 16:26:03 -07003253 data.writeInt(type);
3254 data.writeInt(startId);
3255 data.writeInt(res);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003256 mRemote.transact(SERVICE_DONE_EXECUTING_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
3257 reply.readException();
3258 data.recycle();
3259 reply.recycle();
3260 }
3261
3262 public IBinder peekService(Intent service, String resolvedType) throws RemoteException {
3263 Parcel data = Parcel.obtain();
3264 Parcel reply = Parcel.obtain();
3265 data.writeInterfaceToken(IActivityManager.descriptor);
3266 service.writeToParcel(data, 0);
3267 data.writeString(resolvedType);
3268 mRemote.transact(PEEK_SERVICE_TRANSACTION, data, reply, 0);
3269 reply.readException();
3270 IBinder binder = reply.readStrongBinder();
3271 reply.recycle();
3272 data.recycle();
3273 return binder;
3274 }
3275
Christopher Tate181fafa2009-05-14 11:12:14 -07003276 public boolean bindBackupAgent(ApplicationInfo app, int backupRestoreMode)
3277 throws RemoteException {
3278 Parcel data = Parcel.obtain();
3279 Parcel reply = Parcel.obtain();
3280 data.writeInterfaceToken(IActivityManager.descriptor);
3281 app.writeToParcel(data, 0);
3282 data.writeInt(backupRestoreMode);
3283 mRemote.transact(START_BACKUP_AGENT_TRANSACTION, data, reply, 0);
3284 reply.readException();
3285 boolean success = reply.readInt() != 0;
3286 reply.recycle();
3287 data.recycle();
3288 return success;
3289 }
3290
Christopher Tate346acb12012-10-15 19:20:25 -07003291 public void clearPendingBackup() throws RemoteException {
3292 Parcel data = Parcel.obtain();
3293 Parcel reply = Parcel.obtain();
3294 data.writeInterfaceToken(IActivityManager.descriptor);
3295 mRemote.transact(CLEAR_PENDING_BACKUP_TRANSACTION, data, reply, 0);
3296 reply.recycle();
3297 data.recycle();
3298 }
3299
Christopher Tate181fafa2009-05-14 11:12:14 -07003300 public void backupAgentCreated(String packageName, IBinder agent) throws RemoteException {
3301 Parcel data = Parcel.obtain();
3302 Parcel reply = Parcel.obtain();
3303 data.writeInterfaceToken(IActivityManager.descriptor);
3304 data.writeString(packageName);
3305 data.writeStrongBinder(agent);
3306 mRemote.transact(BACKUP_AGENT_CREATED_TRANSACTION, data, reply, 0);
3307 reply.recycle();
3308 data.recycle();
3309 }
3310
3311 public void unbindBackupAgent(ApplicationInfo app) throws RemoteException {
3312 Parcel data = Parcel.obtain();
3313 Parcel reply = Parcel.obtain();
3314 data.writeInterfaceToken(IActivityManager.descriptor);
3315 app.writeToParcel(data, 0);
3316 mRemote.transact(UNBIND_BACKUP_AGENT_TRANSACTION, data, reply, 0);
3317 reply.readException();
3318 reply.recycle();
3319 data.recycle();
3320 }
3321
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003322 public boolean startInstrumentation(ComponentName className, String profileFile,
Svetoslav Ganov80943d82013-01-02 10:25:37 -08003323 int flags, Bundle arguments, IInstrumentationWatcher watcher,
3324 IUiAutomationConnection connection, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003325 Parcel data = Parcel.obtain();
3326 Parcel reply = Parcel.obtain();
3327 data.writeInterfaceToken(IActivityManager.descriptor);
3328 ComponentName.writeToParcel(className, data);
3329 data.writeString(profileFile);
3330 data.writeInt(flags);
3331 data.writeBundle(arguments);
3332 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null);
Svetoslav Ganov80943d82013-01-02 10:25:37 -08003333 data.writeStrongBinder(connection != null ? connection.asBinder() : null);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003334 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003335 mRemote.transact(START_INSTRUMENTATION_TRANSACTION, data, reply, 0);
3336 reply.readException();
3337 boolean res = reply.readInt() != 0;
3338 reply.recycle();
3339 data.recycle();
3340 return res;
3341 }
3342
3343 public void finishInstrumentation(IApplicationThread target,
3344 int resultCode, Bundle results) throws RemoteException {
3345 Parcel data = Parcel.obtain();
3346 Parcel reply = Parcel.obtain();
3347 data.writeInterfaceToken(IActivityManager.descriptor);
3348 data.writeStrongBinder(target != null ? target.asBinder() : null);
3349 data.writeInt(resultCode);
3350 data.writeBundle(results);
3351 mRemote.transact(FINISH_INSTRUMENTATION_TRANSACTION, data, reply, 0);
3352 reply.readException();
3353 data.recycle();
3354 reply.recycle();
3355 }
3356 public Configuration getConfiguration() throws RemoteException
3357 {
3358 Parcel data = Parcel.obtain();
3359 Parcel reply = Parcel.obtain();
3360 data.writeInterfaceToken(IActivityManager.descriptor);
3361 mRemote.transact(GET_CONFIGURATION_TRANSACTION, data, reply, 0);
3362 reply.readException();
3363 Configuration res = Configuration.CREATOR.createFromParcel(reply);
3364 reply.recycle();
3365 data.recycle();
3366 return res;
3367 }
3368 public void updateConfiguration(Configuration values) throws RemoteException
3369 {
3370 Parcel data = Parcel.obtain();
3371 Parcel reply = Parcel.obtain();
3372 data.writeInterfaceToken(IActivityManager.descriptor);
3373 values.writeToParcel(data, 0);
3374 mRemote.transact(UPDATE_CONFIGURATION_TRANSACTION, data, reply, 0);
3375 reply.readException();
3376 data.recycle();
3377 reply.recycle();
3378 }
3379 public void setRequestedOrientation(IBinder token, int requestedOrientation)
3380 throws RemoteException {
3381 Parcel data = Parcel.obtain();
3382 Parcel reply = Parcel.obtain();
3383 data.writeInterfaceToken(IActivityManager.descriptor);
3384 data.writeStrongBinder(token);
3385 data.writeInt(requestedOrientation);
3386 mRemote.transact(SET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0);
3387 reply.readException();
3388 data.recycle();
3389 reply.recycle();
3390 }
3391 public int getRequestedOrientation(IBinder token) throws RemoteException {
3392 Parcel data = Parcel.obtain();
3393 Parcel reply = Parcel.obtain();
3394 data.writeInterfaceToken(IActivityManager.descriptor);
3395 data.writeStrongBinder(token);
3396 mRemote.transact(GET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0);
3397 reply.readException();
3398 int res = reply.readInt();
3399 data.recycle();
3400 reply.recycle();
3401 return res;
3402 }
3403 public ComponentName getActivityClassForToken(IBinder token)
3404 throws RemoteException {
3405 Parcel data = Parcel.obtain();
3406 Parcel reply = Parcel.obtain();
3407 data.writeInterfaceToken(IActivityManager.descriptor);
3408 data.writeStrongBinder(token);
3409 mRemote.transact(GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION, data, reply, 0);
3410 reply.readException();
3411 ComponentName res = ComponentName.readFromParcel(reply);
3412 data.recycle();
3413 reply.recycle();
3414 return res;
3415 }
3416 public String getPackageForToken(IBinder token) throws RemoteException
3417 {
3418 Parcel data = Parcel.obtain();
3419 Parcel reply = Parcel.obtain();
3420 data.writeInterfaceToken(IActivityManager.descriptor);
3421 data.writeStrongBinder(token);
3422 mRemote.transact(GET_PACKAGE_FOR_TOKEN_TRANSACTION, data, reply, 0);
3423 reply.readException();
3424 String res = reply.readString();
3425 data.recycle();
3426 reply.recycle();
3427 return res;
3428 }
3429 public IIntentSender getIntentSender(int type,
3430 String packageName, IBinder token, String resultWho,
Dianne Hackborn7a2195c2012-03-19 17:38:00 -07003431 int requestCode, Intent[] intents, String[] resolvedTypes, int flags,
Dianne Hackborn41203752012-08-31 14:05:51 -07003432 Bundle options, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003433 Parcel data = Parcel.obtain();
3434 Parcel reply = Parcel.obtain();
3435 data.writeInterfaceToken(IActivityManager.descriptor);
3436 data.writeInt(type);
3437 data.writeString(packageName);
3438 data.writeStrongBinder(token);
3439 data.writeString(resultWho);
3440 data.writeInt(requestCode);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08003441 if (intents != null) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003442 data.writeInt(1);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08003443 data.writeTypedArray(intents, 0);
3444 data.writeStringArray(resolvedTypes);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003445 } else {
3446 data.writeInt(0);
3447 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003448 data.writeInt(flags);
Dianne Hackborn7a2195c2012-03-19 17:38:00 -07003449 if (options != null) {
3450 data.writeInt(1);
3451 options.writeToParcel(data, 0);
3452 } else {
3453 data.writeInt(0);
3454 }
Dianne Hackborn41203752012-08-31 14:05:51 -07003455 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003456 mRemote.transact(GET_INTENT_SENDER_TRANSACTION, data, reply, 0);
3457 reply.readException();
3458 IIntentSender res = IIntentSender.Stub.asInterface(
3459 reply.readStrongBinder());
3460 data.recycle();
3461 reply.recycle();
3462 return res;
3463 }
3464 public void cancelIntentSender(IIntentSender sender) throws RemoteException {
3465 Parcel data = Parcel.obtain();
3466 Parcel reply = Parcel.obtain();
3467 data.writeInterfaceToken(IActivityManager.descriptor);
3468 data.writeStrongBinder(sender.asBinder());
3469 mRemote.transact(CANCEL_INTENT_SENDER_TRANSACTION, data, reply, 0);
3470 reply.readException();
3471 data.recycle();
3472 reply.recycle();
3473 }
3474 public String getPackageForIntentSender(IIntentSender sender) throws RemoteException {
3475 Parcel data = Parcel.obtain();
3476 Parcel reply = Parcel.obtain();
3477 data.writeInterfaceToken(IActivityManager.descriptor);
3478 data.writeStrongBinder(sender.asBinder());
3479 mRemote.transact(GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0);
3480 reply.readException();
3481 String res = reply.readString();
3482 data.recycle();
3483 reply.recycle();
3484 return res;
3485 }
Christopher Tatec4a07d12012-04-06 14:19:13 -07003486 public int getUidForIntentSender(IIntentSender sender) throws RemoteException {
3487 Parcel data = Parcel.obtain();
3488 Parcel reply = Parcel.obtain();
3489 data.writeInterfaceToken(IActivityManager.descriptor);
3490 data.writeStrongBinder(sender.asBinder());
3491 mRemote.transact(GET_UID_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0);
3492 reply.readException();
3493 int res = reply.readInt();
3494 data.recycle();
3495 reply.recycle();
3496 return res;
3497 }
Dianne Hackborn41203752012-08-31 14:05:51 -07003498 public int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll,
3499 boolean requireFull, String name, String callerPackage) throws RemoteException {
3500 Parcel data = Parcel.obtain();
3501 Parcel reply = Parcel.obtain();
3502 data.writeInterfaceToken(IActivityManager.descriptor);
3503 data.writeInt(callingPid);
3504 data.writeInt(callingUid);
3505 data.writeInt(userId);
3506 data.writeInt(allowAll ? 1 : 0);
3507 data.writeInt(requireFull ? 1 : 0);
3508 data.writeString(name);
3509 data.writeString(callerPackage);
3510 mRemote.transact(HANDLE_INCOMING_USER_TRANSACTION, data, reply, 0);
3511 reply.readException();
3512 int res = reply.readInt();
3513 data.recycle();
3514 reply.recycle();
3515 return res;
3516 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003517 public void setProcessLimit(int max) throws RemoteException
3518 {
3519 Parcel data = Parcel.obtain();
3520 Parcel reply = Parcel.obtain();
3521 data.writeInterfaceToken(IActivityManager.descriptor);
3522 data.writeInt(max);
3523 mRemote.transact(SET_PROCESS_LIMIT_TRANSACTION, data, reply, 0);
3524 reply.readException();
3525 data.recycle();
3526 reply.recycle();
3527 }
3528 public int getProcessLimit() throws RemoteException
3529 {
3530 Parcel data = Parcel.obtain();
3531 Parcel reply = Parcel.obtain();
3532 data.writeInterfaceToken(IActivityManager.descriptor);
3533 mRemote.transact(GET_PROCESS_LIMIT_TRANSACTION, data, reply, 0);
3534 reply.readException();
3535 int res = reply.readInt();
3536 data.recycle();
3537 reply.recycle();
3538 return res;
3539 }
3540 public void setProcessForeground(IBinder token, int pid,
3541 boolean isForeground) throws RemoteException {
3542 Parcel data = Parcel.obtain();
3543 Parcel reply = Parcel.obtain();
3544 data.writeInterfaceToken(IActivityManager.descriptor);
3545 data.writeStrongBinder(token);
3546 data.writeInt(pid);
3547 data.writeInt(isForeground ? 1 : 0);
3548 mRemote.transact(SET_PROCESS_FOREGROUND_TRANSACTION, data, reply, 0);
3549 reply.readException();
3550 data.recycle();
3551 reply.recycle();
3552 }
3553 public int checkPermission(String permission, int pid, int uid)
3554 throws RemoteException {
3555 Parcel data = Parcel.obtain();
3556 Parcel reply = Parcel.obtain();
3557 data.writeInterfaceToken(IActivityManager.descriptor);
3558 data.writeString(permission);
3559 data.writeInt(pid);
3560 data.writeInt(uid);
3561 mRemote.transact(CHECK_PERMISSION_TRANSACTION, data, reply, 0);
3562 reply.readException();
3563 int res = reply.readInt();
3564 data.recycle();
3565 reply.recycle();
3566 return res;
3567 }
3568 public boolean clearApplicationUserData(final String packageName,
Amith Yamasani742a6712011-05-04 14:49:28 -07003569 final IPackageDataObserver observer, final int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003570 Parcel data = Parcel.obtain();
3571 Parcel reply = Parcel.obtain();
3572 data.writeInterfaceToken(IActivityManager.descriptor);
3573 data.writeString(packageName);
Christopher Tate31b65f92013-09-09 14:17:27 -07003574 data.writeStrongBinder((observer != null) ? observer.asBinder() : null);
Amith Yamasani742a6712011-05-04 14:49:28 -07003575 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003576 mRemote.transact(CLEAR_APP_DATA_TRANSACTION, data, reply, 0);
3577 reply.readException();
3578 boolean res = reply.readInt() != 0;
3579 data.recycle();
3580 reply.recycle();
3581 return res;
3582 }
3583 public int checkUriPermission(Uri uri, int pid, int uid, int mode)
3584 throws RemoteException {
3585 Parcel data = Parcel.obtain();
3586 Parcel reply = Parcel.obtain();
3587 data.writeInterfaceToken(IActivityManager.descriptor);
3588 uri.writeToParcel(data, 0);
3589 data.writeInt(pid);
3590 data.writeInt(uid);
3591 data.writeInt(mode);
3592 mRemote.transact(CHECK_URI_PERMISSION_TRANSACTION, data, reply, 0);
3593 reply.readException();
3594 int res = reply.readInt();
3595 data.recycle();
3596 reply.recycle();
3597 return res;
3598 }
3599 public void grantUriPermission(IApplicationThread caller, String targetPkg,
3600 Uri uri, int mode) throws RemoteException {
3601 Parcel data = Parcel.obtain();
3602 Parcel reply = Parcel.obtain();
3603 data.writeInterfaceToken(IActivityManager.descriptor);
3604 data.writeStrongBinder(caller.asBinder());
3605 data.writeString(targetPkg);
3606 uri.writeToParcel(data, 0);
3607 data.writeInt(mode);
3608 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0);
3609 reply.readException();
3610 data.recycle();
3611 reply.recycle();
3612 }
3613 public void revokeUriPermission(IApplicationThread caller, Uri uri,
3614 int mode) throws RemoteException {
3615 Parcel data = Parcel.obtain();
3616 Parcel reply = Parcel.obtain();
3617 data.writeInterfaceToken(IActivityManager.descriptor);
3618 data.writeStrongBinder(caller.asBinder());
3619 uri.writeToParcel(data, 0);
3620 data.writeInt(mode);
3621 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0);
3622 reply.readException();
3623 data.recycle();
3624 reply.recycle();
3625 }
Jeff Sharkeye66c1772013-09-20 14:30:59 -07003626
3627 @Override
3628 public void takePersistableUriPermission(Uri uri, int mode) throws RemoteException {
3629 Parcel data = Parcel.obtain();
3630 Parcel reply = Parcel.obtain();
3631 data.writeInterfaceToken(IActivityManager.descriptor);
3632 uri.writeToParcel(data, 0);
3633 data.writeInt(mode);
3634 mRemote.transact(TAKE_PERSISTABLE_URI_PERMISSION_TRANSACTION, data, reply, 0);
3635 reply.readException();
3636 data.recycle();
3637 reply.recycle();
3638 }
3639
3640 @Override
3641 public void releasePersistableUriPermission(Uri uri, int mode) throws RemoteException {
3642 Parcel data = Parcel.obtain();
3643 Parcel reply = Parcel.obtain();
3644 data.writeInterfaceToken(IActivityManager.descriptor);
3645 uri.writeToParcel(data, 0);
3646 data.writeInt(mode);
3647 mRemote.transact(RELEASE_PERSISTABLE_URI_PERMISSION_TRANSACTION, data, reply, 0);
3648 reply.readException();
3649 data.recycle();
3650 reply.recycle();
3651 }
3652
3653 @Override
Jeff Sharkeybcaac0a2013-10-09 14:21:08 -07003654 public ParceledListSlice<UriPermission> getPersistedUriPermissions(
3655 String packageName, boolean incoming) throws RemoteException {
Jeff Sharkeye66c1772013-09-20 14:30:59 -07003656 Parcel data = Parcel.obtain();
3657 Parcel reply = Parcel.obtain();
3658 data.writeInterfaceToken(IActivityManager.descriptor);
Jeff Sharkeybcaac0a2013-10-09 14:21:08 -07003659 data.writeString(packageName);
3660 data.writeInt(incoming ? 1 : 0);
Jeff Sharkeye66c1772013-09-20 14:30:59 -07003661 mRemote.transact(GET_PERSISTED_URI_PERMISSIONS_TRANSACTION, data, reply, 0);
3662 reply.readException();
3663 final ParceledListSlice<UriPermission> perms = ParceledListSlice.CREATOR.createFromParcel(
3664 reply);
3665 data.recycle();
3666 reply.recycle();
3667 return perms;
3668 }
3669
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003670 public void showWaitingForDebugger(IApplicationThread who, boolean waiting)
3671 throws RemoteException {
3672 Parcel data = Parcel.obtain();
3673 Parcel reply = Parcel.obtain();
3674 data.writeInterfaceToken(IActivityManager.descriptor);
3675 data.writeStrongBinder(who.asBinder());
3676 data.writeInt(waiting ? 1 : 0);
3677 mRemote.transact(SHOW_WAITING_FOR_DEBUGGER_TRANSACTION, data, reply, 0);
3678 reply.readException();
3679 data.recycle();
3680 reply.recycle();
3681 }
3682 public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) throws RemoteException {
3683 Parcel data = Parcel.obtain();
3684 Parcel reply = Parcel.obtain();
3685 data.writeInterfaceToken(IActivityManager.descriptor);
3686 mRemote.transact(GET_MEMORY_INFO_TRANSACTION, data, reply, 0);
3687 reply.readException();
3688 outInfo.readFromParcel(reply);
3689 data.recycle();
3690 reply.recycle();
3691 }
3692 public void unhandledBack() throws RemoteException
3693 {
3694 Parcel data = Parcel.obtain();
3695 Parcel reply = Parcel.obtain();
3696 data.writeInterfaceToken(IActivityManager.descriptor);
3697 mRemote.transact(UNHANDLED_BACK_TRANSACTION, data, reply, 0);
3698 reply.readException();
3699 data.recycle();
3700 reply.recycle();
3701 }
3702 public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException
3703 {
3704 Parcel data = Parcel.obtain();
3705 Parcel reply = Parcel.obtain();
3706 data.writeInterfaceToken(IActivityManager.descriptor);
3707 mRemote.transact(OPEN_CONTENT_URI_TRANSACTION, data, reply, 0);
3708 reply.readException();
3709 ParcelFileDescriptor pfd = null;
3710 if (reply.readInt() != 0) {
3711 pfd = ParcelFileDescriptor.CREATOR.createFromParcel(reply);
3712 }
3713 data.recycle();
3714 reply.recycle();
3715 return pfd;
3716 }
Dianne Hackbornff5b1582012-04-12 17:24:07 -07003717 public void setLockScreenShown(boolean shown) throws RemoteException
3718 {
3719 Parcel data = Parcel.obtain();
3720 Parcel reply = Parcel.obtain();
3721 data.writeInterfaceToken(IActivityManager.descriptor);
3722 data.writeInt(shown ? 1 : 0);
3723 mRemote.transact(SET_LOCK_SCREEN_SHOWN_TRANSACTION, data, reply, 0);
3724 reply.readException();
3725 data.recycle();
3726 reply.recycle();
3727 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003728 public void setDebugApp(
3729 String packageName, boolean waitForDebugger, boolean persistent)
3730 throws RemoteException
3731 {
3732 Parcel data = Parcel.obtain();
3733 Parcel reply = Parcel.obtain();
3734 data.writeInterfaceToken(IActivityManager.descriptor);
3735 data.writeString(packageName);
3736 data.writeInt(waitForDebugger ? 1 : 0);
3737 data.writeInt(persistent ? 1 : 0);
3738 mRemote.transact(SET_DEBUG_APP_TRANSACTION, data, reply, 0);
3739 reply.readException();
3740 data.recycle();
3741 reply.recycle();
3742 }
3743 public void setAlwaysFinish(boolean enabled) throws RemoteException
3744 {
3745 Parcel data = Parcel.obtain();
3746 Parcel reply = Parcel.obtain();
3747 data.writeInterfaceToken(IActivityManager.descriptor);
3748 data.writeInt(enabled ? 1 : 0);
3749 mRemote.transact(SET_ALWAYS_FINISH_TRANSACTION, data, reply, 0);
3750 reply.readException();
3751 data.recycle();
3752 reply.recycle();
3753 }
Dianne Hackbornb06ea702009-07-13 13:07:51 -07003754 public void setActivityController(IActivityController watcher) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003755 {
3756 Parcel data = Parcel.obtain();
3757 Parcel reply = Parcel.obtain();
3758 data.writeInterfaceToken(IActivityManager.descriptor);
3759 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null);
Dianne Hackbornb06ea702009-07-13 13:07:51 -07003760 mRemote.transact(SET_ACTIVITY_CONTROLLER_TRANSACTION, data, reply, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003761 reply.readException();
3762 data.recycle();
3763 reply.recycle();
3764 }
3765 public void enterSafeMode() throws RemoteException {
3766 Parcel data = Parcel.obtain();
3767 data.writeInterfaceToken(IActivityManager.descriptor);
3768 mRemote.transact(ENTER_SAFE_MODE_TRANSACTION, data, null, 0);
3769 data.recycle();
3770 }
Dianne Hackborn099bc622014-01-22 13:39:16 -08003771 public void noteWakeupAlarm(IIntentSender sender, int sourceUid, String sourcePkg)
3772 throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003773 Parcel data = Parcel.obtain();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003774 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn099bc622014-01-22 13:39:16 -08003775 data.writeStrongBinder(sender.asBinder());
3776 data.writeInt(sourceUid);
3777 data.writeString(sourcePkg);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003778 mRemote.transact(NOTE_WAKEUP_ALARM_TRANSACTION, data, null, 0);
3779 data.recycle();
3780 }
Dianne Hackborn64825172011-03-02 21:32:58 -08003781 public boolean killPids(int[] pids, String reason, boolean secure) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003782 Parcel data = Parcel.obtain();
3783 Parcel reply = Parcel.obtain();
3784 data.writeInterfaceToken(IActivityManager.descriptor);
3785 data.writeIntArray(pids);
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07003786 data.writeString(reason);
Dianne Hackborn64825172011-03-02 21:32:58 -08003787 data.writeInt(secure ? 1 : 0);
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07003788 mRemote.transact(KILL_PIDS_TRANSACTION, data, reply, 0);
Dianne Hackbornf1b78242013-04-08 22:28:59 -07003789 reply.readException();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003790 boolean res = reply.readInt() != 0;
3791 data.recycle();
3792 reply.recycle();
3793 return res;
3794 }
Jeff Sharkeyb9a07012012-03-22 17:00:04 -07003795 @Override
3796 public boolean killProcessesBelowForeground(String reason) throws RemoteException {
3797 Parcel data = Parcel.obtain();
3798 Parcel reply = Parcel.obtain();
3799 data.writeInterfaceToken(IActivityManager.descriptor);
3800 data.writeString(reason);
3801 mRemote.transact(KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION, data, reply, 0);
3802 boolean res = reply.readInt() != 0;
3803 data.recycle();
3804 reply.recycle();
3805 return res;
3806 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003807 public boolean testIsSystemReady()
3808 {
3809 /* this base class version is never called */
3810 return true;
3811 }
Dan Egnor60d87622009-12-16 16:32:58 -08003812 public void handleApplicationCrash(IBinder app,
3813 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException
3814 {
3815 Parcel data = Parcel.obtain();
3816 Parcel reply = Parcel.obtain();
3817 data.writeInterfaceToken(IActivityManager.descriptor);
3818 data.writeStrongBinder(app);
3819 crashInfo.writeToParcel(data, 0);
3820 mRemote.transact(HANDLE_APPLICATION_CRASH_TRANSACTION, data, reply, 0);
3821 reply.readException();
3822 reply.recycle();
3823 data.recycle();
3824 }
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003825
Dan Egnor60d87622009-12-16 16:32:58 -08003826 public boolean handleApplicationWtf(IBinder app, String tag,
Dan Egnorb7f03672009-12-09 16:22:32 -08003827 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003828 {
3829 Parcel data = Parcel.obtain();
3830 Parcel reply = Parcel.obtain();
3831 data.writeInterfaceToken(IActivityManager.descriptor);
3832 data.writeStrongBinder(app);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003833 data.writeString(tag);
Dan Egnorb7f03672009-12-09 16:22:32 -08003834 crashInfo.writeToParcel(data, 0);
Dan Egnor60d87622009-12-16 16:32:58 -08003835 mRemote.transact(HANDLE_APPLICATION_WTF_TRANSACTION, data, reply, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003836 reply.readException();
Dan Egnor60d87622009-12-16 16:32:58 -08003837 boolean res = reply.readInt() != 0;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003838 reply.recycle();
3839 data.recycle();
Dan Egnor60d87622009-12-16 16:32:58 -08003840 return res;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003841 }
Dan Egnorb7f03672009-12-09 16:22:32 -08003842
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003843 public void handleApplicationStrictModeViolation(IBinder app,
Brad Fitzpatrick46d42382010-06-11 13:57:58 -07003844 int violationMask,
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -07003845 StrictMode.ViolationInfo info) throws RemoteException
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003846 {
3847 Parcel data = Parcel.obtain();
3848 Parcel reply = Parcel.obtain();
3849 data.writeInterfaceToken(IActivityManager.descriptor);
3850 data.writeStrongBinder(app);
Brad Fitzpatrick46d42382010-06-11 13:57:58 -07003851 data.writeInt(violationMask);
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -07003852 info.writeToParcel(data, 0);
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003853 mRemote.transact(HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION, data, reply, 0);
3854 reply.readException();
3855 reply.recycle();
3856 data.recycle();
3857 }
3858
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003859 public void signalPersistentProcesses(int sig) throws RemoteException {
3860 Parcel data = Parcel.obtain();
3861 Parcel reply = Parcel.obtain();
3862 data.writeInterfaceToken(IActivityManager.descriptor);
3863 data.writeInt(sig);
3864 mRemote.transact(SIGNAL_PERSISTENT_PROCESSES_TRANSACTION, data, reply, 0);
3865 reply.readException();
3866 data.recycle();
3867 reply.recycle();
3868 }
Dianne Hackborne4d4fbc2011-11-08 11:53:28 -08003869
Dianne Hackborn1676c852012-09-10 14:52:30 -07003870 public void killBackgroundProcesses(String packageName, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003871 Parcel data = Parcel.obtain();
3872 Parcel reply = Parcel.obtain();
3873 data.writeInterfaceToken(IActivityManager.descriptor);
3874 data.writeString(packageName);
Dianne Hackborn1676c852012-09-10 14:52:30 -07003875 data.writeInt(userId);
Dianne Hackborn03abb812010-01-04 18:43:19 -08003876 mRemote.transact(KILL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0);
3877 reply.readException();
3878 data.recycle();
3879 reply.recycle();
3880 }
Dianne Hackborne4d4fbc2011-11-08 11:53:28 -08003881
3882 public void killAllBackgroundProcesses() throws RemoteException {
3883 Parcel data = Parcel.obtain();
3884 Parcel reply = Parcel.obtain();
3885 data.writeInterfaceToken(IActivityManager.descriptor);
3886 mRemote.transact(KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0);
3887 reply.readException();
3888 data.recycle();
3889 reply.recycle();
3890 }
3891
Dianne Hackborn1676c852012-09-10 14:52:30 -07003892 public void forceStopPackage(String packageName, int userId) throws RemoteException {
Dianne Hackborn03abb812010-01-04 18:43:19 -08003893 Parcel data = Parcel.obtain();
3894 Parcel reply = Parcel.obtain();
3895 data.writeInterfaceToken(IActivityManager.descriptor);
3896 data.writeString(packageName);
Dianne Hackborn1676c852012-09-10 14:52:30 -07003897 data.writeInt(userId);
Dianne Hackborn03abb812010-01-04 18:43:19 -08003898 mRemote.transact(FORCE_STOP_PACKAGE_TRANSACTION, data, reply, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003899 reply.readException();
3900 data.recycle();
3901 reply.recycle();
3902 }
3903
Dianne Hackborn27ff9132012-03-06 14:57:58 -08003904 public void getMyMemoryState(ActivityManager.RunningAppProcessInfo outInfo)
3905 throws RemoteException
3906 {
3907 Parcel data = Parcel.obtain();
3908 Parcel reply = Parcel.obtain();
3909 data.writeInterfaceToken(IActivityManager.descriptor);
3910 mRemote.transact(GET_MY_MEMORY_STATE_TRANSACTION, data, reply, 0);
3911 reply.readException();
3912 outInfo.readFromParcel(reply);
3913 reply.recycle();
3914 data.recycle();
3915 }
3916
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003917 public ConfigurationInfo getDeviceConfigurationInfo() throws RemoteException
3918 {
3919 Parcel data = Parcel.obtain();
3920 Parcel reply = Parcel.obtain();
3921 data.writeInterfaceToken(IActivityManager.descriptor);
3922 mRemote.transact(GET_DEVICE_CONFIGURATION_TRANSACTION, data, reply, 0);
3923 reply.readException();
3924 ConfigurationInfo res = ConfigurationInfo.CREATOR.createFromParcel(reply);
3925 reply.recycle();
3926 data.recycle();
3927 return res;
3928 }
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003929
Dianne Hackborn1676c852012-09-10 14:52:30 -07003930 public boolean profileControl(String process, int userId, boolean start,
Romain Guy7eabe552011-07-21 14:56:34 -07003931 String path, ParcelFileDescriptor fd, int profileType) throws RemoteException
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003932 {
3933 Parcel data = Parcel.obtain();
3934 Parcel reply = Parcel.obtain();
3935 data.writeInterfaceToken(IActivityManager.descriptor);
3936 data.writeString(process);
Dianne Hackborn1676c852012-09-10 14:52:30 -07003937 data.writeInt(userId);
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003938 data.writeInt(start ? 1 : 0);
Romain Guy9a8c5ce2011-07-21 18:04:29 -07003939 data.writeInt(profileType);
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003940 data.writeString(path);
Dianne Hackborn9c8dd552009-06-23 19:22:52 -07003941 if (fd != null) {
3942 data.writeInt(1);
3943 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
3944 } else {
3945 data.writeInt(0);
3946 }
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003947 mRemote.transact(PROFILE_CONTROL_TRANSACTION, data, reply, 0);
3948 reply.readException();
3949 boolean res = reply.readInt() != 0;
3950 reply.recycle();
3951 data.recycle();
3952 return res;
3953 }
3954
Dianne Hackborn55280a92009-05-07 15:53:46 -07003955 public boolean shutdown(int timeout) throws RemoteException
3956 {
3957 Parcel data = Parcel.obtain();
3958 Parcel reply = Parcel.obtain();
3959 data.writeInterfaceToken(IActivityManager.descriptor);
3960 data.writeInt(timeout);
3961 mRemote.transact(SHUTDOWN_TRANSACTION, data, reply, 0);
3962 reply.readException();
3963 boolean res = reply.readInt() != 0;
3964 reply.recycle();
3965 data.recycle();
3966 return res;
3967 }
3968
Dianne Hackborn95fc68f2009-05-19 18:37:45 -07003969 public void stopAppSwitches() throws RemoteException {
3970 Parcel data = Parcel.obtain();
3971 Parcel reply = Parcel.obtain();
3972 data.writeInterfaceToken(IActivityManager.descriptor);
3973 mRemote.transact(STOP_APP_SWITCHES_TRANSACTION, data, reply, 0);
3974 reply.readException();
3975 reply.recycle();
3976 data.recycle();
3977 }
3978
3979 public void resumeAppSwitches() throws RemoteException {
3980 Parcel data = Parcel.obtain();
3981 Parcel reply = Parcel.obtain();
3982 data.writeInterfaceToken(IActivityManager.descriptor);
3983 mRemote.transact(RESUME_APP_SWITCHES_TRANSACTION, data, reply, 0);
3984 reply.readException();
3985 reply.recycle();
3986 data.recycle();
3987 }
3988
Dianne Hackborn21d9b562013-05-28 17:46:59 -07003989 public void killApplicationWithAppId(String pkg, int appid, String reason)
3990 throws RemoteException {
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07003991 Parcel data = Parcel.obtain();
3992 Parcel reply = Parcel.obtain();
3993 data.writeInterfaceToken(IActivityManager.descriptor);
3994 data.writeString(pkg);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003995 data.writeInt(appid);
Dianne Hackborn21d9b562013-05-28 17:46:59 -07003996 data.writeString(reason);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003997 mRemote.transact(KILL_APPLICATION_WITH_APPID_TRANSACTION, data, reply, 0);
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07003998 reply.readException();
3999 data.recycle();
4000 reply.recycle();
4001 }
Dianne Hackborna6ddc8a2009-07-28 17:49:55 -07004002
4003 public void closeSystemDialogs(String reason) throws RemoteException {
4004 Parcel data = Parcel.obtain();
4005 Parcel reply = Parcel.obtain();
4006 data.writeInterfaceToken(IActivityManager.descriptor);
4007 data.writeString(reason);
4008 mRemote.transact(CLOSE_SYSTEM_DIALOGS_TRANSACTION, data, reply, 0);
4009 reply.readException();
4010 data.recycle();
4011 reply.recycle();
4012 }
Dianne Hackborn3025ef32009-08-31 21:31:47 -07004013
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07004014 public Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids)
Dianne Hackborn3025ef32009-08-31 21:31:47 -07004015 throws RemoteException {
4016 Parcel data = Parcel.obtain();
4017 Parcel reply = Parcel.obtain();
4018 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07004019 data.writeIntArray(pids);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07004020 mRemote.transact(GET_PROCESS_MEMORY_INFO_TRANSACTION, data, reply, 0);
4021 reply.readException();
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07004022 Debug.MemoryInfo[] res = reply.createTypedArray(Debug.MemoryInfo.CREATOR);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07004023 data.recycle();
4024 reply.recycle();
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07004025 return res;
Dianne Hackborn3025ef32009-08-31 21:31:47 -07004026 }
Christopher Tate5e1ab332009-09-01 20:32:49 -07004027
4028 public void killApplicationProcess(String processName, int uid) throws RemoteException {
4029 Parcel data = Parcel.obtain();
4030 Parcel reply = Parcel.obtain();
4031 data.writeInterfaceToken(IActivityManager.descriptor);
4032 data.writeString(processName);
4033 data.writeInt(uid);
4034 mRemote.transact(KILL_APPLICATION_PROCESS_TRANSACTION, data, reply, 0);
4035 reply.readException();
4036 data.recycle();
4037 reply.recycle();
4038 }
4039
Dianne Hackborn3b3e1452009-09-24 19:22:12 -07004040 public void overridePendingTransition(IBinder token, String packageName,
4041 int enterAnim, int exitAnim) throws RemoteException {
4042 Parcel data = Parcel.obtain();
4043 Parcel reply = Parcel.obtain();
4044 data.writeInterfaceToken(IActivityManager.descriptor);
4045 data.writeStrongBinder(token);
4046 data.writeString(packageName);
4047 data.writeInt(enterAnim);
4048 data.writeInt(exitAnim);
4049 mRemote.transact(OVERRIDE_PENDING_TRANSITION_TRANSACTION, data, reply, 0);
4050 reply.readException();
4051 data.recycle();
4052 reply.recycle();
4053 }
4054
Dianne Hackborn9327f4f2010-01-29 10:38:29 -08004055 public boolean isUserAMonkey() throws RemoteException {
4056 Parcel data = Parcel.obtain();
4057 Parcel reply = Parcel.obtain();
4058 data.writeInterfaceToken(IActivityManager.descriptor);
4059 mRemote.transact(IS_USER_A_MONKEY_TRANSACTION, data, reply, 0);
4060 reply.readException();
4061 boolean res = reply.readInt() != 0;
4062 data.recycle();
4063 reply.recycle();
4064 return res;
4065 }
Adam Momtaz8f6f1f42013-04-10 12:42:58 -07004066
4067 public void setUserIsMonkey(boolean monkey) throws RemoteException {
4068 Parcel data = Parcel.obtain();
4069 Parcel reply = Parcel.obtain();
4070 data.writeInterfaceToken(IActivityManager.descriptor);
4071 data.writeInt(monkey ? 1 : 0);
4072 mRemote.transact(SET_USER_IS_MONKEY_TRANSACTION, data, reply, 0);
4073 reply.readException();
4074 data.recycle();
4075 reply.recycle();
4076 }
4077
Dianne Hackborn860755f2010-06-03 18:47:52 -07004078 public void finishHeavyWeightApp() throws RemoteException {
4079 Parcel data = Parcel.obtain();
4080 Parcel reply = Parcel.obtain();
4081 data.writeInterfaceToken(IActivityManager.descriptor);
4082 mRemote.transact(FINISH_HEAVY_WEIGHT_APP_TRANSACTION, data, reply, 0);
4083 reply.readException();
4084 data.recycle();
4085 reply.recycle();
4086 }
Craig Mautner4addfc52013-06-25 08:05:45 -07004087
Craig Mautnerbc57cd12013-08-19 15:47:42 -07004088 public boolean convertFromTranslucent(IBinder token)
Craig Mautner4addfc52013-06-25 08:05:45 -07004089 throws RemoteException {
4090 Parcel data = Parcel.obtain();
4091 Parcel reply = Parcel.obtain();
4092 data.writeInterfaceToken(IActivityManager.descriptor);
4093 data.writeStrongBinder(token);
Craig Mautner5eda9b32013-07-02 11:58:16 -07004094 mRemote.transact(CONVERT_FROM_TRANSLUCENT_TRANSACTION, data, reply, 0);
4095 reply.readException();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07004096 boolean res = reply.readInt() != 0;
Craig Mautner5eda9b32013-07-02 11:58:16 -07004097 data.recycle();
4098 reply.recycle();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07004099 return res;
Craig Mautner5eda9b32013-07-02 11:58:16 -07004100 }
4101
Craig Mautnerbc57cd12013-08-19 15:47:42 -07004102 public boolean convertToTranslucent(IBinder token)
Craig Mautner5eda9b32013-07-02 11:58:16 -07004103 throws RemoteException {
4104 Parcel data = Parcel.obtain();
4105 Parcel reply = Parcel.obtain();
4106 data.writeInterfaceToken(IActivityManager.descriptor);
4107 data.writeStrongBinder(token);
4108 mRemote.transact(CONVERT_TO_TRANSLUCENT_TRANSACTION, data, reply, 0);
Craig Mautner4addfc52013-06-25 08:05:45 -07004109 reply.readException();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07004110 boolean res = reply.readInt() != 0;
Craig Mautner4addfc52013-06-25 08:05:45 -07004111 data.recycle();
4112 reply.recycle();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07004113 return res;
Craig Mautner4addfc52013-06-25 08:05:45 -07004114 }
4115
Daniel Sandler69a48172010-06-23 16:29:36 -04004116 public void setImmersive(IBinder token, boolean immersive)
4117 throws RemoteException {
4118 Parcel data = Parcel.obtain();
4119 Parcel reply = Parcel.obtain();
4120 data.writeInterfaceToken(IActivityManager.descriptor);
4121 data.writeStrongBinder(token);
4122 data.writeInt(immersive ? 1 : 0);
4123 mRemote.transact(SET_IMMERSIVE_TRANSACTION, data, reply, 0);
4124 reply.readException();
4125 data.recycle();
4126 reply.recycle();
4127 }
4128
4129 public boolean isImmersive(IBinder token)
4130 throws RemoteException {
4131 Parcel data = Parcel.obtain();
4132 Parcel reply = Parcel.obtain();
4133 data.writeInterfaceToken(IActivityManager.descriptor);
4134 data.writeStrongBinder(token);
4135 mRemote.transact(IS_IMMERSIVE_TRANSACTION, data, reply, 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04004136 reply.readException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07004137 boolean res = reply.readInt() == 1;
Daniel Sandler69a48172010-06-23 16:29:36 -04004138 data.recycle();
4139 reply.recycle();
4140 return res;
4141 }
4142
4143 public boolean isTopActivityImmersive()
4144 throws RemoteException {
4145 Parcel data = Parcel.obtain();
4146 Parcel reply = Parcel.obtain();
4147 data.writeInterfaceToken(IActivityManager.descriptor);
4148 mRemote.transact(IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION, data, reply, 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04004149 reply.readException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07004150 boolean res = reply.readInt() == 1;
Daniel Sandler69a48172010-06-23 16:29:36 -04004151 data.recycle();
4152 reply.recycle();
4153 return res;
4154 }
4155
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07004156 public void crashApplication(int uid, int initialPid, String packageName,
4157 String message) throws RemoteException {
4158 Parcel data = Parcel.obtain();
4159 Parcel reply = Parcel.obtain();
4160 data.writeInterfaceToken(IActivityManager.descriptor);
4161 data.writeInt(uid);
4162 data.writeInt(initialPid);
4163 data.writeString(packageName);
4164 data.writeString(message);
4165 mRemote.transact(CRASH_APPLICATION_TRANSACTION, data, reply, 0);
4166 reply.readException();
4167 data.recycle();
4168 reply.recycle();
4169 }
Andy McFadden824c5102010-07-09 16:26:57 -07004170
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07004171 public String getProviderMimeType(Uri uri, int userId) throws RemoteException {
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07004172 Parcel data = Parcel.obtain();
4173 Parcel reply = Parcel.obtain();
4174 data.writeInterfaceToken(IActivityManager.descriptor);
4175 uri.writeToParcel(data, 0);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07004176 data.writeInt(userId);
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07004177 mRemote.transact(GET_PROVIDER_MIME_TYPE_TRANSACTION, data, reply, 0);
4178 reply.readException();
4179 String res = reply.readString();
4180 data.recycle();
4181 reply.recycle();
4182 return res;
4183 }
4184
Dianne Hackborn7e269642010-08-25 19:50:20 -07004185 public IBinder newUriPermissionOwner(String name)
4186 throws RemoteException {
4187 Parcel data = Parcel.obtain();
4188 Parcel reply = Parcel.obtain();
4189 data.writeInterfaceToken(IActivityManager.descriptor);
4190 data.writeString(name);
4191 mRemote.transact(NEW_URI_PERMISSION_OWNER_TRANSACTION, data, reply, 0);
4192 reply.readException();
4193 IBinder res = reply.readStrongBinder();
4194 data.recycle();
4195 reply.recycle();
4196 return res;
4197 }
4198
4199 public void grantUriPermissionFromOwner(IBinder owner, int fromUid, String targetPkg,
4200 Uri uri, int mode) throws RemoteException {
4201 Parcel data = Parcel.obtain();
4202 Parcel reply = Parcel.obtain();
4203 data.writeInterfaceToken(IActivityManager.descriptor);
4204 data.writeStrongBinder(owner);
4205 data.writeInt(fromUid);
4206 data.writeString(targetPkg);
4207 uri.writeToParcel(data, 0);
4208 data.writeInt(mode);
4209 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0);
4210 reply.readException();
4211 data.recycle();
4212 reply.recycle();
4213 }
4214
4215 public void revokeUriPermissionFromOwner(IBinder owner, Uri uri,
4216 int mode) throws RemoteException {
4217 Parcel data = Parcel.obtain();
4218 Parcel reply = Parcel.obtain();
4219 data.writeInterfaceToken(IActivityManager.descriptor);
4220 data.writeStrongBinder(owner);
4221 if (uri != null) {
4222 data.writeInt(1);
4223 uri.writeToParcel(data, 0);
4224 } else {
4225 data.writeInt(0);
4226 }
4227 data.writeInt(mode);
4228 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0);
4229 reply.readException();
4230 data.recycle();
4231 reply.recycle();
4232 }
Dianne Hackbornc8f84972010-08-25 23:14:44 -07004233
Dianne Hackborn90f4aaf2010-09-27 14:58:44 -07004234 public int checkGrantUriPermission(int callingUid, String targetPkg,
4235 Uri uri, int modeFlags) throws RemoteException {
4236 Parcel data = Parcel.obtain();
4237 Parcel reply = Parcel.obtain();
4238 data.writeInterfaceToken(IActivityManager.descriptor);
4239 data.writeInt(callingUid);
4240 data.writeString(targetPkg);
4241 uri.writeToParcel(data, 0);
4242 data.writeInt(modeFlags);
4243 mRemote.transact(CHECK_GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0);
4244 reply.readException();
4245 int res = reply.readInt();
4246 data.recycle();
4247 reply.recycle();
4248 return res;
4249 }
4250
Dianne Hackborn1676c852012-09-10 14:52:30 -07004251 public boolean dumpHeap(String process, int userId, boolean managed,
Andy McFadden824c5102010-07-09 16:26:57 -07004252 String path, ParcelFileDescriptor fd) throws RemoteException {
4253 Parcel data = Parcel.obtain();
4254 Parcel reply = Parcel.obtain();
4255 data.writeInterfaceToken(IActivityManager.descriptor);
4256 data.writeString(process);
Dianne Hackborn1676c852012-09-10 14:52:30 -07004257 data.writeInt(userId);
Andy McFadden824c5102010-07-09 16:26:57 -07004258 data.writeInt(managed ? 1 : 0);
4259 data.writeString(path);
4260 if (fd != null) {
4261 data.writeInt(1);
4262 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
4263 } else {
4264 data.writeInt(0);
4265 }
4266 mRemote.transact(DUMP_HEAP_TRANSACTION, data, reply, 0);
4267 reply.readException();
4268 boolean res = reply.readInt() != 0;
4269 reply.recycle();
4270 data.recycle();
4271 return res;
4272 }
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07004273
Dianne Hackbornf265ea92013-01-31 15:00:51 -08004274 public int startActivities(IApplicationThread caller, String callingPackage,
Dianne Hackborna4972e92012-03-14 10:38:05 -07004275 Intent[] intents, String[] resolvedTypes, IBinder resultTo,
Amith Yamasaniea7e9152012-09-24 16:11:18 -07004276 Bundle options, int userId) throws RemoteException {
Dianne Hackborn621e17d2010-11-22 15:59:56 -08004277 Parcel data = Parcel.obtain();
4278 Parcel reply = Parcel.obtain();
4279 data.writeInterfaceToken(IActivityManager.descriptor);
4280 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08004281 data.writeString(callingPackage);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08004282 data.writeTypedArray(intents, 0);
4283 data.writeStringArray(resolvedTypes);
4284 data.writeStrongBinder(resultTo);
Dianne Hackborna4972e92012-03-14 10:38:05 -07004285 if (options != null) {
4286 data.writeInt(1);
4287 options.writeToParcel(data, 0);
4288 } else {
4289 data.writeInt(0);
4290 }
Amith Yamasaniea7e9152012-09-24 16:11:18 -07004291 data.writeInt(userId);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08004292 mRemote.transact(START_ACTIVITIES_TRANSACTION, data, reply, 0);
4293 reply.readException();
4294 int result = reply.readInt();
4295 reply.recycle();
4296 data.recycle();
4297 return result;
4298 }
4299
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07004300 public int getFrontActivityScreenCompatMode() throws RemoteException {
4301 Parcel data = Parcel.obtain();
4302 Parcel reply = Parcel.obtain();
4303 data.writeInterfaceToken(IActivityManager.descriptor);
4304 mRemote.transact(GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
4305 reply.readException();
4306 int mode = reply.readInt();
4307 reply.recycle();
4308 data.recycle();
4309 return mode;
4310 }
4311
4312 public void setFrontActivityScreenCompatMode(int mode) throws RemoteException {
4313 Parcel data = Parcel.obtain();
4314 Parcel reply = Parcel.obtain();
4315 data.writeInterfaceToken(IActivityManager.descriptor);
4316 data.writeInt(mode);
4317 mRemote.transact(SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
4318 reply.readException();
4319 reply.recycle();
4320 data.recycle();
4321 }
4322
4323 public int getPackageScreenCompatMode(String packageName) throws RemoteException {
4324 Parcel data = Parcel.obtain();
4325 Parcel reply = Parcel.obtain();
4326 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn36cd41f2011-05-25 21:00:46 -07004327 data.writeString(packageName);
4328 mRemote.transact(GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07004329 reply.readException();
4330 int mode = reply.readInt();
4331 reply.recycle();
4332 data.recycle();
4333 return mode;
4334 }
4335
4336 public void setPackageScreenCompatMode(String packageName, int mode)
Dianne Hackborne2515ee2011-04-27 18:52:56 -04004337 throws RemoteException {
4338 Parcel data = Parcel.obtain();
4339 Parcel reply = Parcel.obtain();
4340 data.writeInterfaceToken(IActivityManager.descriptor);
4341 data.writeString(packageName);
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07004342 data.writeInt(mode);
Dianne Hackborne2515ee2011-04-27 18:52:56 -04004343 mRemote.transact(SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
4344 reply.readException();
4345 reply.recycle();
4346 data.recycle();
4347 }
4348
Dianne Hackborn36cd41f2011-05-25 21:00:46 -07004349 public boolean getPackageAskScreenCompat(String packageName) throws RemoteException {
4350 Parcel data = Parcel.obtain();
4351 Parcel reply = Parcel.obtain();
4352 data.writeInterfaceToken(IActivityManager.descriptor);
4353 data.writeString(packageName);
4354 mRemote.transact(GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0);
4355 reply.readException();
4356 boolean ask = reply.readInt() != 0;
4357 reply.recycle();
4358 data.recycle();
4359 return ask;
4360 }
4361
4362 public void setPackageAskScreenCompat(String packageName, boolean ask)
4363 throws RemoteException {
4364 Parcel data = Parcel.obtain();
4365 Parcel reply = Parcel.obtain();
4366 data.writeInterfaceToken(IActivityManager.descriptor);
4367 data.writeString(packageName);
4368 data.writeInt(ask ? 1 : 0);
4369 mRemote.transact(SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0);
4370 reply.readException();
4371 reply.recycle();
4372 data.recycle();
4373 }
4374
Amith Yamasani4b2e9342011-03-31 12:38:53 -07004375 public boolean switchUser(int userid) throws RemoteException {
4376 Parcel data = Parcel.obtain();
4377 Parcel reply = Parcel.obtain();
4378 data.writeInterfaceToken(IActivityManager.descriptor);
4379 data.writeInt(userid);
4380 mRemote.transact(SWITCH_USER_TRANSACTION, data, reply, 0);
4381 reply.readException();
4382 boolean result = reply.readInt() != 0;
4383 reply.recycle();
4384 data.recycle();
4385 return result;
4386 }
Amith Yamasani52f1d752012-03-28 18:19:29 -07004387
Kenny Guy08488bf2014-02-21 17:40:37 +00004388 public boolean startUserInBackground(int userid) throws RemoteException {
4389 Parcel data = Parcel.obtain();
4390 Parcel reply = Parcel.obtain();
4391 data.writeInterfaceToken(IActivityManager.descriptor);
4392 data.writeInt(userid);
4393 mRemote.transact(START_USER_IN_BACKGROUND_TRANSACTION, data, reply, 0);
4394 reply.readException();
4395 boolean result = reply.readInt() != 0;
4396 reply.recycle();
4397 data.recycle();
4398 return result;
4399 }
4400
Dianne Hackborn80a4af22012-08-27 19:18:31 -07004401 public int stopUser(int userid, IStopUserCallback callback) throws RemoteException {
4402 Parcel data = Parcel.obtain();
4403 Parcel reply = Parcel.obtain();
4404 data.writeInterfaceToken(IActivityManager.descriptor);
4405 data.writeInt(userid);
4406 data.writeStrongInterface(callback);
4407 mRemote.transact(STOP_USER_TRANSACTION, data, reply, 0);
4408 reply.readException();
4409 int result = reply.readInt();
4410 reply.recycle();
4411 data.recycle();
4412 return result;
4413 }
4414
Amith Yamasani52f1d752012-03-28 18:19:29 -07004415 public UserInfo getCurrentUser() throws RemoteException {
4416 Parcel data = Parcel.obtain();
4417 Parcel reply = Parcel.obtain();
4418 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn80a4af22012-08-27 19:18:31 -07004419 mRemote.transact(GET_CURRENT_USER_TRANSACTION, data, reply, 0);
Amith Yamasani52f1d752012-03-28 18:19:29 -07004420 reply.readException();
4421 UserInfo userInfo = UserInfo.CREATOR.createFromParcel(reply);
4422 reply.recycle();
4423 data.recycle();
4424 return userInfo;
4425 }
4426
Dianne Hackborna8a9bd62012-10-09 15:36:59 -07004427 public boolean isUserRunning(int userid, boolean orStopping) throws RemoteException {
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07004428 Parcel data = Parcel.obtain();
4429 Parcel reply = Parcel.obtain();
4430 data.writeInterfaceToken(IActivityManager.descriptor);
4431 data.writeInt(userid);
Dianne Hackborna8a9bd62012-10-09 15:36:59 -07004432 data.writeInt(orStopping ? 1 : 0);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07004433 mRemote.transact(IS_USER_RUNNING_TRANSACTION, data, reply, 0);
4434 reply.readException();
4435 boolean result = reply.readInt() != 0;
4436 reply.recycle();
4437 data.recycle();
4438 return result;
4439 }
4440
Dianne Hackbornc72fc672012-09-20 13:12:03 -07004441 public int[] getRunningUserIds() throws RemoteException {
4442 Parcel data = Parcel.obtain();
4443 Parcel reply = Parcel.obtain();
4444 data.writeInterfaceToken(IActivityManager.descriptor);
4445 mRemote.transact(GET_RUNNING_USER_IDS_TRANSACTION, data, reply, 0);
4446 reply.readException();
4447 int[] result = reply.createIntArray();
4448 reply.recycle();
4449 data.recycle();
4450 return result;
4451 }
4452
Dianne Hackborn0c5001d2011-04-12 18:16:08 -07004453 public boolean removeSubTask(int taskId, int subTaskIndex) throws RemoteException {
4454 Parcel data = Parcel.obtain();
4455 Parcel reply = Parcel.obtain();
4456 data.writeInterfaceToken(IActivityManager.descriptor);
4457 data.writeInt(taskId);
4458 data.writeInt(subTaskIndex);
4459 mRemote.transact(REMOVE_SUB_TASK_TRANSACTION, data, reply, 0);
4460 reply.readException();
4461 boolean result = reply.readInt() != 0;
4462 reply.recycle();
4463 data.recycle();
4464 return result;
4465 }
4466
4467 public boolean removeTask(int taskId, int flags) throws RemoteException {
4468 Parcel data = Parcel.obtain();
4469 Parcel reply = Parcel.obtain();
4470 data.writeInterfaceToken(IActivityManager.descriptor);
4471 data.writeInt(taskId);
4472 data.writeInt(flags);
4473 mRemote.transact(REMOVE_TASK_TRANSACTION, data, reply, 0);
4474 reply.readException();
4475 boolean result = reply.readInt() != 0;
4476 reply.recycle();
4477 data.recycle();
4478 return result;
4479 }
Amith Yamasani4b2e9342011-03-31 12:38:53 -07004480
Jeff Sharkeya4620792011-05-20 15:29:23 -07004481 public void registerProcessObserver(IProcessObserver observer) throws RemoteException {
4482 Parcel data = Parcel.obtain();
4483 Parcel reply = Parcel.obtain();
4484 data.writeInterfaceToken(IActivityManager.descriptor);
4485 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
4486 mRemote.transact(REGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0);
4487 reply.readException();
4488 data.recycle();
4489 reply.recycle();
4490 }
4491
4492 public void unregisterProcessObserver(IProcessObserver observer) throws RemoteException {
4493 Parcel data = Parcel.obtain();
4494 Parcel reply = Parcel.obtain();
4495 data.writeInterfaceToken(IActivityManager.descriptor);
4496 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
4497 mRemote.transact(UNREGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0);
4498 reply.readException();
4499 data.recycle();
4500 reply.recycle();
4501 }
4502
Dianne Hackborn6c418d52011-06-29 14:05:33 -07004503 public boolean isIntentSenderTargetedToPackage(IIntentSender sender) throws RemoteException {
4504 Parcel data = Parcel.obtain();
4505 Parcel reply = Parcel.obtain();
4506 data.writeInterfaceToken(IActivityManager.descriptor);
4507 data.writeStrongBinder(sender.asBinder());
4508 mRemote.transact(IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION, data, reply, 0);
4509 reply.readException();
4510 boolean res = reply.readInt() != 0;
4511 data.recycle();
4512 reply.recycle();
4513 return res;
4514 }
4515
Dianne Hackborn1927ae82012-06-22 15:21:36 -07004516 public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException {
4517 Parcel data = Parcel.obtain();
4518 Parcel reply = Parcel.obtain();
4519 data.writeInterfaceToken(IActivityManager.descriptor);
4520 data.writeStrongBinder(sender.asBinder());
4521 mRemote.transact(IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION, data, reply, 0);
4522 reply.readException();
4523 boolean res = reply.readInt() != 0;
4524 data.recycle();
4525 reply.recycle();
4526 return res;
4527 }
4528
Dianne Hackborn81038902012-11-26 17:04:09 -08004529 public Intent getIntentForIntentSender(IIntentSender sender) throws RemoteException {
4530 Parcel data = Parcel.obtain();
4531 Parcel reply = Parcel.obtain();
4532 data.writeInterfaceToken(IActivityManager.descriptor);
4533 data.writeStrongBinder(sender.asBinder());
4534 mRemote.transact(GET_INTENT_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0);
4535 reply.readException();
4536 Intent res = reply.readInt() != 0
4537 ? Intent.CREATOR.createFromParcel(reply) : null;
4538 data.recycle();
4539 reply.recycle();
4540 return res;
4541 }
4542
Dianne Hackborna1f1a3c2014-02-24 18:12:28 -08004543 public String getTagForIntentSender(IIntentSender sender, String prefix)
4544 throws RemoteException {
4545 Parcel data = Parcel.obtain();
4546 Parcel reply = Parcel.obtain();
4547 data.writeInterfaceToken(IActivityManager.descriptor);
4548 data.writeStrongBinder(sender.asBinder());
4549 data.writeString(prefix);
4550 mRemote.transact(GET_TAG_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0);
4551 reply.readException();
4552 String res = reply.readString();
4553 data.recycle();
4554 reply.recycle();
4555 return res;
4556 }
4557
Dianne Hackborn31ca8542011-07-19 14:58:28 -07004558 public void updatePersistentConfiguration(Configuration values) throws RemoteException
4559 {
4560 Parcel data = Parcel.obtain();
4561 Parcel reply = Parcel.obtain();
4562 data.writeInterfaceToken(IActivityManager.descriptor);
4563 values.writeToParcel(data, 0);
4564 mRemote.transact(UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION, data, reply, 0);
4565 reply.readException();
4566 data.recycle();
4567 reply.recycle();
4568 }
4569
Dianne Hackbornb437e092011-08-05 17:50:29 -07004570 public long[] getProcessPss(int[] pids) throws RemoteException {
4571 Parcel data = Parcel.obtain();
4572 Parcel reply = Parcel.obtain();
4573 data.writeInterfaceToken(IActivityManager.descriptor);
4574 data.writeIntArray(pids);
4575 mRemote.transact(GET_PROCESS_PSS_TRANSACTION, data, reply, 0);
4576 reply.readException();
4577 long[] res = reply.createLongArray();
4578 data.recycle();
4579 reply.recycle();
4580 return res;
4581 }
4582
Dianne Hackborn661cd522011-08-22 00:26:20 -07004583 public void showBootMessage(CharSequence msg, boolean always) throws RemoteException {
4584 Parcel data = Parcel.obtain();
4585 Parcel reply = Parcel.obtain();
4586 data.writeInterfaceToken(IActivityManager.descriptor);
4587 TextUtils.writeToParcel(msg, data, 0);
4588 data.writeInt(always ? 1 : 0);
4589 mRemote.transact(SHOW_BOOT_MESSAGE_TRANSACTION, data, reply, 0);
4590 reply.readException();
4591 data.recycle();
4592 reply.recycle();
4593 }
4594
Dianne Hackborn90c52de2011-09-23 12:57:44 -07004595 public void dismissKeyguardOnNextActivity() throws RemoteException {
4596 Parcel data = Parcel.obtain();
4597 Parcel reply = Parcel.obtain();
4598 data.writeInterfaceToken(IActivityManager.descriptor);
4599 mRemote.transact(DISMISS_KEYGUARD_ON_NEXT_ACTIVITY_TRANSACTION, data, reply, 0);
4600 reply.readException();
4601 data.recycle();
4602 reply.recycle();
4603 }
4604
Adam Powelldd8fab22012-03-22 17:47:27 -07004605 public boolean targetTaskAffinityMatchesActivity(IBinder token, String destAffinity)
4606 throws RemoteException {
4607 Parcel data = Parcel.obtain();
4608 Parcel reply = Parcel.obtain();
4609 data.writeInterfaceToken(IActivityManager.descriptor);
4610 data.writeStrongBinder(token);
4611 data.writeString(destAffinity);
4612 mRemote.transact(TARGET_TASK_AFFINITY_MATCHES_ACTIVITY_TRANSACTION, data, reply, 0);
4613 reply.readException();
4614 boolean result = reply.readInt() != 0;
4615 data.recycle();
4616 reply.recycle();
4617 return result;
4618 }
4619
4620 public boolean navigateUpTo(IBinder token, Intent target, int resultCode, Intent resultData)
4621 throws RemoteException {
4622 Parcel data = Parcel.obtain();
4623 Parcel reply = Parcel.obtain();
4624 data.writeInterfaceToken(IActivityManager.descriptor);
4625 data.writeStrongBinder(token);
4626 target.writeToParcel(data, 0);
4627 data.writeInt(resultCode);
4628 if (resultData != null) {
4629 data.writeInt(1);
4630 resultData.writeToParcel(data, 0);
4631 } else {
4632 data.writeInt(0);
4633 }
4634 mRemote.transact(NAVIGATE_UP_TO_TRANSACTION, data, reply, 0);
4635 reply.readException();
4636 boolean result = reply.readInt() != 0;
4637 data.recycle();
4638 reply.recycle();
4639 return result;
4640 }
4641
Dianne Hackborn5320eb82012-05-18 12:05:04 -07004642 public int getLaunchedFromUid(IBinder activityToken) throws RemoteException {
4643 Parcel data = Parcel.obtain();
4644 Parcel reply = Parcel.obtain();
4645 data.writeInterfaceToken(IActivityManager.descriptor);
4646 data.writeStrongBinder(activityToken);
4647 mRemote.transact(GET_LAUNCHED_FROM_UID_TRANSACTION, data, reply, 0);
4648 reply.readException();
4649 int result = reply.readInt();
4650 data.recycle();
4651 reply.recycle();
4652 return result;
4653 }
4654
Dianne Hackbornf265ea92013-01-31 15:00:51 -08004655 public String getLaunchedFromPackage(IBinder activityToken) throws RemoteException {
4656 Parcel data = Parcel.obtain();
4657 Parcel reply = Parcel.obtain();
4658 data.writeInterfaceToken(IActivityManager.descriptor);
4659 data.writeStrongBinder(activityToken);
4660 mRemote.transact(GET_LAUNCHED_FROM_PACKAGE_TRANSACTION, data, reply, 0);
4661 reply.readException();
4662 String result = reply.readString();
4663 data.recycle();
4664 reply.recycle();
4665 return result;
4666 }
4667
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07004668 public void registerUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException {
4669 Parcel data = Parcel.obtain();
4670 Parcel reply = Parcel.obtain();
4671 data.writeInterfaceToken(IActivityManager.descriptor);
4672 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
4673 mRemote.transact(REGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0);
4674 reply.readException();
4675 data.recycle();
4676 reply.recycle();
4677 }
4678
4679 public void unregisterUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException {
4680 Parcel data = Parcel.obtain();
4681 Parcel reply = Parcel.obtain();
4682 data.writeInterfaceToken(IActivityManager.descriptor);
4683 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
4684 mRemote.transact(UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0);
4685 reply.readException();
4686 data.recycle();
4687 reply.recycle();
4688 }
4689
Dianne Hackbornd4ac8d72012-09-27 23:20:10 -07004690 public void requestBugReport() throws RemoteException {
4691 Parcel data = Parcel.obtain();
4692 Parcel reply = Parcel.obtain();
4693 data.writeInterfaceToken(IActivityManager.descriptor);
4694 mRemote.transact(REQUEST_BUG_REPORT_TRANSACTION, data, reply, 0);
4695 reply.readException();
4696 data.recycle();
4697 reply.recycle();
4698 }
4699
Jeff Brownbd181bb2013-09-10 16:44:24 -07004700 public long inputDispatchingTimedOut(int pid, boolean aboveSystem, String reason)
4701 throws RemoteException {
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07004702 Parcel data = Parcel.obtain();
4703 Parcel reply = Parcel.obtain();
4704 data.writeInterfaceToken(IActivityManager.descriptor);
4705 data.writeInt(pid);
4706 data.writeInt(aboveSystem ? 1 : 0);
Jeff Brownbd181bb2013-09-10 16:44:24 -07004707 data.writeString(reason);
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07004708 mRemote.transact(INPUT_DISPATCHING_TIMED_OUT_TRANSACTION, data, reply, 0);
4709 reply.readException();
4710 long res = reply.readInt();
4711 data.recycle();
4712 reply.recycle();
4713 return res;
4714 }
4715
Adam Skorydfc7fd72013-08-05 19:23:41 -07004716 public Bundle getAssistContextExtras(int requestType) throws RemoteException {
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08004717 Parcel data = Parcel.obtain();
4718 Parcel reply = Parcel.obtain();
4719 data.writeInterfaceToken(IActivityManager.descriptor);
4720 data.writeInt(requestType);
Adam Skorydfc7fd72013-08-05 19:23:41 -07004721 mRemote.transact(GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0);
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08004722 reply.readException();
4723 Bundle res = reply.readBundle();
4724 data.recycle();
4725 reply.recycle();
4726 return res;
4727 }
4728
Adam Skory7140a252013-09-11 12:04:58 +01004729 public void reportAssistContextExtras(IBinder token, Bundle extras)
Adam Skorydfc7fd72013-08-05 19:23:41 -07004730 throws RemoteException {
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08004731 Parcel data = Parcel.obtain();
4732 Parcel reply = Parcel.obtain();
4733 data.writeInterfaceToken(IActivityManager.descriptor);
4734 data.writeStrongBinder(token);
4735 data.writeBundle(extras);
Adam Skorydfc7fd72013-08-05 19:23:41 -07004736 mRemote.transact(REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0);
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08004737 reply.readException();
4738 data.recycle();
4739 reply.recycle();
4740 }
4741
Dianne Hackbornf1b78242013-04-08 22:28:59 -07004742 public void killUid(int uid, String reason) throws RemoteException {
4743 Parcel data = Parcel.obtain();
4744 Parcel reply = Parcel.obtain();
4745 data.writeInterfaceToken(IActivityManager.descriptor);
4746 data.writeInt(uid);
4747 data.writeString(reason);
4748 mRemote.transact(KILL_UID_TRANSACTION, data, reply, 0);
4749 reply.readException();
4750 data.recycle();
4751 reply.recycle();
4752 }
4753
Dianne Hackborn8bd64df2013-05-06 16:07:26 -07004754 public void hang(IBinder who, boolean allowRestart) throws RemoteException {
4755 Parcel data = Parcel.obtain();
4756 Parcel reply = Parcel.obtain();
4757 data.writeInterfaceToken(IActivityManager.descriptor);
4758 data.writeStrongBinder(who);
4759 data.writeInt(allowRestart ? 1 : 0);
4760 mRemote.transact(HANG_TRANSACTION, data, reply, 0);
4761 reply.readException();
4762 data.recycle();
4763 reply.recycle();
4764 }
4765
Dianne Hackborn2286cdc2013-07-01 19:10:06 -07004766 public void reportActivityFullyDrawn(IBinder token) throws RemoteException {
4767 Parcel data = Parcel.obtain();
4768 Parcel reply = Parcel.obtain();
4769 data.writeInterfaceToken(IActivityManager.descriptor);
4770 data.writeStrongBinder(token);
4771 mRemote.transact(REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION, data, reply, 0);
4772 reply.readException();
4773 data.recycle();
4774 reply.recycle();
4775 }
4776
Craig Mautner5eda9b32013-07-02 11:58:16 -07004777 public void notifyActivityDrawn(IBinder token) throws RemoteException {
4778 Parcel data = Parcel.obtain();
4779 Parcel reply = Parcel.obtain();
4780 data.writeInterfaceToken(IActivityManager.descriptor);
4781 data.writeStrongBinder(token);
4782 mRemote.transact(NOTIFY_ACTIVITY_DRAWN_TRANSACTION, data, reply, 0);
4783 reply.readException();
4784 data.recycle();
4785 reply.recycle();
4786 }
4787
Dianne Hackborn57a7f592013-07-22 18:21:32 -07004788 public void restart() throws RemoteException {
4789 Parcel data = Parcel.obtain();
4790 Parcel reply = Parcel.obtain();
4791 data.writeInterfaceToken(IActivityManager.descriptor);
4792 mRemote.transact(RESTART_TRANSACTION, data, reply, 0);
4793 reply.readException();
4794 data.recycle();
4795 reply.recycle();
4796 }
4797
Dianne Hackborn35f72be2013-09-16 10:57:39 -07004798 public void performIdleMaintenance() throws RemoteException {
4799 Parcel data = Parcel.obtain();
4800 Parcel reply = Parcel.obtain();
4801 data.writeInterfaceToken(IActivityManager.descriptor);
4802 mRemote.transact(PERFORM_IDLE_MAINTENANCE_TRANSACTION, data, reply, 0);
4803 reply.readException();
4804 data.recycle();
4805 reply.recycle();
4806 }
4807
Craig Mautner4a1cb222013-12-04 16:14:06 -08004808 public IActivityContainer createActivityContainer(IBinder parentActivityToken,
4809 IActivityContainerCallback callback) throws RemoteException {
4810 Parcel data = Parcel.obtain();
4811 Parcel reply = Parcel.obtain();
4812 data.writeInterfaceToken(IActivityManager.descriptor);
4813 data.writeStrongBinder(parentActivityToken);
Craig Mautnere3a00d72014-04-16 08:31:19 -07004814 data.writeStrongBinder(callback == null ? null : callback.asBinder());
Craig Mautner4a1cb222013-12-04 16:14:06 -08004815 mRemote.transact(CREATE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0);
4816 reply.readException();
Craig Mautnerbd503a42014-01-10 10:16:43 -08004817 final int result = reply.readInt();
4818 final IActivityContainer res;
4819 if (result == 1) {
4820 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder());
4821 } else {
4822 res = null;
4823 }
Craig Mautner4a1cb222013-12-04 16:14:06 -08004824 data.recycle();
4825 reply.recycle();
4826 return res;
4827 }
4828
Craig Mautner95da1082014-02-24 17:54:35 -08004829 public void deleteActivityContainer(IActivityContainer activityContainer)
4830 throws RemoteException {
4831 Parcel data = Parcel.obtain();
4832 Parcel reply = Parcel.obtain();
4833 data.writeInterfaceToken(IActivityManager.descriptor);
4834 data.writeStrongBinder(activityContainer.asBinder());
4835 mRemote.transact(DELETE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0);
4836 reply.readException();
4837 data.recycle();
4838 reply.recycle();
4839 }
4840
Craig Mautnere0a38842013-12-16 16:14:02 -08004841 public IActivityContainer getEnclosingActivityContainer(IBinder activityToken)
4842 throws RemoteException {
4843 Parcel data = Parcel.obtain();
4844 Parcel reply = Parcel.obtain();
4845 data.writeInterfaceToken(IActivityManager.descriptor);
4846 data.writeStrongBinder(activityToken);
4847 mRemote.transact(GET_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0);
4848 reply.readException();
Craig Mautnerbd503a42014-01-10 10:16:43 -08004849 final int result = reply.readInt();
4850 final IActivityContainer res;
4851 if (result == 1) {
4852 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder());
4853 } else {
4854 res = null;
4855 }
Craig Mautnere0a38842013-12-16 16:14:02 -08004856 data.recycle();
4857 reply.recycle();
4858 return res;
4859 }
4860
Craig Mautner4a1cb222013-12-04 16:14:06 -08004861 public IBinder getHomeActivityToken() throws RemoteException {
4862 Parcel data = Parcel.obtain();
4863 Parcel reply = Parcel.obtain();
4864 data.writeInterfaceToken(IActivityManager.descriptor);
4865 mRemote.transact(GET_HOME_ACTIVITY_TOKEN_TRANSACTION, data, reply, 0);
4866 reply.readException();
4867 IBinder res = reply.readStrongBinder();
4868 data.recycle();
4869 reply.recycle();
4870 return res;
4871 }
4872
Craig Mautneraea74a52014-03-08 14:23:10 -08004873 @Override
4874 public void startLockTaskMode(int taskId) throws RemoteException {
4875 Parcel data = Parcel.obtain();
4876 Parcel reply = Parcel.obtain();
4877 data.writeInterfaceToken(IActivityManager.descriptor);
4878 data.writeInt(taskId);
4879 mRemote.transact(START_LOCK_TASK_BY_TASK_ID_TRANSACTION, data, reply, 0);
4880 reply.readException();
4881 data.recycle();
4882 reply.recycle();
4883 }
4884
4885 @Override
4886 public void startLockTaskMode(IBinder token) throws RemoteException {
4887 Parcel data = Parcel.obtain();
4888 Parcel reply = Parcel.obtain();
4889 data.writeInterfaceToken(IActivityManager.descriptor);
4890 data.writeStrongBinder(token);
4891 mRemote.transact(START_LOCK_TASK_BY_TOKEN_TRANSACTION, data, reply, 0);
4892 reply.readException();
4893 data.recycle();
4894 reply.recycle();
4895 }
4896
4897 @Override
4898 public void stopLockTaskMode() throws RemoteException {
4899 Parcel data = Parcel.obtain();
4900 Parcel reply = Parcel.obtain();
4901 data.writeInterfaceToken(IActivityManager.descriptor);
4902 mRemote.transact(STOP_LOCK_TASK_MODE_TRANSACTION, data, reply, 0);
4903 reply.readException();
4904 data.recycle();
4905 reply.recycle();
4906 }
4907
4908 @Override
4909 public boolean isInLockTaskMode() throws RemoteException {
4910 Parcel data = Parcel.obtain();
4911 Parcel reply = Parcel.obtain();
4912 data.writeInterfaceToken(IActivityManager.descriptor);
4913 mRemote.transact(IS_IN_LOCK_TASK_MODE_TRANSACTION, data, reply, 0);
4914 reply.readException();
4915 boolean isInLockTaskMode = reply.readInt() == 1;
4916 data.recycle();
4917 reply.recycle();
4918 return isInLockTaskMode;
4919 }
4920
Craig Mautner688b5102014-03-27 16:55:03 -07004921 @Override
4922 public void setActivityLabelAndIcon(IBinder token, CharSequence activityLabel,
4923 Bitmap activityIcon) throws RemoteException
Craig Mautner2fbd7542014-03-21 09:34:07 -07004924 {
4925 Parcel data = Parcel.obtain();
4926 Parcel reply = Parcel.obtain();
4927 data.writeInterfaceToken(IActivityManager.descriptor);
4928 data.writeStrongBinder(token);
Craig Mautner688b5102014-03-27 16:55:03 -07004929 TextUtils.writeToParcel(activityLabel, data, 0);
4930 if (activityIcon != null) {
Craig Mautner2fbd7542014-03-21 09:34:07 -07004931 data.writeInt(1);
Craig Mautner688b5102014-03-27 16:55:03 -07004932 activityIcon.writeToParcel(data, 0);
Craig Mautner2fbd7542014-03-21 09:34:07 -07004933 } else {
4934 data.writeInt(0);
4935 }
Craig Mautner688b5102014-03-27 16:55:03 -07004936 mRemote.transact(SET_ACTIVITY_LABEL_ICON_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
Craig Mautner2fbd7542014-03-21 09:34:07 -07004937 reply.readException();
4938 data.recycle();
4939 reply.recycle();
4940 }
4941
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004942 private IBinder mRemote;
4943}