blob: bb62c9e5d4cff9e909818469212f356304abe353 [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
19import android.content.ComponentName;
Adam Powelldd8fab22012-03-22 17:47:27 -070020import android.content.IIntentReceiver;
21import android.content.IIntentSender;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080022import android.content.Intent;
23import android.content.IntentFilter;
Dianne Hackbornfa82f222009-09-17 15:14:12 -070024import android.content.IntentSender;
Christopher Tate181fafa2009-05-14 11:12:14 -070025import android.content.pm.ApplicationInfo;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080026import android.content.pm.ConfigurationInfo;
27import android.content.pm.IPackageDataObserver;
Amith Yamasani52f1d752012-03-28 18:19:29 -070028import android.content.pm.UserInfo;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080029import android.content.res.Configuration;
30import android.graphics.Bitmap;
31import android.net.Uri;
32import android.os.Binder;
33import android.os.Bundle;
Dianne Hackborn3025ef32009-08-31 21:31:47 -070034import android.os.Debug;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080035import android.os.IBinder;
36import android.os.Parcel;
Adam Powelldd8fab22012-03-22 17:47:27 -070037import android.os.ParcelFileDescriptor;
38import android.os.Parcelable;
39import android.os.RemoteException;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080040import android.os.ServiceManager;
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -070041import android.os.StrictMode;
Dianne Hackbornf02b60a2012-08-16 10:48:27 -070042import android.os.UserHandle;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080043import android.text.TextUtils;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080044import android.util.Log;
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080045import android.util.Singleton;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080046
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080047import java.util.ArrayList;
48import java.util.List;
49
50/** {@hide} */
51public abstract class ActivityManagerNative extends Binder implements IActivityManager
52{
53 /**
54 * Cast a Binder object into an activity manager interface, generating
55 * a proxy if needed.
56 */
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080057 static public IActivityManager asInterface(IBinder obj) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080058 if (obj == null) {
59 return null;
60 }
61 IActivityManager in =
62 (IActivityManager)obj.queryLocalInterface(descriptor);
63 if (in != null) {
64 return in;
65 }
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080066
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080067 return new ActivityManagerProxy(obj);
68 }
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080069
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080070 /**
71 * Retrieve the system's default/global activity manager.
72 */
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080073 static public IActivityManager getDefault() {
74 return gDefault.get();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080075 }
76
77 /**
78 * Convenience for checking whether the system is ready. For internal use only.
79 */
80 static public boolean isSystemReady() {
81 if (!sSystemReady) {
82 sSystemReady = getDefault().testIsSystemReady();
83 }
84 return sSystemReady;
85 }
86 static boolean sSystemReady = false;
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080087
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080088 /**
89 * Convenience for sending a sticky broadcast. For internal use only.
90 * If you don't care about permission, use null.
91 */
Dianne Hackborn5ac72a22012-08-29 18:32:08 -070092 static public void broadcastStickyIntent(Intent intent, String permission, int userId) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080093 try {
94 getDefault().broadcastIntent(
95 null, intent, null, null, Activity.RESULT_OK, null, null,
Dianne Hackborn5ac72a22012-08-29 18:32:08 -070096 null /*permission*/, false, true, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080097 } catch (RemoteException ex) {
98 }
99 }
100
101 static public void noteWakeupAlarm(PendingIntent ps) {
102 try {
103 getDefault().noteWakeupAlarm(ps.getTarget());
104 } catch (RemoteException ex) {
105 }
106 }
107
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -0800108 public ActivityManagerNative() {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800109 attachInterface(this, descriptor);
110 }
111
112 public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
113 throws RemoteException {
114 switch (code) {
115 case START_ACTIVITY_TRANSACTION:
116 {
117 data.enforceInterface(IActivityManager.descriptor);
118 IBinder b = data.readStrongBinder();
119 IApplicationThread app = ApplicationThreadNative.asInterface(b);
120 Intent intent = Intent.CREATOR.createFromParcel(data);
121 String resolvedType = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800122 IBinder resultTo = data.readStrongBinder();
Siva Velusamy92a8b222012-03-09 16:24:04 -0800123 String resultWho = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800124 int requestCode = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700125 int startFlags = data.readInt();
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700126 String profileFile = data.readString();
127 ParcelFileDescriptor profileFd = data.readInt() != 0
128 ? data.readFileDescriptor() : null;
Dianne Hackborna4972e92012-03-14 10:38:05 -0700129 Bundle options = data.readInt() != 0
130 ? Bundle.CREATOR.createFromParcel(data) : null;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800131 int result = startActivity(app, intent, resolvedType,
Dianne Hackborna4972e92012-03-14 10:38:05 -0700132 resultTo, resultWho, requestCode, startFlags,
133 profileFile, profileFd, options);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800134 reply.writeNoException();
135 reply.writeInt(result);
136 return true;
137 }
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700138
Amith Yamasani82644082012-08-03 13:09:11 -0700139 case START_ACTIVITY_AS_USER_TRANSACTION:
140 {
141 data.enforceInterface(IActivityManager.descriptor);
142 IBinder b = data.readStrongBinder();
143 IApplicationThread app = ApplicationThreadNative.asInterface(b);
144 Intent intent = Intent.CREATOR.createFromParcel(data);
145 String resolvedType = data.readString();
146 IBinder resultTo = data.readStrongBinder();
147 String resultWho = data.readString();
148 int requestCode = data.readInt();
149 int startFlags = data.readInt();
150 String profileFile = data.readString();
151 ParcelFileDescriptor profileFd = data.readInt() != 0
152 ? data.readFileDescriptor() : null;
153 Bundle options = data.readInt() != 0
154 ? Bundle.CREATOR.createFromParcel(data) : null;
155 int userId = data.readInt();
156 int result = startActivityAsUser(app, intent, resolvedType,
157 resultTo, resultWho, requestCode, startFlags,
158 profileFile, profileFd, options, userId);
159 reply.writeNoException();
160 reply.writeInt(result);
161 return true;
162 }
163
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800164 case START_ACTIVITY_AND_WAIT_TRANSACTION:
165 {
166 data.enforceInterface(IActivityManager.descriptor);
167 IBinder b = data.readStrongBinder();
168 IApplicationThread app = ApplicationThreadNative.asInterface(b);
169 Intent intent = Intent.CREATOR.createFromParcel(data);
170 String resolvedType = data.readString();
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800171 IBinder resultTo = data.readStrongBinder();
Siva Velusamy92a8b222012-03-09 16:24:04 -0800172 String resultWho = data.readString();
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800173 int requestCode = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700174 int startFlags = data.readInt();
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700175 String profileFile = data.readString();
176 ParcelFileDescriptor profileFd = data.readInt() != 0
177 ? data.readFileDescriptor() : null;
Dianne Hackborna4972e92012-03-14 10:38:05 -0700178 Bundle options = data.readInt() != 0
179 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -0700180 int userId = data.readInt();
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800181 WaitResult result = startActivityAndWait(app, intent, resolvedType,
Dianne Hackborna4972e92012-03-14 10:38:05 -0700182 resultTo, resultWho, requestCode, startFlags,
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -0700183 profileFile, profileFd, options, userId);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800184 reply.writeNoException();
185 result.writeToParcel(reply, 0);
186 return true;
187 }
188
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700189 case START_ACTIVITY_WITH_CONFIG_TRANSACTION:
190 {
191 data.enforceInterface(IActivityManager.descriptor);
192 IBinder b = data.readStrongBinder();
193 IApplicationThread app = ApplicationThreadNative.asInterface(b);
194 Intent intent = Intent.CREATOR.createFromParcel(data);
195 String resolvedType = data.readString();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700196 IBinder resultTo = data.readStrongBinder();
197 String resultWho = data.readString();
198 int requestCode = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700199 int startFlags = data.readInt();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700200 Configuration config = Configuration.CREATOR.createFromParcel(data);
Dianne Hackborna4972e92012-03-14 10:38:05 -0700201 Bundle options = data.readInt() != 0
202 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackborn41203752012-08-31 14:05:51 -0700203 int userId = data.readInt();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700204 int result = startActivityWithConfig(app, intent, resolvedType,
Dianne Hackborn41203752012-08-31 14:05:51 -0700205 resultTo, resultWho, requestCode, startFlags, config, options, userId);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700206 reply.writeNoException();
207 reply.writeInt(result);
208 return true;
209 }
210
Dianne Hackbornfa82f222009-09-17 15:14:12 -0700211 case START_ACTIVITY_INTENT_SENDER_TRANSACTION:
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700212 {
213 data.enforceInterface(IActivityManager.descriptor);
214 IBinder b = data.readStrongBinder();
215 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornfa82f222009-09-17 15:14:12 -0700216 IntentSender intent = IntentSender.CREATOR.createFromParcel(data);
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700217 Intent fillInIntent = null;
218 if (data.readInt() != 0) {
219 fillInIntent = Intent.CREATOR.createFromParcel(data);
220 }
221 String resolvedType = data.readString();
222 IBinder resultTo = data.readStrongBinder();
223 String resultWho = data.readString();
224 int requestCode = data.readInt();
225 int flagsMask = data.readInt();
226 int flagsValues = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700227 Bundle options = data.readInt() != 0
228 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackbornfa82f222009-09-17 15:14:12 -0700229 int result = startActivityIntentSender(app, intent,
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700230 fillInIntent, resolvedType, resultTo, resultWho,
Dianne Hackborna4972e92012-03-14 10:38:05 -0700231 requestCode, flagsMask, flagsValues, options);
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700232 reply.writeNoException();
233 reply.writeInt(result);
234 return true;
235 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800236
237 case START_NEXT_MATCHING_ACTIVITY_TRANSACTION:
238 {
239 data.enforceInterface(IActivityManager.descriptor);
240 IBinder callingActivity = data.readStrongBinder();
241 Intent intent = Intent.CREATOR.createFromParcel(data);
Dianne Hackborna4972e92012-03-14 10:38:05 -0700242 Bundle options = data.readInt() != 0
243 ? Bundle.CREATOR.createFromParcel(data) : null;
244 boolean result = startNextMatchingActivity(callingActivity, intent, options);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800245 reply.writeNoException();
246 reply.writeInt(result ? 1 : 0);
247 return true;
248 }
Dianne Hackbornecc5a9c2012-04-26 18:56:09 -0700249
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800250 case FINISH_ACTIVITY_TRANSACTION: {
251 data.enforceInterface(IActivityManager.descriptor);
252 IBinder token = data.readStrongBinder();
253 Intent resultData = null;
254 int resultCode = data.readInt();
255 if (data.readInt() != 0) {
256 resultData = Intent.CREATOR.createFromParcel(data);
257 }
258 boolean res = finishActivity(token, resultCode, resultData);
259 reply.writeNoException();
260 reply.writeInt(res ? 1 : 0);
261 return true;
262 }
263
264 case FINISH_SUB_ACTIVITY_TRANSACTION: {
265 data.enforceInterface(IActivityManager.descriptor);
266 IBinder token = data.readStrongBinder();
267 String resultWho = data.readString();
268 int requestCode = data.readInt();
269 finishSubActivity(token, resultWho, requestCode);
270 reply.writeNoException();
271 return true;
272 }
273
Dianne Hackbornecc5a9c2012-04-26 18:56:09 -0700274 case FINISH_ACTIVITY_AFFINITY_TRANSACTION: {
275 data.enforceInterface(IActivityManager.descriptor);
276 IBinder token = data.readStrongBinder();
277 boolean res = finishActivityAffinity(token);
278 reply.writeNoException();
279 reply.writeInt(res ? 1 : 0);
280 return true;
281 }
282
Dianne Hackborn061d58a2010-03-12 15:07:06 -0800283 case WILL_ACTIVITY_BE_VISIBLE_TRANSACTION: {
284 data.enforceInterface(IActivityManager.descriptor);
285 IBinder token = data.readStrongBinder();
286 boolean res = willActivityBeVisible(token);
287 reply.writeNoException();
288 reply.writeInt(res ? 1 : 0);
289 return true;
290 }
291
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800292 case REGISTER_RECEIVER_TRANSACTION:
293 {
294 data.enforceInterface(IActivityManager.descriptor);
295 IBinder b = data.readStrongBinder();
296 IApplicationThread app =
297 b != null ? ApplicationThreadNative.asInterface(b) : null;
Dianne Hackborn6c418d52011-06-29 14:05:33 -0700298 String packageName = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800299 b = data.readStrongBinder();
300 IIntentReceiver rec
301 = b != null ? IIntentReceiver.Stub.asInterface(b) : null;
302 IntentFilter filter = IntentFilter.CREATOR.createFromParcel(data);
303 String perm = data.readString();
Dianne Hackborn20e80982012-08-31 19:00:44 -0700304 int userId = data.readInt();
305 Intent intent = registerReceiver(app, packageName, rec, filter, perm, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800306 reply.writeNoException();
307 if (intent != null) {
308 reply.writeInt(1);
309 intent.writeToParcel(reply, 0);
310 } else {
311 reply.writeInt(0);
312 }
313 return true;
314 }
315
316 case UNREGISTER_RECEIVER_TRANSACTION:
317 {
318 data.enforceInterface(IActivityManager.descriptor);
319 IBinder b = data.readStrongBinder();
320 if (b == null) {
321 return true;
322 }
323 IIntentReceiver rec = IIntentReceiver.Stub.asInterface(b);
324 unregisterReceiver(rec);
325 reply.writeNoException();
326 return true;
327 }
328
329 case BROADCAST_INTENT_TRANSACTION:
330 {
331 data.enforceInterface(IActivityManager.descriptor);
332 IBinder b = data.readStrongBinder();
333 IApplicationThread app =
334 b != null ? ApplicationThreadNative.asInterface(b) : null;
335 Intent intent = Intent.CREATOR.createFromParcel(data);
336 String resolvedType = data.readString();
337 b = data.readStrongBinder();
338 IIntentReceiver resultTo =
339 b != null ? IIntentReceiver.Stub.asInterface(b) : null;
340 int resultCode = data.readInt();
341 String resultData = data.readString();
342 Bundle resultExtras = data.readBundle();
343 String perm = data.readString();
344 boolean serialized = data.readInt() != 0;
345 boolean sticky = data.readInt() != 0;
Amith Yamasani742a6712011-05-04 14:49:28 -0700346 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800347 int res = broadcastIntent(app, intent, resolvedType, resultTo,
348 resultCode, resultData, resultExtras, perm,
Amith Yamasani742a6712011-05-04 14:49:28 -0700349 serialized, sticky, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800350 reply.writeNoException();
351 reply.writeInt(res);
352 return true;
353 }
354
355 case UNBROADCAST_INTENT_TRANSACTION:
356 {
357 data.enforceInterface(IActivityManager.descriptor);
358 IBinder b = data.readStrongBinder();
359 IApplicationThread app = b != null ? ApplicationThreadNative.asInterface(b) : null;
360 Intent intent = Intent.CREATOR.createFromParcel(data);
Amith Yamasani742a6712011-05-04 14:49:28 -0700361 int userId = data.readInt();
362 unbroadcastIntent(app, intent, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800363 reply.writeNoException();
364 return true;
365 }
366
367 case FINISH_RECEIVER_TRANSACTION: {
368 data.enforceInterface(IActivityManager.descriptor);
369 IBinder who = data.readStrongBinder();
370 int resultCode = data.readInt();
371 String resultData = data.readString();
372 Bundle resultExtras = data.readBundle();
373 boolean resultAbort = data.readInt() != 0;
374 if (who != null) {
375 finishReceiver(who, resultCode, resultData, resultExtras, resultAbort);
376 }
377 reply.writeNoException();
378 return true;
379 }
380
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800381 case ATTACH_APPLICATION_TRANSACTION: {
382 data.enforceInterface(IActivityManager.descriptor);
383 IApplicationThread app = ApplicationThreadNative.asInterface(
384 data.readStrongBinder());
385 if (app != null) {
386 attachApplication(app);
387 }
388 reply.writeNoException();
389 return true;
390 }
391
392 case ACTIVITY_IDLE_TRANSACTION: {
393 data.enforceInterface(IActivityManager.descriptor);
394 IBinder token = data.readStrongBinder();
Dianne Hackborne88846e2009-09-30 21:34:25 -0700395 Configuration config = null;
396 if (data.readInt() != 0) {
397 config = Configuration.CREATOR.createFromParcel(data);
398 }
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700399 boolean stopProfiling = data.readInt() != 0;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800400 if (token != null) {
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700401 activityIdle(token, config, stopProfiling);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800402 }
403 reply.writeNoException();
404 return true;
405 }
406
Dianne Hackbornad9b32112012-09-17 15:35:01 -0700407 case ACTIVITY_RESUMED_TRANSACTION: {
408 data.enforceInterface(IActivityManager.descriptor);
409 IBinder token = data.readStrongBinder();
410 activityResumed(token);
411 reply.writeNoException();
412 return true;
413 }
414
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800415 case ACTIVITY_PAUSED_TRANSACTION: {
416 data.enforceInterface(IActivityManager.descriptor);
417 IBinder token = data.readStrongBinder();
Dianne Hackborn0aae2d42010-12-07 23:51:29 -0800418 activityPaused(token);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800419 reply.writeNoException();
420 return true;
421 }
422
423 case ACTIVITY_STOPPED_TRANSACTION: {
424 data.enforceInterface(IActivityManager.descriptor);
425 IBinder token = data.readStrongBinder();
Dianne Hackborn0aae2d42010-12-07 23:51:29 -0800426 Bundle map = data.readBundle();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800427 Bitmap thumbnail = data.readInt() != 0
428 ? Bitmap.CREATOR.createFromParcel(data) : null;
429 CharSequence description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data);
Dianne Hackborn0aae2d42010-12-07 23:51:29 -0800430 activityStopped(token, map, thumbnail, description);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800431 reply.writeNoException();
432 return true;
433 }
434
Dianne Hackborn4eba96b2011-01-21 13:34:36 -0800435 case ACTIVITY_SLEPT_TRANSACTION: {
436 data.enforceInterface(IActivityManager.descriptor);
437 IBinder token = data.readStrongBinder();
438 activitySlept(token);
439 reply.writeNoException();
440 return true;
441 }
442
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800443 case ACTIVITY_DESTROYED_TRANSACTION: {
444 data.enforceInterface(IActivityManager.descriptor);
445 IBinder token = data.readStrongBinder();
446 activityDestroyed(token);
447 reply.writeNoException();
448 return true;
449 }
450
451 case GET_CALLING_PACKAGE_TRANSACTION: {
452 data.enforceInterface(IActivityManager.descriptor);
453 IBinder token = data.readStrongBinder();
454 String res = token != null ? getCallingPackage(token) : null;
455 reply.writeNoException();
456 reply.writeString(res);
457 return true;
458 }
459
460 case GET_CALLING_ACTIVITY_TRANSACTION: {
461 data.enforceInterface(IActivityManager.descriptor);
462 IBinder token = data.readStrongBinder();
463 ComponentName cn = getCallingActivity(token);
464 reply.writeNoException();
465 ComponentName.writeToParcel(cn, reply);
466 return true;
467 }
468
469 case GET_TASKS_TRANSACTION: {
470 data.enforceInterface(IActivityManager.descriptor);
471 int maxNum = data.readInt();
472 int fl = data.readInt();
473 IBinder receiverBinder = data.readStrongBinder();
474 IThumbnailReceiver receiver = receiverBinder != null
475 ? IThumbnailReceiver.Stub.asInterface(receiverBinder)
476 : null;
477 List list = getTasks(maxNum, fl, receiver);
478 reply.writeNoException();
479 int N = list != null ? list.size() : -1;
480 reply.writeInt(N);
481 int i;
482 for (i=0; i<N; i++) {
483 ActivityManager.RunningTaskInfo info =
484 (ActivityManager.RunningTaskInfo)list.get(i);
485 info.writeToParcel(reply, 0);
486 }
487 return true;
488 }
489
490 case GET_RECENT_TASKS_TRANSACTION: {
491 data.enforceInterface(IActivityManager.descriptor);
492 int maxNum = data.readInt();
493 int fl = data.readInt();
Amith Yamasani82644082012-08-03 13:09:11 -0700494 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800495 List<ActivityManager.RecentTaskInfo> list = getRecentTasks(maxNum,
Amith Yamasani82644082012-08-03 13:09:11 -0700496 fl, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800497 reply.writeNoException();
498 reply.writeTypedList(list);
499 return true;
500 }
Dianne Hackborn15491c62012-09-19 10:59:14 -0700501
Dianne Hackbornf26fd992011-04-08 18:14:09 -0700502 case GET_TASK_THUMBNAILS_TRANSACTION: {
Dianne Hackbornd94df452011-02-16 18:53:31 -0800503 data.enforceInterface(IActivityManager.descriptor);
504 int id = data.readInt();
Dianne Hackbornf26fd992011-04-08 18:14:09 -0700505 ActivityManager.TaskThumbnails bm = getTaskThumbnails(id);
Dianne Hackbornd94df452011-02-16 18:53:31 -0800506 reply.writeNoException();
507 if (bm != null) {
508 reply.writeInt(1);
509 bm.writeToParcel(reply, 0);
510 } else {
511 reply.writeInt(0);
512 }
513 return true;
514 }
Dianne Hackborn15491c62012-09-19 10:59:14 -0700515
516 case GET_TASK_TOP_THUMBNAIL_TRANSACTION: {
517 data.enforceInterface(IActivityManager.descriptor);
518 int id = data.readInt();
519 Bitmap bm = getTaskTopThumbnail(id);
520 reply.writeNoException();
521 if (bm != null) {
522 reply.writeInt(1);
523 bm.writeToParcel(reply, 0);
524 } else {
525 reply.writeInt(0);
526 }
527 return true;
528 }
529
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800530 case GET_SERVICES_TRANSACTION: {
531 data.enforceInterface(IActivityManager.descriptor);
532 int maxNum = data.readInt();
533 int fl = data.readInt();
534 List list = getServices(maxNum, fl);
535 reply.writeNoException();
536 int N = list != null ? list.size() : -1;
537 reply.writeInt(N);
538 int i;
539 for (i=0; i<N; i++) {
540 ActivityManager.RunningServiceInfo info =
541 (ActivityManager.RunningServiceInfo)list.get(i);
542 info.writeToParcel(reply, 0);
543 }
544 return true;
545 }
546
547 case GET_PROCESSES_IN_ERROR_STATE_TRANSACTION: {
548 data.enforceInterface(IActivityManager.descriptor);
549 List<ActivityManager.ProcessErrorStateInfo> list = getProcessesInErrorState();
550 reply.writeNoException();
551 reply.writeTypedList(list);
552 return true;
553 }
554
555 case GET_RUNNING_APP_PROCESSES_TRANSACTION: {
556 data.enforceInterface(IActivityManager.descriptor);
557 List<ActivityManager.RunningAppProcessInfo> list = getRunningAppProcesses();
558 reply.writeNoException();
559 reply.writeTypedList(list);
560 return true;
561 }
562
Suchi Amalapurapuf7f5dda2010-03-23 10:34:28 -0700563 case GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION: {
564 data.enforceInterface(IActivityManager.descriptor);
565 List<ApplicationInfo> list = getRunningExternalApplications();
566 reply.writeNoException();
567 reply.writeTypedList(list);
568 return true;
569 }
570
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800571 case MOVE_TASK_TO_FRONT_TRANSACTION: {
572 data.enforceInterface(IActivityManager.descriptor);
573 int task = data.readInt();
Dianne Hackborn621e17d2010-11-22 15:59:56 -0800574 int fl = data.readInt();
Dianne Hackborn8078d8c2012-03-20 11:11:26 -0700575 Bundle options = data.readInt() != 0
576 ? Bundle.CREATOR.createFromParcel(data) : null;
577 moveTaskToFront(task, fl, options);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800578 reply.writeNoException();
579 return true;
580 }
581
582 case MOVE_TASK_TO_BACK_TRANSACTION: {
583 data.enforceInterface(IActivityManager.descriptor);
584 int task = data.readInt();
585 moveTaskToBack(task);
586 reply.writeNoException();
587 return true;
588 }
589
590 case MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION: {
591 data.enforceInterface(IActivityManager.descriptor);
592 IBinder token = data.readStrongBinder();
593 boolean nonRoot = data.readInt() != 0;
594 boolean res = moveActivityTaskToBack(token, nonRoot);
595 reply.writeNoException();
596 reply.writeInt(res ? 1 : 0);
597 return true;
598 }
599
600 case MOVE_TASK_BACKWARDS_TRANSACTION: {
601 data.enforceInterface(IActivityManager.descriptor);
602 int task = data.readInt();
603 moveTaskBackwards(task);
604 reply.writeNoException();
605 return true;
606 }
607
608 case GET_TASK_FOR_ACTIVITY_TRANSACTION: {
609 data.enforceInterface(IActivityManager.descriptor);
610 IBinder token = data.readStrongBinder();
611 boolean onlyRoot = data.readInt() != 0;
612 int res = token != null
613 ? getTaskForActivity(token, onlyRoot) : -1;
614 reply.writeNoException();
615 reply.writeInt(res);
616 return true;
617 }
618
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800619 case REPORT_THUMBNAIL_TRANSACTION: {
620 data.enforceInterface(IActivityManager.descriptor);
621 IBinder token = data.readStrongBinder();
622 Bitmap thumbnail = data.readInt() != 0
623 ? Bitmap.CREATOR.createFromParcel(data) : null;
624 CharSequence description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data);
625 reportThumbnail(token, thumbnail, description);
626 reply.writeNoException();
627 return true;
628 }
629
630 case GET_CONTENT_PROVIDER_TRANSACTION: {
631 data.enforceInterface(IActivityManager.descriptor);
632 IBinder b = data.readStrongBinder();
633 IApplicationThread app = ApplicationThreadNative.asInterface(b);
634 String name = data.readString();
Jeff Sharkey6d515712012-09-20 16:06:08 -0700635 int userId = data.readInt();
Dianne Hackborn6ae8d182012-05-23 13:12:42 -0700636 boolean stable = data.readInt() != 0;
Jeff Sharkey6d515712012-09-20 16:06:08 -0700637 ContentProviderHolder cph = getContentProvider(app, name, userId, stable);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800638 reply.writeNoException();
639 if (cph != null) {
640 reply.writeInt(1);
641 cph.writeToParcel(reply, 0);
642 } else {
643 reply.writeInt(0);
644 }
645 return true;
646 }
647
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800648 case GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION: {
649 data.enforceInterface(IActivityManager.descriptor);
650 String name = data.readString();
Jeff Sharkey6d515712012-09-20 16:06:08 -0700651 int userId = data.readInt();
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800652 IBinder token = data.readStrongBinder();
Jeff Sharkey6d515712012-09-20 16:06:08 -0700653 ContentProviderHolder cph = getContentProviderExternal(name, userId, token);
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800654 reply.writeNoException();
655 if (cph != null) {
656 reply.writeInt(1);
657 cph.writeToParcel(reply, 0);
658 } else {
659 reply.writeInt(0);
660 }
661 return true;
662 }
663
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800664 case PUBLISH_CONTENT_PROVIDERS_TRANSACTION: {
665 data.enforceInterface(IActivityManager.descriptor);
666 IBinder b = data.readStrongBinder();
667 IApplicationThread app = ApplicationThreadNative.asInterface(b);
668 ArrayList<ContentProviderHolder> providers =
669 data.createTypedArrayList(ContentProviderHolder.CREATOR);
670 publishContentProviders(app, providers);
671 reply.writeNoException();
672 return true;
673 }
674
Dianne Hackborn6ae8d182012-05-23 13:12:42 -0700675 case REF_CONTENT_PROVIDER_TRANSACTION: {
676 data.enforceInterface(IActivityManager.descriptor);
677 IBinder b = data.readStrongBinder();
678 int stable = data.readInt();
679 int unstable = data.readInt();
680 boolean res = refContentProvider(b, stable, unstable);
681 reply.writeNoException();
682 reply.writeInt(res ? 1 : 0);
683 return true;
684 }
685
686 case UNSTABLE_PROVIDER_DIED_TRANSACTION: {
687 data.enforceInterface(IActivityManager.descriptor);
688 IBinder b = data.readStrongBinder();
689 unstableProviderDied(b);
690 reply.writeNoException();
691 return true;
692 }
693
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800694 case REMOVE_CONTENT_PROVIDER_TRANSACTION: {
695 data.enforceInterface(IActivityManager.descriptor);
696 IBinder b = data.readStrongBinder();
Dianne Hackborn6ae8d182012-05-23 13:12:42 -0700697 boolean stable = data.readInt() != 0;
698 removeContentProvider(b, stable);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800699 reply.writeNoException();
700 return true;
701 }
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800702
703 case REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION: {
704 data.enforceInterface(IActivityManager.descriptor);
705 String name = data.readString();
706 IBinder token = data.readStrongBinder();
707 removeContentProviderExternal(name, token);
708 reply.writeNoException();
709 return true;
710 }
711
Dianne Hackborndd9b82c2009-09-03 00:18:47 -0700712 case GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION: {
713 data.enforceInterface(IActivityManager.descriptor);
714 ComponentName comp = ComponentName.CREATOR.createFromParcel(data);
715 PendingIntent pi = getRunningServiceControlPanel(comp);
716 reply.writeNoException();
717 PendingIntent.writePendingIntentOrNullToParcel(pi, reply);
718 return true;
719 }
720
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800721 case START_SERVICE_TRANSACTION: {
722 data.enforceInterface(IActivityManager.descriptor);
723 IBinder b = data.readStrongBinder();
724 IApplicationThread app = ApplicationThreadNative.asInterface(b);
725 Intent service = Intent.CREATOR.createFromParcel(data);
726 String resolvedType = data.readString();
Dianne Hackborn7767eac2012-08-23 18:25:40 -0700727 int userId = data.readInt();
728 ComponentName cn = startService(app, service, resolvedType, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800729 reply.writeNoException();
730 ComponentName.writeToParcel(cn, reply);
731 return true;
732 }
733
734 case STOP_SERVICE_TRANSACTION: {
735 data.enforceInterface(IActivityManager.descriptor);
736 IBinder b = data.readStrongBinder();
737 IApplicationThread app = ApplicationThreadNative.asInterface(b);
738 Intent service = Intent.CREATOR.createFromParcel(data);
739 String resolvedType = data.readString();
Dianne Hackborn7767eac2012-08-23 18:25:40 -0700740 int userId = data.readInt();
741 int res = stopService(app, service, resolvedType, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800742 reply.writeNoException();
743 reply.writeInt(res);
744 return true;
745 }
746
747 case STOP_SERVICE_TOKEN_TRANSACTION: {
748 data.enforceInterface(IActivityManager.descriptor);
749 ComponentName className = ComponentName.readFromParcel(data);
750 IBinder token = data.readStrongBinder();
751 int startId = data.readInt();
752 boolean res = stopServiceToken(className, token, startId);
753 reply.writeNoException();
754 reply.writeInt(res ? 1 : 0);
755 return true;
756 }
757
758 case SET_SERVICE_FOREGROUND_TRANSACTION: {
759 data.enforceInterface(IActivityManager.descriptor);
760 ComponentName className = ComponentName.readFromParcel(data);
761 IBinder token = data.readStrongBinder();
Dianne Hackbornd8a43f62009-08-17 23:33:56 -0700762 int id = data.readInt();
763 Notification notification = null;
764 if (data.readInt() != 0) {
765 notification = Notification.CREATOR.createFromParcel(data);
766 }
767 boolean removeNotification = data.readInt() != 0;
768 setServiceForeground(className, token, id, notification, removeNotification);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800769 reply.writeNoException();
770 return true;
771 }
772
773 case BIND_SERVICE_TRANSACTION: {
774 data.enforceInterface(IActivityManager.descriptor);
775 IBinder b = data.readStrongBinder();
776 IApplicationThread app = ApplicationThreadNative.asInterface(b);
777 IBinder token = data.readStrongBinder();
778 Intent service = Intent.CREATOR.createFromParcel(data);
779 String resolvedType = data.readString();
780 b = data.readStrongBinder();
781 int fl = data.readInt();
Amith Yamasani37ce3a82012-02-06 12:04:42 -0800782 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800783 IServiceConnection conn = IServiceConnection.Stub.asInterface(b);
Amith Yamasani37ce3a82012-02-06 12:04:42 -0800784 int res = bindService(app, token, service, resolvedType, conn, fl, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800785 reply.writeNoException();
786 reply.writeInt(res);
787 return true;
788 }
789
790 case UNBIND_SERVICE_TRANSACTION: {
791 data.enforceInterface(IActivityManager.descriptor);
792 IBinder b = data.readStrongBinder();
793 IServiceConnection conn = IServiceConnection.Stub.asInterface(b);
794 boolean res = unbindService(conn);
795 reply.writeNoException();
796 reply.writeInt(res ? 1 : 0);
797 return true;
798 }
799
800 case PUBLISH_SERVICE_TRANSACTION: {
801 data.enforceInterface(IActivityManager.descriptor);
802 IBinder token = data.readStrongBinder();
803 Intent intent = Intent.CREATOR.createFromParcel(data);
804 IBinder service = data.readStrongBinder();
805 publishService(token, intent, service);
806 reply.writeNoException();
807 return true;
808 }
809
810 case UNBIND_FINISHED_TRANSACTION: {
811 data.enforceInterface(IActivityManager.descriptor);
812 IBinder token = data.readStrongBinder();
813 Intent intent = Intent.CREATOR.createFromParcel(data);
814 boolean doRebind = data.readInt() != 0;
815 unbindFinished(token, intent, doRebind);
816 reply.writeNoException();
817 return true;
818 }
819
820 case SERVICE_DONE_EXECUTING_TRANSACTION: {
821 data.enforceInterface(IActivityManager.descriptor);
822 IBinder token = data.readStrongBinder();
Dianne Hackbornf6f9f2d2009-08-21 16:26:03 -0700823 int type = data.readInt();
824 int startId = data.readInt();
825 int res = data.readInt();
826 serviceDoneExecuting(token, type, startId, res);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800827 reply.writeNoException();
828 return true;
829 }
830
831 case START_INSTRUMENTATION_TRANSACTION: {
832 data.enforceInterface(IActivityManager.descriptor);
833 ComponentName className = ComponentName.readFromParcel(data);
834 String profileFile = data.readString();
835 int fl = data.readInt();
836 Bundle arguments = data.readBundle();
837 IBinder b = data.readStrongBinder();
838 IInstrumentationWatcher w = IInstrumentationWatcher.Stub.asInterface(b);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -0700839 int userId = data.readInt();
840 boolean res = startInstrumentation(className, profileFile, fl, arguments, w, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800841 reply.writeNoException();
842 reply.writeInt(res ? 1 : 0);
843 return true;
844 }
845
846
847 case FINISH_INSTRUMENTATION_TRANSACTION: {
848 data.enforceInterface(IActivityManager.descriptor);
849 IBinder b = data.readStrongBinder();
850 IApplicationThread app = ApplicationThreadNative.asInterface(b);
851 int resultCode = data.readInt();
852 Bundle results = data.readBundle();
853 finishInstrumentation(app, resultCode, results);
854 reply.writeNoException();
855 return true;
856 }
857
858 case GET_CONFIGURATION_TRANSACTION: {
859 data.enforceInterface(IActivityManager.descriptor);
860 Configuration config = getConfiguration();
861 reply.writeNoException();
862 config.writeToParcel(reply, 0);
863 return true;
864 }
865
866 case UPDATE_CONFIGURATION_TRANSACTION: {
867 data.enforceInterface(IActivityManager.descriptor);
868 Configuration config = Configuration.CREATOR.createFromParcel(data);
869 updateConfiguration(config);
870 reply.writeNoException();
871 return true;
872 }
873
874 case SET_REQUESTED_ORIENTATION_TRANSACTION: {
875 data.enforceInterface(IActivityManager.descriptor);
876 IBinder token = data.readStrongBinder();
877 int requestedOrientation = data.readInt();
878 setRequestedOrientation(token, requestedOrientation);
879 reply.writeNoException();
880 return true;
881 }
882
883 case GET_REQUESTED_ORIENTATION_TRANSACTION: {
884 data.enforceInterface(IActivityManager.descriptor);
885 IBinder token = data.readStrongBinder();
886 int req = getRequestedOrientation(token);
887 reply.writeNoException();
888 reply.writeInt(req);
889 return true;
890 }
891
892 case GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION: {
893 data.enforceInterface(IActivityManager.descriptor);
894 IBinder token = data.readStrongBinder();
895 ComponentName cn = getActivityClassForToken(token);
896 reply.writeNoException();
897 ComponentName.writeToParcel(cn, reply);
898 return true;
899 }
900
901 case GET_PACKAGE_FOR_TOKEN_TRANSACTION: {
902 data.enforceInterface(IActivityManager.descriptor);
903 IBinder token = data.readStrongBinder();
904 reply.writeNoException();
905 reply.writeString(getPackageForToken(token));
906 return true;
907 }
908
909 case GET_INTENT_SENDER_TRANSACTION: {
910 data.enforceInterface(IActivityManager.descriptor);
911 int type = data.readInt();
912 String packageName = data.readString();
913 IBinder token = data.readStrongBinder();
914 String resultWho = data.readString();
915 int requestCode = data.readInt();
Dianne Hackborn621e17d2010-11-22 15:59:56 -0800916 Intent[] requestIntents;
917 String[] requestResolvedTypes;
918 if (data.readInt() != 0) {
919 requestIntents = data.createTypedArray(Intent.CREATOR);
920 requestResolvedTypes = data.createStringArray();
921 } else {
922 requestIntents = null;
923 requestResolvedTypes = null;
924 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800925 int fl = data.readInt();
Dianne Hackborn7a2195c2012-03-19 17:38:00 -0700926 Bundle options = data.readInt() != 0
927 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackborn41203752012-08-31 14:05:51 -0700928 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800929 IIntentSender res = getIntentSender(type, packageName, token,
Dianne Hackborn621e17d2010-11-22 15:59:56 -0800930 resultWho, requestCode, requestIntents,
Dianne Hackborn41203752012-08-31 14:05:51 -0700931 requestResolvedTypes, fl, options, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800932 reply.writeNoException();
933 reply.writeStrongBinder(res != null ? res.asBinder() : null);
934 return true;
935 }
936
937 case CANCEL_INTENT_SENDER_TRANSACTION: {
938 data.enforceInterface(IActivityManager.descriptor);
939 IIntentSender r = IIntentSender.Stub.asInterface(
940 data.readStrongBinder());
941 cancelIntentSender(r);
942 reply.writeNoException();
943 return true;
944 }
945
946 case GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION: {
947 data.enforceInterface(IActivityManager.descriptor);
948 IIntentSender r = IIntentSender.Stub.asInterface(
949 data.readStrongBinder());
950 String res = getPackageForIntentSender(r);
951 reply.writeNoException();
952 reply.writeString(res);
953 return true;
954 }
955
Christopher Tatec4a07d12012-04-06 14:19:13 -0700956 case GET_UID_FOR_INTENT_SENDER_TRANSACTION: {
957 data.enforceInterface(IActivityManager.descriptor);
958 IIntentSender r = IIntentSender.Stub.asInterface(
959 data.readStrongBinder());
960 int res = getUidForIntentSender(r);
961 reply.writeNoException();
962 reply.writeInt(res);
963 return true;
964 }
965
Dianne Hackborn41203752012-08-31 14:05:51 -0700966 case HANDLE_INCOMING_USER_TRANSACTION: {
967 data.enforceInterface(IActivityManager.descriptor);
968 int callingPid = data.readInt();
969 int callingUid = data.readInt();
970 int userId = data.readInt();
971 boolean allowAll = data.readInt() != 0 ;
972 boolean requireFull = data.readInt() != 0;
973 String name = data.readString();
974 String callerPackage = data.readString();
975 int res = handleIncomingUser(callingPid, callingUid, userId, allowAll,
976 requireFull, name, callerPackage);
977 reply.writeNoException();
978 reply.writeInt(res);
979 return true;
980 }
981
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800982 case SET_PROCESS_LIMIT_TRANSACTION: {
983 data.enforceInterface(IActivityManager.descriptor);
984 int max = data.readInt();
985 setProcessLimit(max);
986 reply.writeNoException();
987 return true;
988 }
989
990 case GET_PROCESS_LIMIT_TRANSACTION: {
991 data.enforceInterface(IActivityManager.descriptor);
992 int limit = getProcessLimit();
993 reply.writeNoException();
994 reply.writeInt(limit);
995 return true;
996 }
997
998 case SET_PROCESS_FOREGROUND_TRANSACTION: {
999 data.enforceInterface(IActivityManager.descriptor);
1000 IBinder token = data.readStrongBinder();
1001 int pid = data.readInt();
1002 boolean isForeground = data.readInt() != 0;
1003 setProcessForeground(token, pid, isForeground);
1004 reply.writeNoException();
1005 return true;
1006 }
1007
1008 case CHECK_PERMISSION_TRANSACTION: {
1009 data.enforceInterface(IActivityManager.descriptor);
1010 String perm = data.readString();
1011 int pid = data.readInt();
1012 int uid = data.readInt();
1013 int res = checkPermission(perm, pid, uid);
1014 reply.writeNoException();
1015 reply.writeInt(res);
1016 return true;
1017 }
1018
1019 case CHECK_URI_PERMISSION_TRANSACTION: {
1020 data.enforceInterface(IActivityManager.descriptor);
1021 Uri uri = Uri.CREATOR.createFromParcel(data);
1022 int pid = data.readInt();
1023 int uid = data.readInt();
1024 int mode = data.readInt();
1025 int res = checkUriPermission(uri, pid, uid, mode);
1026 reply.writeNoException();
1027 reply.writeInt(res);
1028 return true;
1029 }
1030
1031 case CLEAR_APP_DATA_TRANSACTION: {
1032 data.enforceInterface(IActivityManager.descriptor);
1033 String packageName = data.readString();
1034 IPackageDataObserver observer = IPackageDataObserver.Stub.asInterface(
1035 data.readStrongBinder());
Amith Yamasani742a6712011-05-04 14:49:28 -07001036 int userId = data.readInt();
1037 boolean res = clearApplicationUserData(packageName, observer, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001038 reply.writeNoException();
1039 reply.writeInt(res ? 1 : 0);
1040 return true;
1041 }
1042
1043 case GRANT_URI_PERMISSION_TRANSACTION: {
1044 data.enforceInterface(IActivityManager.descriptor);
1045 IBinder b = data.readStrongBinder();
1046 IApplicationThread app = ApplicationThreadNative.asInterface(b);
1047 String targetPkg = data.readString();
1048 Uri uri = Uri.CREATOR.createFromParcel(data);
1049 int mode = data.readInt();
1050 grantUriPermission(app, targetPkg, uri, mode);
1051 reply.writeNoException();
1052 return true;
1053 }
1054
1055 case REVOKE_URI_PERMISSION_TRANSACTION: {
1056 data.enforceInterface(IActivityManager.descriptor);
1057 IBinder b = data.readStrongBinder();
1058 IApplicationThread app = ApplicationThreadNative.asInterface(b);
1059 Uri uri = Uri.CREATOR.createFromParcel(data);
1060 int mode = data.readInt();
1061 revokeUriPermission(app, uri, mode);
1062 reply.writeNoException();
1063 return true;
1064 }
1065
1066 case SHOW_WAITING_FOR_DEBUGGER_TRANSACTION: {
1067 data.enforceInterface(IActivityManager.descriptor);
1068 IBinder b = data.readStrongBinder();
1069 IApplicationThread app = ApplicationThreadNative.asInterface(b);
1070 boolean waiting = data.readInt() != 0;
1071 showWaitingForDebugger(app, waiting);
1072 reply.writeNoException();
1073 return true;
1074 }
1075
1076 case GET_MEMORY_INFO_TRANSACTION: {
1077 data.enforceInterface(IActivityManager.descriptor);
1078 ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
1079 getMemoryInfo(mi);
1080 reply.writeNoException();
1081 mi.writeToParcel(reply, 0);
1082 return true;
1083 }
1084
1085 case UNHANDLED_BACK_TRANSACTION: {
1086 data.enforceInterface(IActivityManager.descriptor);
1087 unhandledBack();
1088 reply.writeNoException();
1089 return true;
1090 }
1091
1092 case OPEN_CONTENT_URI_TRANSACTION: {
1093 data.enforceInterface(IActivityManager.descriptor);
1094 Uri uri = Uri.parse(data.readString());
1095 ParcelFileDescriptor pfd = openContentUri(uri);
1096 reply.writeNoException();
1097 if (pfd != null) {
1098 reply.writeInt(1);
1099 pfd.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
1100 } else {
1101 reply.writeInt(0);
1102 }
1103 return true;
1104 }
Dianne Hackbornff5b1582012-04-12 17:24:07 -07001105
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001106 case GOING_TO_SLEEP_TRANSACTION: {
1107 data.enforceInterface(IActivityManager.descriptor);
1108 goingToSleep();
1109 reply.writeNoException();
1110 return true;
1111 }
1112
1113 case WAKING_UP_TRANSACTION: {
1114 data.enforceInterface(IActivityManager.descriptor);
1115 wakingUp();
1116 reply.writeNoException();
1117 return true;
1118 }
1119
Dianne Hackbornff5b1582012-04-12 17:24:07 -07001120 case SET_LOCK_SCREEN_SHOWN_TRANSACTION: {
1121 data.enforceInterface(IActivityManager.descriptor);
1122 setLockScreenShown(data.readInt() != 0);
1123 reply.writeNoException();
1124 return true;
1125 }
1126
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001127 case SET_DEBUG_APP_TRANSACTION: {
1128 data.enforceInterface(IActivityManager.descriptor);
1129 String pn = data.readString();
1130 boolean wfd = data.readInt() != 0;
1131 boolean per = data.readInt() != 0;
1132 setDebugApp(pn, wfd, per);
1133 reply.writeNoException();
1134 return true;
1135 }
1136
1137 case SET_ALWAYS_FINISH_TRANSACTION: {
1138 data.enforceInterface(IActivityManager.descriptor);
1139 boolean enabled = data.readInt() != 0;
1140 setAlwaysFinish(enabled);
1141 reply.writeNoException();
1142 return true;
1143 }
1144
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001145 case SET_ACTIVITY_CONTROLLER_TRANSACTION: {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001146 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001147 IActivityController watcher = IActivityController.Stub.asInterface(
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001148 data.readStrongBinder());
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001149 setActivityController(watcher);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001150 return true;
1151 }
1152
1153 case ENTER_SAFE_MODE_TRANSACTION: {
1154 data.enforceInterface(IActivityManager.descriptor);
1155 enterSafeMode();
1156 reply.writeNoException();
1157 return true;
1158 }
1159
1160 case NOTE_WAKEUP_ALARM_TRANSACTION: {
1161 data.enforceInterface(IActivityManager.descriptor);
1162 IIntentSender is = IIntentSender.Stub.asInterface(
1163 data.readStrongBinder());
1164 noteWakeupAlarm(is);
1165 reply.writeNoException();
1166 return true;
1167 }
1168
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07001169 case KILL_PIDS_TRANSACTION: {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001170 data.enforceInterface(IActivityManager.descriptor);
1171 int[] pids = data.createIntArray();
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07001172 String reason = data.readString();
Dianne Hackborn64825172011-03-02 21:32:58 -08001173 boolean secure = data.readInt() != 0;
1174 boolean res = killPids(pids, reason, secure);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001175 reply.writeNoException();
1176 reply.writeInt(res ? 1 : 0);
1177 return true;
1178 }
1179
Jeff Sharkeyb9a07012012-03-22 17:00:04 -07001180 case KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION: {
1181 data.enforceInterface(IActivityManager.descriptor);
1182 String reason = data.readString();
1183 boolean res = killProcessesBelowForeground(reason);
1184 reply.writeNoException();
1185 reply.writeInt(res ? 1 : 0);
1186 return true;
1187 }
1188
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001189 case START_RUNNING_TRANSACTION: {
1190 data.enforceInterface(IActivityManager.descriptor);
1191 String pkg = data.readString();
1192 String cls = data.readString();
1193 String action = data.readString();
1194 String indata = data.readString();
1195 startRunning(pkg, cls, action, indata);
1196 reply.writeNoException();
1197 return true;
1198 }
1199
Dan Egnor60d87622009-12-16 16:32:58 -08001200 case HANDLE_APPLICATION_CRASH_TRANSACTION: {
1201 data.enforceInterface(IActivityManager.descriptor);
1202 IBinder app = data.readStrongBinder();
1203 ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data);
1204 handleApplicationCrash(app, ci);
1205 reply.writeNoException();
1206 return true;
1207 }
1208
1209 case HANDLE_APPLICATION_WTF_TRANSACTION: {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001210 data.enforceInterface(IActivityManager.descriptor);
1211 IBinder app = data.readStrongBinder();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001212 String tag = data.readString();
Dan Egnorb7f03672009-12-09 16:22:32 -08001213 ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data);
Dan Egnor60d87622009-12-16 16:32:58 -08001214 boolean res = handleApplicationWtf(app, tag, ci);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001215 reply.writeNoException();
Dan Egnor60d87622009-12-16 16:32:58 -08001216 reply.writeInt(res ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001217 return true;
1218 }
Dan Egnorb7f03672009-12-09 16:22:32 -08001219
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07001220 case HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION: {
1221 data.enforceInterface(IActivityManager.descriptor);
1222 IBinder app = data.readStrongBinder();
Brad Fitzpatrick46d42382010-06-11 13:57:58 -07001223 int violationMask = data.readInt();
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -07001224 StrictMode.ViolationInfo info = new StrictMode.ViolationInfo(data);
1225 handleApplicationStrictModeViolation(app, violationMask, info);
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07001226 reply.writeNoException();
1227 return true;
1228 }
1229
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001230 case SIGNAL_PERSISTENT_PROCESSES_TRANSACTION: {
1231 data.enforceInterface(IActivityManager.descriptor);
1232 int sig = data.readInt();
1233 signalPersistentProcesses(sig);
1234 reply.writeNoException();
1235 return true;
1236 }
1237
Dianne Hackborn03abb812010-01-04 18:43:19 -08001238 case KILL_BACKGROUND_PROCESSES_TRANSACTION: {
1239 data.enforceInterface(IActivityManager.descriptor);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001240 String packageName = data.readString();
Dianne Hackborn1676c852012-09-10 14:52:30 -07001241 int userId = data.readInt();
1242 killBackgroundProcesses(packageName, userId);
Dianne Hackborn03abb812010-01-04 18:43:19 -08001243 reply.writeNoException();
1244 return true;
1245 }
Dianne Hackborne4d4fbc2011-11-08 11:53:28 -08001246
1247 case KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION: {
1248 data.enforceInterface(IActivityManager.descriptor);
1249 killAllBackgroundProcesses();
1250 reply.writeNoException();
1251 return true;
1252 }
Dianne Hackborn03abb812010-01-04 18:43:19 -08001253
1254 case FORCE_STOP_PACKAGE_TRANSACTION: {
1255 data.enforceInterface(IActivityManager.descriptor);
1256 String packageName = data.readString();
Dianne Hackborn1676c852012-09-10 14:52:30 -07001257 int userId = data.readInt();
1258 forceStopPackage(packageName, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001259 reply.writeNoException();
1260 return true;
1261 }
Dianne Hackborn27ff9132012-03-06 14:57:58 -08001262
1263 case GET_MY_MEMORY_STATE_TRANSACTION: {
1264 data.enforceInterface(IActivityManager.descriptor);
1265 ActivityManager.RunningAppProcessInfo info =
1266 new ActivityManager.RunningAppProcessInfo();
1267 getMyMemoryState(info);
1268 reply.writeNoException();
1269 info.writeToParcel(reply, 0);
1270 return true;
1271 }
1272
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001273 case GET_DEVICE_CONFIGURATION_TRANSACTION: {
1274 data.enforceInterface(IActivityManager.descriptor);
1275 ConfigurationInfo config = getDeviceConfigurationInfo();
1276 reply.writeNoException();
1277 config.writeToParcel(reply, 0);
1278 return true;
1279 }
1280
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001281 case PROFILE_CONTROL_TRANSACTION: {
1282 data.enforceInterface(IActivityManager.descriptor);
1283 String process = data.readString();
Dianne Hackborn1676c852012-09-10 14:52:30 -07001284 int userId = data.readInt();
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001285 boolean start = data.readInt() != 0;
Romain Guy9a8c5ce2011-07-21 18:04:29 -07001286 int profileType = data.readInt();
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001287 String path = data.readString();
Dianne Hackborn9c8dd552009-06-23 19:22:52 -07001288 ParcelFileDescriptor fd = data.readInt() != 0
1289 ? data.readFileDescriptor() : null;
Dianne Hackborn1676c852012-09-10 14:52:30 -07001290 boolean res = profileControl(process, userId, start, path, fd, profileType);
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001291 reply.writeNoException();
1292 reply.writeInt(res ? 1 : 0);
1293 return true;
1294 }
1295
Dianne Hackborn55280a92009-05-07 15:53:46 -07001296 case SHUTDOWN_TRANSACTION: {
1297 data.enforceInterface(IActivityManager.descriptor);
1298 boolean res = shutdown(data.readInt());
1299 reply.writeNoException();
1300 reply.writeInt(res ? 1 : 0);
1301 return true;
1302 }
1303
Dianne Hackborn95fc68f2009-05-19 18:37:45 -07001304 case STOP_APP_SWITCHES_TRANSACTION: {
1305 data.enforceInterface(IActivityManager.descriptor);
1306 stopAppSwitches();
1307 reply.writeNoException();
1308 return true;
1309 }
1310
1311 case RESUME_APP_SWITCHES_TRANSACTION: {
1312 data.enforceInterface(IActivityManager.descriptor);
1313 resumeAppSwitches();
1314 reply.writeNoException();
1315 return true;
1316 }
1317
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001318 case PEEK_SERVICE_TRANSACTION: {
1319 data.enforceInterface(IActivityManager.descriptor);
1320 Intent service = Intent.CREATOR.createFromParcel(data);
1321 String resolvedType = data.readString();
1322 IBinder binder = peekService(service, resolvedType);
1323 reply.writeNoException();
1324 reply.writeStrongBinder(binder);
1325 return true;
1326 }
Christopher Tate181fafa2009-05-14 11:12:14 -07001327
1328 case START_BACKUP_AGENT_TRANSACTION: {
1329 data.enforceInterface(IActivityManager.descriptor);
1330 ApplicationInfo info = ApplicationInfo.CREATOR.createFromParcel(data);
1331 int backupRestoreMode = data.readInt();
1332 boolean success = bindBackupAgent(info, backupRestoreMode);
1333 reply.writeNoException();
1334 reply.writeInt(success ? 1 : 0);
1335 return true;
1336 }
1337
1338 case BACKUP_AGENT_CREATED_TRANSACTION: {
1339 data.enforceInterface(IActivityManager.descriptor);
1340 String packageName = data.readString();
1341 IBinder agent = data.readStrongBinder();
1342 backupAgentCreated(packageName, agent);
1343 reply.writeNoException();
1344 return true;
1345 }
1346
1347 case UNBIND_BACKUP_AGENT_TRANSACTION: {
1348 data.enforceInterface(IActivityManager.descriptor);
1349 ApplicationInfo info = ApplicationInfo.CREATOR.createFromParcel(data);
1350 unbindBackupAgent(info);
1351 reply.writeNoException();
1352 return true;
1353 }
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001354
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001355 case KILL_APPLICATION_WITH_APPID_TRANSACTION: {
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07001356 data.enforceInterface(IActivityManager.descriptor);
1357 String pkg = data.readString();
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001358 int appid = data.readInt();
1359 killApplicationWithAppId(pkg, appid);
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07001360 reply.writeNoException();
1361 return true;
1362 }
Dianne Hackborna6ddc8a2009-07-28 17:49:55 -07001363
1364 case CLOSE_SYSTEM_DIALOGS_TRANSACTION: {
1365 data.enforceInterface(IActivityManager.descriptor);
1366 String reason = data.readString();
1367 closeSystemDialogs(reason);
1368 reply.writeNoException();
1369 return true;
1370 }
Dianne Hackborn3025ef32009-08-31 21:31:47 -07001371
1372 case GET_PROCESS_MEMORY_INFO_TRANSACTION: {
1373 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07001374 int[] pids = data.createIntArray();
1375 Debug.MemoryInfo[] res = getProcessMemoryInfo(pids);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07001376 reply.writeNoException();
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07001377 reply.writeTypedArray(res, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07001378 return true;
1379 }
Christopher Tate5e1ab332009-09-01 20:32:49 -07001380
1381 case KILL_APPLICATION_PROCESS_TRANSACTION: {
1382 data.enforceInterface(IActivityManager.descriptor);
1383 String processName = data.readString();
1384 int uid = data.readInt();
1385 killApplicationProcess(processName, uid);
1386 reply.writeNoException();
1387 return true;
1388 }
Dianne Hackborn3b3e1452009-09-24 19:22:12 -07001389
1390 case OVERRIDE_PENDING_TRANSITION_TRANSACTION: {
1391 data.enforceInterface(IActivityManager.descriptor);
1392 IBinder token = data.readStrongBinder();
1393 String packageName = data.readString();
1394 int enterAnim = data.readInt();
1395 int exitAnim = data.readInt();
1396 overridePendingTransition(token, packageName, enterAnim, exitAnim);
Dianne Hackborn9327f4f2010-01-29 10:38:29 -08001397 reply.writeNoException();
1398 return true;
1399 }
1400
1401 case IS_USER_A_MONKEY_TRANSACTION: {
1402 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackborn7e269642010-08-25 19:50:20 -07001403 boolean areThey = isUserAMonkey();
Dianne Hackborn9327f4f2010-01-29 10:38:29 -08001404 reply.writeNoException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001405 reply.writeInt(areThey ? 1 : 0);
Dianne Hackborn3b3e1452009-09-24 19:22:12 -07001406 return true;
1407 }
Dianne Hackborn860755f2010-06-03 18:47:52 -07001408
1409 case FINISH_HEAVY_WEIGHT_APP_TRANSACTION: {
1410 data.enforceInterface(IActivityManager.descriptor);
1411 finishHeavyWeightApp();
1412 reply.writeNoException();
1413 return true;
1414 }
Daniel Sandler69a48172010-06-23 16:29:36 -04001415
1416 case IS_IMMERSIVE_TRANSACTION: {
1417 data.enforceInterface(IActivityManager.descriptor);
1418 IBinder token = data.readStrongBinder();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001419 boolean isit = isImmersive(token);
Daniel Sandler69a48172010-06-23 16:29:36 -04001420 reply.writeNoException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001421 reply.writeInt(isit ? 1 : 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04001422 return true;
1423 }
1424
1425 case SET_IMMERSIVE_TRANSACTION: {
1426 data.enforceInterface(IActivityManager.descriptor);
1427 IBinder token = data.readStrongBinder();
1428 boolean imm = data.readInt() == 1;
1429 setImmersive(token, imm);
1430 reply.writeNoException();
1431 return true;
1432 }
1433
1434 case IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION: {
1435 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackborn7e269642010-08-25 19:50:20 -07001436 boolean isit = isTopActivityImmersive();
Daniel Sandler69a48172010-06-23 16:29:36 -04001437 reply.writeNoException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001438 reply.writeInt(isit ? 1 : 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04001439 return true;
1440 }
1441
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07001442 case CRASH_APPLICATION_TRANSACTION: {
1443 data.enforceInterface(IActivityManager.descriptor);
1444 int uid = data.readInt();
1445 int initialPid = data.readInt();
1446 String packageName = data.readString();
1447 String message = data.readString();
1448 crashApplication(uid, initialPid, packageName, message);
1449 reply.writeNoException();
1450 return true;
1451 }
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07001452
1453 case GET_PROVIDER_MIME_TYPE_TRANSACTION: {
1454 data.enforceInterface(IActivityManager.descriptor);
1455 Uri uri = Uri.CREATOR.createFromParcel(data);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001456 int userId = data.readInt();
1457 String type = getProviderMimeType(uri, userId);
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07001458 reply.writeNoException();
1459 reply.writeString(type);
1460 return true;
1461 }
1462
Dianne Hackborn7e269642010-08-25 19:50:20 -07001463 case NEW_URI_PERMISSION_OWNER_TRANSACTION: {
1464 data.enforceInterface(IActivityManager.descriptor);
1465 String name = data.readString();
1466 IBinder perm = newUriPermissionOwner(name);
1467 reply.writeNoException();
1468 reply.writeStrongBinder(perm);
1469 return true;
1470 }
1471
1472 case GRANT_URI_PERMISSION_FROM_OWNER_TRANSACTION: {
1473 data.enforceInterface(IActivityManager.descriptor);
1474 IBinder owner = data.readStrongBinder();
1475 int fromUid = data.readInt();
1476 String targetPkg = data.readString();
1477 Uri uri = Uri.CREATOR.createFromParcel(data);
1478 int mode = data.readInt();
1479 grantUriPermissionFromOwner(owner, fromUid, targetPkg, uri, mode);
1480 reply.writeNoException();
1481 return true;
1482 }
1483
1484 case REVOKE_URI_PERMISSION_FROM_OWNER_TRANSACTION: {
1485 data.enforceInterface(IActivityManager.descriptor);
1486 IBinder owner = data.readStrongBinder();
1487 Uri uri = null;
1488 if (data.readInt() != 0) {
1489 Uri.CREATOR.createFromParcel(data);
1490 }
1491 int mode = data.readInt();
1492 revokeUriPermissionFromOwner(owner, uri, mode);
1493 reply.writeNoException();
1494 return true;
1495 }
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07001496
Dianne Hackborn90f4aaf2010-09-27 14:58:44 -07001497 case CHECK_GRANT_URI_PERMISSION_TRANSACTION: {
1498 data.enforceInterface(IActivityManager.descriptor);
1499 int callingUid = data.readInt();
1500 String targetPkg = data.readString();
1501 Uri uri = Uri.CREATOR.createFromParcel(data);
1502 int modeFlags = data.readInt();
1503 int res = checkGrantUriPermission(callingUid, targetPkg, uri, modeFlags);
1504 reply.writeNoException();
1505 reply.writeInt(res);
1506 return true;
1507 }
1508
Andy McFadden824c5102010-07-09 16:26:57 -07001509 case DUMP_HEAP_TRANSACTION: {
1510 data.enforceInterface(IActivityManager.descriptor);
1511 String process = data.readString();
Dianne Hackbornb12e1352012-09-26 11:39:20 -07001512 int userId = data.readInt();
Andy McFadden824c5102010-07-09 16:26:57 -07001513 boolean managed = data.readInt() != 0;
1514 String path = data.readString();
1515 ParcelFileDescriptor fd = data.readInt() != 0
1516 ? data.readFileDescriptor() : null;
Dianne Hackborn1676c852012-09-10 14:52:30 -07001517 boolean res = dumpHeap(process, userId, managed, path, fd);
Andy McFadden824c5102010-07-09 16:26:57 -07001518 reply.writeNoException();
1519 reply.writeInt(res ? 1 : 0);
1520 return true;
1521 }
1522
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001523 case START_ACTIVITIES_TRANSACTION:
1524 {
1525 data.enforceInterface(IActivityManager.descriptor);
1526 IBinder b = data.readStrongBinder();
1527 IApplicationThread app = ApplicationThreadNative.asInterface(b);
1528 Intent[] intents = data.createTypedArray(Intent.CREATOR);
1529 String[] resolvedTypes = data.createStringArray();
1530 IBinder resultTo = data.readStrongBinder();
Dianne Hackborna4972e92012-03-14 10:38:05 -07001531 Bundle options = data.readInt() != 0
1532 ? Bundle.CREATOR.createFromParcel(data) : null;
Amith Yamasaniea7e9152012-09-24 16:11:18 -07001533 int userId = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -07001534 int result = startActivities(app, intents, resolvedTypes, resultTo,
Amith Yamasaniea7e9152012-09-24 16:11:18 -07001535 options, userId);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001536 reply.writeNoException();
1537 reply.writeInt(result);
1538 return true;
1539 }
1540
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07001541 case GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION:
1542 {
1543 data.enforceInterface(IActivityManager.descriptor);
1544 int mode = getFrontActivityScreenCompatMode();
1545 reply.writeNoException();
1546 reply.writeInt(mode);
1547 return true;
1548 }
1549
1550 case SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION:
1551 {
1552 data.enforceInterface(IActivityManager.descriptor);
1553 int mode = data.readInt();
1554 setFrontActivityScreenCompatMode(mode);
1555 reply.writeNoException();
1556 reply.writeInt(mode);
1557 return true;
1558 }
1559
1560 case GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION:
1561 {
1562 data.enforceInterface(IActivityManager.descriptor);
1563 String pkg = data.readString();
1564 int mode = getPackageScreenCompatMode(pkg);
1565 reply.writeNoException();
1566 reply.writeInt(mode);
1567 return true;
1568 }
1569
Dianne Hackborne2515ee2011-04-27 18:52:56 -04001570 case SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION:
1571 {
1572 data.enforceInterface(IActivityManager.descriptor);
1573 String pkg = data.readString();
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07001574 int mode = data.readInt();
1575 setPackageScreenCompatMode(pkg, mode);
Dianne Hackborne2515ee2011-04-27 18:52:56 -04001576 reply.writeNoException();
1577 return true;
1578 }
Dianne Hackbornaa9d84c2011-05-09 19:00:59 -07001579
Amith Yamasani4b2e9342011-03-31 12:38:53 -07001580 case SWITCH_USER_TRANSACTION: {
1581 data.enforceInterface(IActivityManager.descriptor);
1582 int userid = data.readInt();
1583 boolean result = switchUser(userid);
1584 reply.writeNoException();
1585 reply.writeInt(result ? 1 : 0);
1586 return true;
1587 }
Amith Yamasani52f1d752012-03-28 18:19:29 -07001588
Dianne Hackborn80a4af22012-08-27 19:18:31 -07001589 case STOP_USER_TRANSACTION: {
1590 data.enforceInterface(IActivityManager.descriptor);
1591 int userid = data.readInt();
1592 IStopUserCallback callback = IStopUserCallback.Stub.asInterface(
1593 data.readStrongBinder());
1594 int result = stopUser(userid, callback);
1595 reply.writeNoException();
1596 reply.writeInt(result);
1597 return true;
1598 }
1599
Amith Yamasani52f1d752012-03-28 18:19:29 -07001600 case GET_CURRENT_USER_TRANSACTION: {
1601 data.enforceInterface(IActivityManager.descriptor);
1602 UserInfo userInfo = getCurrentUser();
1603 reply.writeNoException();
1604 userInfo.writeToParcel(reply, 0);
1605 return true;
1606 }
1607
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001608 case IS_USER_RUNNING_TRANSACTION: {
1609 data.enforceInterface(IActivityManager.descriptor);
1610 int userid = data.readInt();
1611 boolean result = isUserRunning(userid);
1612 reply.writeNoException();
1613 reply.writeInt(result ? 1 : 0);
1614 return true;
1615 }
1616
Dianne Hackbornc72fc672012-09-20 13:12:03 -07001617 case GET_RUNNING_USER_IDS_TRANSACTION: {
1618 data.enforceInterface(IActivityManager.descriptor);
1619 int[] result = getRunningUserIds();
1620 reply.writeNoException();
1621 reply.writeIntArray(result);
1622 return true;
1623 }
1624
Dianne Hackborn0c5001d2011-04-12 18:16:08 -07001625 case REMOVE_SUB_TASK_TRANSACTION:
1626 {
1627 data.enforceInterface(IActivityManager.descriptor);
1628 int taskId = data.readInt();
1629 int subTaskIndex = data.readInt();
1630 boolean result = removeSubTask(taskId, subTaskIndex);
1631 reply.writeNoException();
1632 reply.writeInt(result ? 1 : 0);
1633 return true;
1634 }
1635
1636 case REMOVE_TASK_TRANSACTION:
1637 {
1638 data.enforceInterface(IActivityManager.descriptor);
1639 int taskId = data.readInt();
1640 int fl = data.readInt();
1641 boolean result = removeTask(taskId, fl);
1642 reply.writeNoException();
1643 reply.writeInt(result ? 1 : 0);
1644 return true;
1645 }
Amith Yamasani4b2e9342011-03-31 12:38:53 -07001646
Jeff Sharkeya4620792011-05-20 15:29:23 -07001647 case REGISTER_PROCESS_OBSERVER_TRANSACTION: {
1648 data.enforceInterface(IActivityManager.descriptor);
1649 IProcessObserver observer = IProcessObserver.Stub.asInterface(
1650 data.readStrongBinder());
1651 registerProcessObserver(observer);
1652 return true;
1653 }
1654
1655 case UNREGISTER_PROCESS_OBSERVER_TRANSACTION: {
1656 data.enforceInterface(IActivityManager.descriptor);
1657 IProcessObserver observer = IProcessObserver.Stub.asInterface(
1658 data.readStrongBinder());
1659 unregisterProcessObserver(observer);
1660 return true;
1661 }
1662
Dianne Hackborn36cd41f2011-05-25 21:00:46 -07001663 case GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION:
1664 {
1665 data.enforceInterface(IActivityManager.descriptor);
1666 String pkg = data.readString();
1667 boolean ask = getPackageAskScreenCompat(pkg);
1668 reply.writeNoException();
1669 reply.writeInt(ask ? 1 : 0);
1670 return true;
1671 }
1672
1673 case SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION:
1674 {
1675 data.enforceInterface(IActivityManager.descriptor);
1676 String pkg = data.readString();
1677 boolean ask = data.readInt() != 0;
1678 setPackageAskScreenCompat(pkg, ask);
1679 reply.writeNoException();
1680 return true;
1681 }
1682
Dianne Hackborn6c418d52011-06-29 14:05:33 -07001683 case IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION: {
1684 data.enforceInterface(IActivityManager.descriptor);
1685 IIntentSender r = IIntentSender.Stub.asInterface(
1686 data.readStrongBinder());
1687 boolean res = isIntentSenderTargetedToPackage(r);
1688 reply.writeNoException();
1689 reply.writeInt(res ? 1 : 0);
1690 return true;
1691 }
1692
Dianne Hackborn1927ae82012-06-22 15:21:36 -07001693 case IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION: {
1694 data.enforceInterface(IActivityManager.descriptor);
1695 IIntentSender r = IIntentSender.Stub.asInterface(
1696 data.readStrongBinder());
1697 boolean res = isIntentSenderAnActivity(r);
1698 reply.writeNoException();
1699 reply.writeInt(res ? 1 : 0);
1700 return true;
1701 }
1702
Dianne Hackborn31ca8542011-07-19 14:58:28 -07001703 case UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION: {
1704 data.enforceInterface(IActivityManager.descriptor);
1705 Configuration config = Configuration.CREATOR.createFromParcel(data);
1706 updatePersistentConfiguration(config);
1707 reply.writeNoException();
1708 return true;
1709 }
1710
Dianne Hackbornb437e092011-08-05 17:50:29 -07001711 case GET_PROCESS_PSS_TRANSACTION: {
1712 data.enforceInterface(IActivityManager.descriptor);
1713 int[] pids = data.createIntArray();
1714 long[] pss = getProcessPss(pids);
1715 reply.writeNoException();
1716 reply.writeLongArray(pss);
1717 return true;
1718 }
1719
Dianne Hackborn661cd522011-08-22 00:26:20 -07001720 case SHOW_BOOT_MESSAGE_TRANSACTION: {
1721 data.enforceInterface(IActivityManager.descriptor);
1722 CharSequence msg = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data);
1723 boolean always = data.readInt() != 0;
1724 showBootMessage(msg, always);
1725 reply.writeNoException();
1726 return true;
1727 }
1728
Dianne Hackborn90c52de2011-09-23 12:57:44 -07001729 case DISMISS_KEYGUARD_ON_NEXT_ACTIVITY_TRANSACTION: {
1730 data.enforceInterface(IActivityManager.descriptor);
1731 dismissKeyguardOnNextActivity();
1732 reply.writeNoException();
1733 return true;
1734 }
1735
Adam Powelldd8fab22012-03-22 17:47:27 -07001736 case TARGET_TASK_AFFINITY_MATCHES_ACTIVITY_TRANSACTION: {
1737 data.enforceInterface(IActivityManager.descriptor);
1738 IBinder token = data.readStrongBinder();
1739 String destAffinity = data.readString();
1740 boolean res = targetTaskAffinityMatchesActivity(token, destAffinity);
1741 reply.writeNoException();
1742 reply.writeInt(res ? 1 : 0);
1743 return true;
1744 }
1745
1746 case NAVIGATE_UP_TO_TRANSACTION: {
1747 data.enforceInterface(IActivityManager.descriptor);
1748 IBinder token = data.readStrongBinder();
1749 Intent target = Intent.CREATOR.createFromParcel(data);
1750 int resultCode = data.readInt();
1751 Intent resultData = null;
1752 if (data.readInt() != 0) {
1753 resultData = Intent.CREATOR.createFromParcel(data);
1754 }
1755 boolean res = navigateUpTo(token, target, resultCode, resultData);
1756 reply.writeNoException();
1757 reply.writeInt(res ? 1 : 0);
1758 return true;
1759 }
1760
Dianne Hackborn5320eb82012-05-18 12:05:04 -07001761 case GET_LAUNCHED_FROM_UID_TRANSACTION: {
1762 data.enforceInterface(IActivityManager.descriptor);
1763 IBinder token = data.readStrongBinder();
1764 int res = getLaunchedFromUid(token);
1765 reply.writeNoException();
1766 reply.writeInt(res);
1767 return true;
1768 }
1769
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07001770 case REGISTER_USER_SWITCH_OBSERVER_TRANSACTION: {
1771 data.enforceInterface(IActivityManager.descriptor);
1772 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface(
1773 data.readStrongBinder());
1774 registerUserSwitchObserver(observer);
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07001775 reply.writeNoException();
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07001776 return true;
1777 }
1778
1779 case UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION: {
1780 data.enforceInterface(IActivityManager.descriptor);
1781 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface(
1782 data.readStrongBinder());
1783 unregisterUserSwitchObserver(observer);
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07001784 reply.writeNoException();
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07001785 return true;
1786 }
1787
Dianne Hackbornd4ac8d72012-09-27 23:20:10 -07001788 case REQUEST_BUG_REPORT_TRANSACTION: {
1789 data.enforceInterface(IActivityManager.descriptor);
1790 requestBugReport();
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07001791 reply.writeNoException();
1792 return true;
1793 }
1794
1795 case INPUT_DISPATCHING_TIMED_OUT_TRANSACTION: {
1796 data.enforceInterface(IActivityManager.descriptor);
1797 int pid = data.readInt();
1798 boolean aboveSystem = data.readInt() != 0;
1799 long res = inputDispatchingTimedOut(pid, aboveSystem);
1800 reply.writeNoException();
1801 reply.writeLong(res);
Dianne Hackbornd4ac8d72012-09-27 23:20:10 -07001802 return true;
1803 }
1804
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001805 }
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08001806
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001807 return super.onTransact(code, data, reply, flags);
1808 }
1809
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08001810 public IBinder asBinder() {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001811 return this;
1812 }
1813
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08001814 private static final Singleton<IActivityManager> gDefault = new Singleton<IActivityManager>() {
1815 protected IActivityManager create() {
1816 IBinder b = ServiceManager.getService("activity");
Joe Onorato43a17652011-04-06 19:22:23 -07001817 if (false) {
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08001818 Log.v("ActivityManager", "default service binder = " + b);
1819 }
1820 IActivityManager am = asInterface(b);
Joe Onorato43a17652011-04-06 19:22:23 -07001821 if (false) {
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08001822 Log.v("ActivityManager", "default service = " + am);
1823 }
1824 return am;
1825 }
1826 };
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001827}
1828
1829class ActivityManagerProxy implements IActivityManager
1830{
1831 public ActivityManagerProxy(IBinder remote)
1832 {
1833 mRemote = remote;
1834 }
Siva Velusamy92a8b222012-03-09 16:24:04 -08001835
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001836 public IBinder asBinder()
1837 {
1838 return mRemote;
1839 }
Siva Velusamy92a8b222012-03-09 16:24:04 -08001840
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001841 public int startActivity(IApplicationThread caller, Intent intent,
Dianne Hackborna4972e92012-03-14 10:38:05 -07001842 String resolvedType, IBinder resultTo, String resultWho, int requestCode,
1843 int startFlags, String profileFile,
1844 ParcelFileDescriptor profileFd, Bundle options) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001845 Parcel data = Parcel.obtain();
1846 Parcel reply = Parcel.obtain();
1847 data.writeInterfaceToken(IActivityManager.descriptor);
1848 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
1849 intent.writeToParcel(data, 0);
1850 data.writeString(resolvedType);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001851 data.writeStrongBinder(resultTo);
1852 data.writeString(resultWho);
1853 data.writeInt(requestCode);
Dianne Hackborna4972e92012-03-14 10:38:05 -07001854 data.writeInt(startFlags);
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07001855 data.writeString(profileFile);
1856 if (profileFd != null) {
1857 data.writeInt(1);
1858 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
1859 } else {
1860 data.writeInt(0);
1861 }
Dianne Hackborna4972e92012-03-14 10:38:05 -07001862 if (options != null) {
1863 data.writeInt(1);
1864 options.writeToParcel(data, 0);
1865 } else {
1866 data.writeInt(0);
1867 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001868 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0);
1869 reply.readException();
1870 int result = reply.readInt();
1871 reply.recycle();
1872 data.recycle();
1873 return result;
1874 }
Amith Yamasani82644082012-08-03 13:09:11 -07001875
1876 public int startActivityAsUser(IApplicationThread caller, Intent intent,
1877 String resolvedType, IBinder resultTo, String resultWho, int requestCode,
1878 int startFlags, String profileFile,
1879 ParcelFileDescriptor profileFd, Bundle options, int userId) throws RemoteException {
1880 Parcel data = Parcel.obtain();
1881 Parcel reply = Parcel.obtain();
1882 data.writeInterfaceToken(IActivityManager.descriptor);
1883 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
1884 intent.writeToParcel(data, 0);
1885 data.writeString(resolvedType);
1886 data.writeStrongBinder(resultTo);
1887 data.writeString(resultWho);
1888 data.writeInt(requestCode);
1889 data.writeInt(startFlags);
1890 data.writeString(profileFile);
1891 if (profileFd != null) {
1892 data.writeInt(1);
1893 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
1894 } else {
1895 data.writeInt(0);
1896 }
1897 if (options != null) {
1898 data.writeInt(1);
1899 options.writeToParcel(data, 0);
1900 } else {
1901 data.writeInt(0);
1902 }
1903 data.writeInt(userId);
1904 mRemote.transact(START_ACTIVITY_AS_USER_TRANSACTION, data, reply, 0);
1905 reply.readException();
1906 int result = reply.readInt();
1907 reply.recycle();
1908 data.recycle();
1909 return result;
1910 }
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08001911 public WaitResult startActivityAndWait(IApplicationThread caller, Intent intent,
Dianne Hackborna4972e92012-03-14 10:38:05 -07001912 String resolvedType, IBinder resultTo, String resultWho,
1913 int requestCode, int startFlags, String profileFile,
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001914 ParcelFileDescriptor profileFd, Bundle options, int userId) throws RemoteException {
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08001915 Parcel data = Parcel.obtain();
1916 Parcel reply = Parcel.obtain();
1917 data.writeInterfaceToken(IActivityManager.descriptor);
1918 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
1919 intent.writeToParcel(data, 0);
1920 data.writeString(resolvedType);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08001921 data.writeStrongBinder(resultTo);
1922 data.writeString(resultWho);
1923 data.writeInt(requestCode);
Dianne Hackborna4972e92012-03-14 10:38:05 -07001924 data.writeInt(startFlags);
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07001925 data.writeString(profileFile);
1926 if (profileFd != null) {
1927 data.writeInt(1);
1928 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
1929 } else {
1930 data.writeInt(0);
1931 }
Dianne Hackborna4972e92012-03-14 10:38:05 -07001932 if (options != null) {
1933 data.writeInt(1);
1934 options.writeToParcel(data, 0);
1935 } else {
1936 data.writeInt(0);
1937 }
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001938 data.writeInt(userId);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08001939 mRemote.transact(START_ACTIVITY_AND_WAIT_TRANSACTION, data, reply, 0);
1940 reply.readException();
1941 WaitResult result = WaitResult.CREATOR.createFromParcel(reply);
1942 reply.recycle();
1943 data.recycle();
1944 return result;
1945 }
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07001946 public int startActivityWithConfig(IApplicationThread caller, Intent intent,
Dianne Hackborna4972e92012-03-14 10:38:05 -07001947 String resolvedType, IBinder resultTo, String resultWho,
1948 int requestCode, int startFlags, Configuration config,
Dianne Hackborn41203752012-08-31 14:05:51 -07001949 Bundle options, int userId) throws RemoteException {
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07001950 Parcel data = Parcel.obtain();
1951 Parcel reply = Parcel.obtain();
1952 data.writeInterfaceToken(IActivityManager.descriptor);
1953 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
1954 intent.writeToParcel(data, 0);
1955 data.writeString(resolvedType);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07001956 data.writeStrongBinder(resultTo);
1957 data.writeString(resultWho);
1958 data.writeInt(requestCode);
Dianne Hackborna4972e92012-03-14 10:38:05 -07001959 data.writeInt(startFlags);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07001960 config.writeToParcel(data, 0);
Dianne Hackborna4972e92012-03-14 10:38:05 -07001961 if (options != null) {
1962 data.writeInt(1);
1963 options.writeToParcel(data, 0);
1964 } else {
1965 data.writeInt(0);
1966 }
Dianne Hackborn41203752012-08-31 14:05:51 -07001967 data.writeInt(userId);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07001968 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0);
1969 reply.readException();
1970 int result = reply.readInt();
1971 reply.recycle();
1972 data.recycle();
1973 return result;
1974 }
Dianne Hackbornfa82f222009-09-17 15:14:12 -07001975 public int startActivityIntentSender(IApplicationThread caller,
1976 IntentSender intent, Intent fillInIntent, String resolvedType,
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -07001977 IBinder resultTo, String resultWho, int requestCode,
Dianne Hackborna4972e92012-03-14 10:38:05 -07001978 int flagsMask, int flagsValues, Bundle options) throws RemoteException {
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -07001979 Parcel data = Parcel.obtain();
1980 Parcel reply = Parcel.obtain();
1981 data.writeInterfaceToken(IActivityManager.descriptor);
1982 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
1983 intent.writeToParcel(data, 0);
1984 if (fillInIntent != null) {
1985 data.writeInt(1);
1986 fillInIntent.writeToParcel(data, 0);
1987 } else {
1988 data.writeInt(0);
1989 }
1990 data.writeString(resolvedType);
1991 data.writeStrongBinder(resultTo);
1992 data.writeString(resultWho);
1993 data.writeInt(requestCode);
1994 data.writeInt(flagsMask);
1995 data.writeInt(flagsValues);
Dianne Hackborna4972e92012-03-14 10:38:05 -07001996 if (options != null) {
1997 data.writeInt(1);
1998 options.writeToParcel(data, 0);
1999 } else {
2000 data.writeInt(0);
2001 }
Dianne Hackbornfa82f222009-09-17 15:14:12 -07002002 mRemote.transact(START_ACTIVITY_INTENT_SENDER_TRANSACTION, data, reply, 0);
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -07002003 reply.readException();
2004 int result = reply.readInt();
2005 reply.recycle();
2006 data.recycle();
2007 return result;
2008 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002009 public boolean startNextMatchingActivity(IBinder callingActivity,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002010 Intent intent, Bundle options) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002011 Parcel data = Parcel.obtain();
2012 Parcel reply = Parcel.obtain();
2013 data.writeInterfaceToken(IActivityManager.descriptor);
2014 data.writeStrongBinder(callingActivity);
2015 intent.writeToParcel(data, 0);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002016 if (options != null) {
2017 data.writeInt(1);
2018 options.writeToParcel(data, 0);
2019 } else {
2020 data.writeInt(0);
2021 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002022 mRemote.transact(START_NEXT_MATCHING_ACTIVITY_TRANSACTION, data, reply, 0);
2023 reply.readException();
2024 int result = reply.readInt();
2025 reply.recycle();
2026 data.recycle();
2027 return result != 0;
2028 }
2029 public boolean finishActivity(IBinder token, int resultCode, Intent resultData)
2030 throws RemoteException {
2031 Parcel data = Parcel.obtain();
2032 Parcel reply = Parcel.obtain();
2033 data.writeInterfaceToken(IActivityManager.descriptor);
2034 data.writeStrongBinder(token);
2035 data.writeInt(resultCode);
2036 if (resultData != null) {
2037 data.writeInt(1);
2038 resultData.writeToParcel(data, 0);
2039 } else {
2040 data.writeInt(0);
2041 }
2042 mRemote.transact(FINISH_ACTIVITY_TRANSACTION, data, reply, 0);
2043 reply.readException();
2044 boolean res = reply.readInt() != 0;
2045 data.recycle();
2046 reply.recycle();
2047 return res;
2048 }
2049 public void finishSubActivity(IBinder token, String resultWho, int requestCode) throws RemoteException
2050 {
2051 Parcel data = Parcel.obtain();
2052 Parcel reply = Parcel.obtain();
2053 data.writeInterfaceToken(IActivityManager.descriptor);
2054 data.writeStrongBinder(token);
2055 data.writeString(resultWho);
2056 data.writeInt(requestCode);
2057 mRemote.transact(FINISH_SUB_ACTIVITY_TRANSACTION, data, reply, 0);
2058 reply.readException();
2059 data.recycle();
2060 reply.recycle();
2061 }
Dianne Hackbornecc5a9c2012-04-26 18:56:09 -07002062 public boolean finishActivityAffinity(IBinder token) throws RemoteException {
2063 Parcel data = Parcel.obtain();
2064 Parcel reply = Parcel.obtain();
2065 data.writeInterfaceToken(IActivityManager.descriptor);
2066 data.writeStrongBinder(token);
2067 mRemote.transact(FINISH_ACTIVITY_AFFINITY_TRANSACTION, data, reply, 0);
2068 reply.readException();
2069 boolean res = reply.readInt() != 0;
2070 data.recycle();
2071 reply.recycle();
2072 return res;
2073 }
Dianne Hackborn061d58a2010-03-12 15:07:06 -08002074 public boolean willActivityBeVisible(IBinder token) throws RemoteException {
2075 Parcel data = Parcel.obtain();
2076 Parcel reply = Parcel.obtain();
2077 data.writeInterfaceToken(IActivityManager.descriptor);
2078 data.writeStrongBinder(token);
2079 mRemote.transact(WILL_ACTIVITY_BE_VISIBLE_TRANSACTION, data, reply, 0);
2080 reply.readException();
2081 boolean res = reply.readInt() != 0;
2082 data.recycle();
2083 reply.recycle();
2084 return res;
2085 }
Dianne Hackborn6c418d52011-06-29 14:05:33 -07002086 public Intent registerReceiver(IApplicationThread caller, String packageName,
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002087 IIntentReceiver receiver,
Dianne Hackborn20e80982012-08-31 19:00:44 -07002088 IntentFilter filter, String perm, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002089 {
2090 Parcel data = Parcel.obtain();
2091 Parcel reply = Parcel.obtain();
2092 data.writeInterfaceToken(IActivityManager.descriptor);
2093 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackborn6c418d52011-06-29 14:05:33 -07002094 data.writeString(packageName);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002095 data.writeStrongBinder(receiver != null ? receiver.asBinder() : null);
2096 filter.writeToParcel(data, 0);
2097 data.writeString(perm);
Dianne Hackborn20e80982012-08-31 19:00:44 -07002098 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002099 mRemote.transact(REGISTER_RECEIVER_TRANSACTION, data, reply, 0);
2100 reply.readException();
2101 Intent intent = null;
2102 int haveIntent = reply.readInt();
2103 if (haveIntent != 0) {
2104 intent = Intent.CREATOR.createFromParcel(reply);
2105 }
2106 reply.recycle();
2107 data.recycle();
2108 return intent;
2109 }
2110 public void unregisterReceiver(IIntentReceiver receiver) throws RemoteException
2111 {
2112 Parcel data = Parcel.obtain();
2113 Parcel reply = Parcel.obtain();
2114 data.writeInterfaceToken(IActivityManager.descriptor);
2115 data.writeStrongBinder(receiver.asBinder());
2116 mRemote.transact(UNREGISTER_RECEIVER_TRANSACTION, data, reply, 0);
2117 reply.readException();
2118 data.recycle();
2119 reply.recycle();
2120 }
2121 public int broadcastIntent(IApplicationThread caller,
2122 Intent intent, String resolvedType, IIntentReceiver resultTo,
2123 int resultCode, String resultData, Bundle map,
2124 String requiredPermission, boolean serialized,
Amith Yamasani742a6712011-05-04 14:49:28 -07002125 boolean sticky, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002126 {
2127 Parcel data = Parcel.obtain();
2128 Parcel reply = Parcel.obtain();
2129 data.writeInterfaceToken(IActivityManager.descriptor);
2130 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2131 intent.writeToParcel(data, 0);
2132 data.writeString(resolvedType);
2133 data.writeStrongBinder(resultTo != null ? resultTo.asBinder() : null);
2134 data.writeInt(resultCode);
2135 data.writeString(resultData);
2136 data.writeBundle(map);
2137 data.writeString(requiredPermission);
2138 data.writeInt(serialized ? 1 : 0);
2139 data.writeInt(sticky ? 1 : 0);
Amith Yamasani742a6712011-05-04 14:49:28 -07002140 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002141 mRemote.transact(BROADCAST_INTENT_TRANSACTION, data, reply, 0);
2142 reply.readException();
2143 int res = reply.readInt();
2144 reply.recycle();
2145 data.recycle();
2146 return res;
2147 }
Amith Yamasani742a6712011-05-04 14:49:28 -07002148 public void unbroadcastIntent(IApplicationThread caller, Intent intent, int userId)
2149 throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002150 {
2151 Parcel data = Parcel.obtain();
2152 Parcel reply = Parcel.obtain();
2153 data.writeInterfaceToken(IActivityManager.descriptor);
2154 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2155 intent.writeToParcel(data, 0);
Amith Yamasani742a6712011-05-04 14:49:28 -07002156 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002157 mRemote.transact(UNBROADCAST_INTENT_TRANSACTION, data, reply, 0);
2158 reply.readException();
2159 data.recycle();
2160 reply.recycle();
2161 }
2162 public void finishReceiver(IBinder who, int resultCode, String resultData, Bundle map, boolean abortBroadcast) throws RemoteException
2163 {
2164 Parcel data = Parcel.obtain();
2165 Parcel reply = Parcel.obtain();
2166 data.writeInterfaceToken(IActivityManager.descriptor);
2167 data.writeStrongBinder(who);
2168 data.writeInt(resultCode);
2169 data.writeString(resultData);
2170 data.writeBundle(map);
2171 data.writeInt(abortBroadcast ? 1 : 0);
2172 mRemote.transact(FINISH_RECEIVER_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2173 reply.readException();
2174 data.recycle();
2175 reply.recycle();
2176 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002177 public void attachApplication(IApplicationThread app) throws RemoteException
2178 {
2179 Parcel data = Parcel.obtain();
2180 Parcel reply = Parcel.obtain();
2181 data.writeInterfaceToken(IActivityManager.descriptor);
2182 data.writeStrongBinder(app.asBinder());
2183 mRemote.transact(ATTACH_APPLICATION_TRANSACTION, data, reply, 0);
2184 reply.readException();
2185 data.recycle();
2186 reply.recycle();
2187 }
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07002188 public void activityIdle(IBinder token, Configuration config, boolean stopProfiling)
2189 throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002190 {
2191 Parcel data = Parcel.obtain();
2192 Parcel reply = Parcel.obtain();
2193 data.writeInterfaceToken(IActivityManager.descriptor);
2194 data.writeStrongBinder(token);
Dianne Hackborne88846e2009-09-30 21:34:25 -07002195 if (config != null) {
2196 data.writeInt(1);
2197 config.writeToParcel(data, 0);
2198 } else {
2199 data.writeInt(0);
2200 }
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07002201 data.writeInt(stopProfiling ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002202 mRemote.transact(ACTIVITY_IDLE_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2203 reply.readException();
2204 data.recycle();
2205 reply.recycle();
2206 }
Dianne Hackbornad9b32112012-09-17 15:35:01 -07002207 public void activityResumed(IBinder token) throws RemoteException
2208 {
2209 Parcel data = Parcel.obtain();
2210 Parcel reply = Parcel.obtain();
2211 data.writeInterfaceToken(IActivityManager.descriptor);
2212 data.writeStrongBinder(token);
2213 mRemote.transact(ACTIVITY_RESUMED_TRANSACTION, data, reply, 0);
2214 reply.readException();
2215 data.recycle();
2216 reply.recycle();
2217 }
Dianne Hackborn0aae2d42010-12-07 23:51:29 -08002218 public void activityPaused(IBinder token) throws RemoteException
2219 {
2220 Parcel data = Parcel.obtain();
2221 Parcel reply = Parcel.obtain();
2222 data.writeInterfaceToken(IActivityManager.descriptor);
2223 data.writeStrongBinder(token);
2224 mRemote.transact(ACTIVITY_PAUSED_TRANSACTION, data, reply, 0);
2225 reply.readException();
2226 data.recycle();
2227 reply.recycle();
2228 }
2229 public void activityStopped(IBinder token, Bundle state,
2230 Bitmap thumbnail, CharSequence description) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002231 {
2232 Parcel data = Parcel.obtain();
2233 Parcel reply = Parcel.obtain();
2234 data.writeInterfaceToken(IActivityManager.descriptor);
2235 data.writeStrongBinder(token);
2236 data.writeBundle(state);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002237 if (thumbnail != null) {
2238 data.writeInt(1);
2239 thumbnail.writeToParcel(data, 0);
2240 } else {
2241 data.writeInt(0);
2242 }
2243 TextUtils.writeToParcel(description, data, 0);
2244 mRemote.transact(ACTIVITY_STOPPED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2245 reply.readException();
2246 data.recycle();
2247 reply.recycle();
2248 }
Dianne Hackborn4eba96b2011-01-21 13:34:36 -08002249 public void activitySlept(IBinder token) throws RemoteException
2250 {
2251 Parcel data = Parcel.obtain();
2252 Parcel reply = Parcel.obtain();
2253 data.writeInterfaceToken(IActivityManager.descriptor);
2254 data.writeStrongBinder(token);
2255 mRemote.transact(ACTIVITY_SLEPT_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2256 reply.readException();
2257 data.recycle();
2258 reply.recycle();
2259 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002260 public void activityDestroyed(IBinder token) throws RemoteException
2261 {
2262 Parcel data = Parcel.obtain();
2263 Parcel reply = Parcel.obtain();
2264 data.writeInterfaceToken(IActivityManager.descriptor);
2265 data.writeStrongBinder(token);
2266 mRemote.transact(ACTIVITY_DESTROYED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2267 reply.readException();
2268 data.recycle();
2269 reply.recycle();
2270 }
2271 public String getCallingPackage(IBinder token) throws RemoteException
2272 {
2273 Parcel data = Parcel.obtain();
2274 Parcel reply = Parcel.obtain();
2275 data.writeInterfaceToken(IActivityManager.descriptor);
2276 data.writeStrongBinder(token);
2277 mRemote.transact(GET_CALLING_PACKAGE_TRANSACTION, data, reply, 0);
2278 reply.readException();
2279 String res = reply.readString();
2280 data.recycle();
2281 reply.recycle();
2282 return res;
2283 }
2284 public ComponentName getCallingActivity(IBinder token)
2285 throws RemoteException {
2286 Parcel data = Parcel.obtain();
2287 Parcel reply = Parcel.obtain();
2288 data.writeInterfaceToken(IActivityManager.descriptor);
2289 data.writeStrongBinder(token);
2290 mRemote.transact(GET_CALLING_ACTIVITY_TRANSACTION, data, reply, 0);
2291 reply.readException();
2292 ComponentName res = ComponentName.readFromParcel(reply);
2293 data.recycle();
2294 reply.recycle();
2295 return res;
2296 }
2297 public List getTasks(int maxNum, int flags,
2298 IThumbnailReceiver receiver) throws RemoteException {
2299 Parcel data = Parcel.obtain();
2300 Parcel reply = Parcel.obtain();
2301 data.writeInterfaceToken(IActivityManager.descriptor);
2302 data.writeInt(maxNum);
2303 data.writeInt(flags);
2304 data.writeStrongBinder(receiver != null ? receiver.asBinder() : null);
2305 mRemote.transact(GET_TASKS_TRANSACTION, data, reply, 0);
2306 reply.readException();
2307 ArrayList list = null;
2308 int N = reply.readInt();
2309 if (N >= 0) {
2310 list = new ArrayList();
2311 while (N > 0) {
2312 ActivityManager.RunningTaskInfo info =
2313 ActivityManager.RunningTaskInfo.CREATOR
2314 .createFromParcel(reply);
2315 list.add(info);
2316 N--;
2317 }
2318 }
2319 data.recycle();
2320 reply.recycle();
2321 return list;
2322 }
2323 public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum,
Amith Yamasani82644082012-08-03 13:09:11 -07002324 int flags, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002325 Parcel data = Parcel.obtain();
2326 Parcel reply = Parcel.obtain();
2327 data.writeInterfaceToken(IActivityManager.descriptor);
2328 data.writeInt(maxNum);
2329 data.writeInt(flags);
Amith Yamasani82644082012-08-03 13:09:11 -07002330 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002331 mRemote.transact(GET_RECENT_TASKS_TRANSACTION, data, reply, 0);
2332 reply.readException();
2333 ArrayList<ActivityManager.RecentTaskInfo> list
2334 = reply.createTypedArrayList(ActivityManager.RecentTaskInfo.CREATOR);
2335 data.recycle();
2336 reply.recycle();
2337 return list;
2338 }
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002339 public ActivityManager.TaskThumbnails getTaskThumbnails(int id) throws RemoteException {
Dianne Hackbornd94df452011-02-16 18:53:31 -08002340 Parcel data = Parcel.obtain();
2341 Parcel reply = Parcel.obtain();
2342 data.writeInterfaceToken(IActivityManager.descriptor);
2343 data.writeInt(id);
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002344 mRemote.transact(GET_TASK_THUMBNAILS_TRANSACTION, data, reply, 0);
Dianne Hackbornd94df452011-02-16 18:53:31 -08002345 reply.readException();
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002346 ActivityManager.TaskThumbnails bm = null;
Dianne Hackbornd94df452011-02-16 18:53:31 -08002347 if (reply.readInt() != 0) {
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002348 bm = ActivityManager.TaskThumbnails.CREATOR.createFromParcel(reply);
Dianne Hackbornd94df452011-02-16 18:53:31 -08002349 }
2350 data.recycle();
2351 reply.recycle();
2352 return bm;
2353 }
Dianne Hackborn15491c62012-09-19 10:59:14 -07002354 public Bitmap getTaskTopThumbnail(int id) throws RemoteException {
2355 Parcel data = Parcel.obtain();
2356 Parcel reply = Parcel.obtain();
2357 data.writeInterfaceToken(IActivityManager.descriptor);
2358 data.writeInt(id);
2359 mRemote.transact(GET_TASK_TOP_THUMBNAIL_TRANSACTION, data, reply, 0);
2360 reply.readException();
2361 Bitmap bm = null;
2362 if (reply.readInt() != 0) {
2363 bm = Bitmap.CREATOR.createFromParcel(reply);
2364 }
2365 data.recycle();
2366 reply.recycle();
2367 return bm;
2368 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002369 public List getServices(int maxNum, int flags) throws RemoteException {
2370 Parcel data = Parcel.obtain();
2371 Parcel reply = Parcel.obtain();
2372 data.writeInterfaceToken(IActivityManager.descriptor);
2373 data.writeInt(maxNum);
2374 data.writeInt(flags);
2375 mRemote.transact(GET_SERVICES_TRANSACTION, data, reply, 0);
2376 reply.readException();
2377 ArrayList list = null;
2378 int N = reply.readInt();
2379 if (N >= 0) {
2380 list = new ArrayList();
2381 while (N > 0) {
2382 ActivityManager.RunningServiceInfo info =
2383 ActivityManager.RunningServiceInfo.CREATOR
2384 .createFromParcel(reply);
2385 list.add(info);
2386 N--;
2387 }
2388 }
2389 data.recycle();
2390 reply.recycle();
2391 return list;
2392 }
2393 public List<ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState()
2394 throws RemoteException {
2395 Parcel data = Parcel.obtain();
2396 Parcel reply = Parcel.obtain();
2397 data.writeInterfaceToken(IActivityManager.descriptor);
2398 mRemote.transact(GET_PROCESSES_IN_ERROR_STATE_TRANSACTION, data, reply, 0);
2399 reply.readException();
2400 ArrayList<ActivityManager.ProcessErrorStateInfo> list
2401 = reply.createTypedArrayList(ActivityManager.ProcessErrorStateInfo.CREATOR);
2402 data.recycle();
2403 reply.recycle();
2404 return list;
2405 }
2406 public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses()
2407 throws RemoteException {
2408 Parcel data = Parcel.obtain();
2409 Parcel reply = Parcel.obtain();
2410 data.writeInterfaceToken(IActivityManager.descriptor);
2411 mRemote.transact(GET_RUNNING_APP_PROCESSES_TRANSACTION, data, reply, 0);
2412 reply.readException();
2413 ArrayList<ActivityManager.RunningAppProcessInfo> list
2414 = reply.createTypedArrayList(ActivityManager.RunningAppProcessInfo.CREATOR);
2415 data.recycle();
2416 reply.recycle();
2417 return list;
2418 }
Suchi Amalapurapuf7f5dda2010-03-23 10:34:28 -07002419 public List<ApplicationInfo> getRunningExternalApplications()
2420 throws RemoteException {
2421 Parcel data = Parcel.obtain();
2422 Parcel reply = Parcel.obtain();
2423 data.writeInterfaceToken(IActivityManager.descriptor);
2424 mRemote.transact(GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION, data, reply, 0);
2425 reply.readException();
2426 ArrayList<ApplicationInfo> list
2427 = reply.createTypedArrayList(ApplicationInfo.CREATOR);
2428 data.recycle();
2429 reply.recycle();
2430 return list;
2431 }
Dianne Hackborn8078d8c2012-03-20 11:11:26 -07002432 public void moveTaskToFront(int task, int flags, Bundle options) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002433 {
2434 Parcel data = Parcel.obtain();
2435 Parcel reply = Parcel.obtain();
2436 data.writeInterfaceToken(IActivityManager.descriptor);
2437 data.writeInt(task);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08002438 data.writeInt(flags);
Dianne Hackborn8078d8c2012-03-20 11:11:26 -07002439 if (options != null) {
2440 data.writeInt(1);
2441 options.writeToParcel(data, 0);
2442 } else {
2443 data.writeInt(0);
2444 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002445 mRemote.transact(MOVE_TASK_TO_FRONT_TRANSACTION, data, reply, 0);
2446 reply.readException();
2447 data.recycle();
2448 reply.recycle();
2449 }
2450 public void moveTaskToBack(int task) throws RemoteException
2451 {
2452 Parcel data = Parcel.obtain();
2453 Parcel reply = Parcel.obtain();
2454 data.writeInterfaceToken(IActivityManager.descriptor);
2455 data.writeInt(task);
2456 mRemote.transact(MOVE_TASK_TO_BACK_TRANSACTION, data, reply, 0);
2457 reply.readException();
2458 data.recycle();
2459 reply.recycle();
2460 }
2461 public boolean moveActivityTaskToBack(IBinder token, boolean nonRoot)
2462 throws RemoteException {
2463 Parcel data = Parcel.obtain();
2464 Parcel reply = Parcel.obtain();
2465 data.writeInterfaceToken(IActivityManager.descriptor);
2466 data.writeStrongBinder(token);
2467 data.writeInt(nonRoot ? 1 : 0);
2468 mRemote.transact(MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION, data, reply, 0);
2469 reply.readException();
2470 boolean res = reply.readInt() != 0;
2471 data.recycle();
2472 reply.recycle();
2473 return res;
2474 }
2475 public void moveTaskBackwards(int task) throws RemoteException
2476 {
2477 Parcel data = Parcel.obtain();
2478 Parcel reply = Parcel.obtain();
2479 data.writeInterfaceToken(IActivityManager.descriptor);
2480 data.writeInt(task);
2481 mRemote.transact(MOVE_TASK_BACKWARDS_TRANSACTION, data, reply, 0);
2482 reply.readException();
2483 data.recycle();
2484 reply.recycle();
2485 }
2486 public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException
2487 {
2488 Parcel data = Parcel.obtain();
2489 Parcel reply = Parcel.obtain();
2490 data.writeInterfaceToken(IActivityManager.descriptor);
2491 data.writeStrongBinder(token);
2492 data.writeInt(onlyRoot ? 1 : 0);
2493 mRemote.transact(GET_TASK_FOR_ACTIVITY_TRANSACTION, data, reply, 0);
2494 reply.readException();
2495 int res = reply.readInt();
2496 data.recycle();
2497 reply.recycle();
2498 return res;
2499 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002500 public void reportThumbnail(IBinder token,
2501 Bitmap thumbnail, CharSequence description) throws RemoteException
2502 {
2503 Parcel data = Parcel.obtain();
2504 Parcel reply = Parcel.obtain();
2505 data.writeInterfaceToken(IActivityManager.descriptor);
2506 data.writeStrongBinder(token);
2507 if (thumbnail != null) {
2508 data.writeInt(1);
2509 thumbnail.writeToParcel(data, 0);
2510 } else {
2511 data.writeInt(0);
2512 }
2513 TextUtils.writeToParcel(description, data, 0);
2514 mRemote.transact(REPORT_THUMBNAIL_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2515 reply.readException();
2516 data.recycle();
2517 reply.recycle();
2518 }
2519 public ContentProviderHolder getContentProvider(IApplicationThread caller,
Jeff Sharkey6d515712012-09-20 16:06:08 -07002520 String name, int userId, boolean stable) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002521 Parcel data = Parcel.obtain();
2522 Parcel reply = Parcel.obtain();
2523 data.writeInterfaceToken(IActivityManager.descriptor);
2524 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2525 data.writeString(name);
Jeff Sharkey6d515712012-09-20 16:06:08 -07002526 data.writeInt(userId);
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07002527 data.writeInt(stable ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002528 mRemote.transact(GET_CONTENT_PROVIDER_TRANSACTION, data, reply, 0);
2529 reply.readException();
2530 int res = reply.readInt();
2531 ContentProviderHolder cph = null;
2532 if (res != 0) {
2533 cph = ContentProviderHolder.CREATOR.createFromParcel(reply);
2534 }
2535 data.recycle();
2536 reply.recycle();
2537 return cph;
2538 }
Jeff Sharkey6d515712012-09-20 16:06:08 -07002539 public ContentProviderHolder getContentProviderExternal(String name, int userId, IBinder token)
2540 throws RemoteException {
Svetoslav Ganov25872aa2012-02-03 19:19:09 -08002541 Parcel data = Parcel.obtain();
2542 Parcel reply = Parcel.obtain();
2543 data.writeInterfaceToken(IActivityManager.descriptor);
2544 data.writeString(name);
Jeff Sharkey6d515712012-09-20 16:06:08 -07002545 data.writeInt(userId);
Svetoslav Ganov25872aa2012-02-03 19:19:09 -08002546 data.writeStrongBinder(token);
2547 mRemote.transact(GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0);
2548 reply.readException();
2549 int res = reply.readInt();
2550 ContentProviderHolder cph = null;
2551 if (res != 0) {
2552 cph = ContentProviderHolder.CREATOR.createFromParcel(reply);
2553 }
2554 data.recycle();
2555 reply.recycle();
2556 return cph;
2557 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002558 public void publishContentProviders(IApplicationThread caller,
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07002559 List<ContentProviderHolder> providers) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002560 {
2561 Parcel data = Parcel.obtain();
2562 Parcel reply = Parcel.obtain();
2563 data.writeInterfaceToken(IActivityManager.descriptor);
2564 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2565 data.writeTypedList(providers);
2566 mRemote.transact(PUBLISH_CONTENT_PROVIDERS_TRANSACTION, data, reply, 0);
2567 reply.readException();
2568 data.recycle();
2569 reply.recycle();
2570 }
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07002571 public boolean refContentProvider(IBinder connection, int stable, int unstable)
2572 throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002573 Parcel data = Parcel.obtain();
2574 Parcel reply = Parcel.obtain();
2575 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07002576 data.writeStrongBinder(connection);
2577 data.writeInt(stable);
2578 data.writeInt(unstable);
2579 mRemote.transact(REF_CONTENT_PROVIDER_TRANSACTION, data, reply, 0);
2580 reply.readException();
2581 boolean res = reply.readInt() != 0;
2582 data.recycle();
2583 reply.recycle();
2584 return res;
2585 }
2586 public void unstableProviderDied(IBinder connection) throws RemoteException {
2587 Parcel data = Parcel.obtain();
2588 Parcel reply = Parcel.obtain();
2589 data.writeInterfaceToken(IActivityManager.descriptor);
2590 data.writeStrongBinder(connection);
2591 mRemote.transact(UNSTABLE_PROVIDER_DIED_TRANSACTION, data, reply, 0);
2592 reply.readException();
2593 data.recycle();
2594 reply.recycle();
2595 }
2596
2597 public void removeContentProvider(IBinder connection, boolean stable) throws RemoteException {
2598 Parcel data = Parcel.obtain();
2599 Parcel reply = Parcel.obtain();
2600 data.writeInterfaceToken(IActivityManager.descriptor);
2601 data.writeStrongBinder(connection);
2602 data.writeInt(stable ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002603 mRemote.transact(REMOVE_CONTENT_PROVIDER_TRANSACTION, data, reply, 0);
2604 reply.readException();
2605 data.recycle();
2606 reply.recycle();
2607 }
Svetoslav Ganov25872aa2012-02-03 19:19:09 -08002608
2609 public void removeContentProviderExternal(String name, IBinder token) throws RemoteException {
2610 Parcel data = Parcel.obtain();
2611 Parcel reply = Parcel.obtain();
2612 data.writeInterfaceToken(IActivityManager.descriptor);
2613 data.writeString(name);
2614 data.writeStrongBinder(token);
2615 mRemote.transact(REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0);
2616 reply.readException();
2617 data.recycle();
2618 reply.recycle();
2619 }
2620
Dianne Hackborndd9b82c2009-09-03 00:18:47 -07002621 public PendingIntent getRunningServiceControlPanel(ComponentName service)
2622 throws RemoteException
2623 {
2624 Parcel data = Parcel.obtain();
2625 Parcel reply = Parcel.obtain();
2626 data.writeInterfaceToken(IActivityManager.descriptor);
2627 service.writeToParcel(data, 0);
2628 mRemote.transact(GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION, data, reply, 0);
2629 reply.readException();
2630 PendingIntent res = PendingIntent.readPendingIntentOrNullFromParcel(reply);
2631 data.recycle();
2632 reply.recycle();
2633 return res;
2634 }
2635
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002636 public ComponentName startService(IApplicationThread caller, Intent service,
Dianne Hackborn7767eac2012-08-23 18:25:40 -07002637 String resolvedType, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002638 {
2639 Parcel data = Parcel.obtain();
2640 Parcel reply = Parcel.obtain();
2641 data.writeInterfaceToken(IActivityManager.descriptor);
2642 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2643 service.writeToParcel(data, 0);
2644 data.writeString(resolvedType);
Dianne Hackborn7767eac2012-08-23 18:25:40 -07002645 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002646 mRemote.transact(START_SERVICE_TRANSACTION, data, reply, 0);
2647 reply.readException();
2648 ComponentName res = ComponentName.readFromParcel(reply);
2649 data.recycle();
2650 reply.recycle();
2651 return res;
2652 }
2653 public int stopService(IApplicationThread caller, Intent service,
Dianne Hackborn7767eac2012-08-23 18:25:40 -07002654 String resolvedType, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002655 {
2656 Parcel data = Parcel.obtain();
2657 Parcel reply = Parcel.obtain();
2658 data.writeInterfaceToken(IActivityManager.descriptor);
2659 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2660 service.writeToParcel(data, 0);
2661 data.writeString(resolvedType);
Dianne Hackborn7767eac2012-08-23 18:25:40 -07002662 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002663 mRemote.transact(STOP_SERVICE_TRANSACTION, data, reply, 0);
2664 reply.readException();
2665 int res = reply.readInt();
2666 reply.recycle();
2667 data.recycle();
2668 return res;
2669 }
2670 public boolean stopServiceToken(ComponentName className, IBinder token,
2671 int startId) throws RemoteException {
2672 Parcel data = Parcel.obtain();
2673 Parcel reply = Parcel.obtain();
2674 data.writeInterfaceToken(IActivityManager.descriptor);
2675 ComponentName.writeToParcel(className, data);
2676 data.writeStrongBinder(token);
2677 data.writeInt(startId);
2678 mRemote.transact(STOP_SERVICE_TOKEN_TRANSACTION, data, reply, 0);
2679 reply.readException();
2680 boolean res = reply.readInt() != 0;
2681 data.recycle();
2682 reply.recycle();
2683 return res;
2684 }
2685 public void setServiceForeground(ComponentName className, IBinder token,
Dianne Hackbornd8a43f62009-08-17 23:33:56 -07002686 int id, Notification notification, boolean removeNotification) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002687 Parcel data = Parcel.obtain();
2688 Parcel reply = Parcel.obtain();
2689 data.writeInterfaceToken(IActivityManager.descriptor);
2690 ComponentName.writeToParcel(className, data);
2691 data.writeStrongBinder(token);
Dianne Hackbornd8a43f62009-08-17 23:33:56 -07002692 data.writeInt(id);
2693 if (notification != null) {
2694 data.writeInt(1);
2695 notification.writeToParcel(data, 0);
2696 } else {
2697 data.writeInt(0);
2698 }
2699 data.writeInt(removeNotification ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002700 mRemote.transact(SET_SERVICE_FOREGROUND_TRANSACTION, data, reply, 0);
2701 reply.readException();
2702 data.recycle();
2703 reply.recycle();
2704 }
2705 public int bindService(IApplicationThread caller, IBinder token,
2706 Intent service, String resolvedType, IServiceConnection connection,
Amith Yamasani37ce3a82012-02-06 12:04:42 -08002707 int flags, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002708 Parcel data = Parcel.obtain();
2709 Parcel reply = Parcel.obtain();
2710 data.writeInterfaceToken(IActivityManager.descriptor);
2711 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2712 data.writeStrongBinder(token);
2713 service.writeToParcel(data, 0);
2714 data.writeString(resolvedType);
2715 data.writeStrongBinder(connection.asBinder());
2716 data.writeInt(flags);
Amith Yamasani37ce3a82012-02-06 12:04:42 -08002717 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002718 mRemote.transact(BIND_SERVICE_TRANSACTION, data, reply, 0);
2719 reply.readException();
2720 int res = reply.readInt();
2721 data.recycle();
2722 reply.recycle();
2723 return res;
2724 }
2725 public boolean unbindService(IServiceConnection connection) throws RemoteException
2726 {
2727 Parcel data = Parcel.obtain();
2728 Parcel reply = Parcel.obtain();
2729 data.writeInterfaceToken(IActivityManager.descriptor);
2730 data.writeStrongBinder(connection.asBinder());
2731 mRemote.transact(UNBIND_SERVICE_TRANSACTION, data, reply, 0);
2732 reply.readException();
2733 boolean res = reply.readInt() != 0;
2734 data.recycle();
2735 reply.recycle();
2736 return res;
2737 }
2738
2739 public void publishService(IBinder token,
2740 Intent intent, IBinder service) throws RemoteException {
2741 Parcel data = Parcel.obtain();
2742 Parcel reply = Parcel.obtain();
2743 data.writeInterfaceToken(IActivityManager.descriptor);
2744 data.writeStrongBinder(token);
2745 intent.writeToParcel(data, 0);
2746 data.writeStrongBinder(service);
2747 mRemote.transact(PUBLISH_SERVICE_TRANSACTION, data, reply, 0);
2748 reply.readException();
2749 data.recycle();
2750 reply.recycle();
2751 }
2752
2753 public void unbindFinished(IBinder token, Intent intent, boolean doRebind)
2754 throws RemoteException {
2755 Parcel data = Parcel.obtain();
2756 Parcel reply = Parcel.obtain();
2757 data.writeInterfaceToken(IActivityManager.descriptor);
2758 data.writeStrongBinder(token);
2759 intent.writeToParcel(data, 0);
2760 data.writeInt(doRebind ? 1 : 0);
2761 mRemote.transact(UNBIND_FINISHED_TRANSACTION, data, reply, 0);
2762 reply.readException();
2763 data.recycle();
2764 reply.recycle();
2765 }
2766
Dianne Hackbornf6f9f2d2009-08-21 16:26:03 -07002767 public void serviceDoneExecuting(IBinder token, int type, int startId,
2768 int res) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002769 Parcel data = Parcel.obtain();
2770 Parcel reply = Parcel.obtain();
2771 data.writeInterfaceToken(IActivityManager.descriptor);
2772 data.writeStrongBinder(token);
Dianne Hackbornf6f9f2d2009-08-21 16:26:03 -07002773 data.writeInt(type);
2774 data.writeInt(startId);
2775 data.writeInt(res);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002776 mRemote.transact(SERVICE_DONE_EXECUTING_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2777 reply.readException();
2778 data.recycle();
2779 reply.recycle();
2780 }
2781
2782 public IBinder peekService(Intent service, String resolvedType) throws RemoteException {
2783 Parcel data = Parcel.obtain();
2784 Parcel reply = Parcel.obtain();
2785 data.writeInterfaceToken(IActivityManager.descriptor);
2786 service.writeToParcel(data, 0);
2787 data.writeString(resolvedType);
2788 mRemote.transact(PEEK_SERVICE_TRANSACTION, data, reply, 0);
2789 reply.readException();
2790 IBinder binder = reply.readStrongBinder();
2791 reply.recycle();
2792 data.recycle();
2793 return binder;
2794 }
2795
Christopher Tate181fafa2009-05-14 11:12:14 -07002796 public boolean bindBackupAgent(ApplicationInfo app, int backupRestoreMode)
2797 throws RemoteException {
2798 Parcel data = Parcel.obtain();
2799 Parcel reply = Parcel.obtain();
2800 data.writeInterfaceToken(IActivityManager.descriptor);
2801 app.writeToParcel(data, 0);
2802 data.writeInt(backupRestoreMode);
2803 mRemote.transact(START_BACKUP_AGENT_TRANSACTION, data, reply, 0);
2804 reply.readException();
2805 boolean success = reply.readInt() != 0;
2806 reply.recycle();
2807 data.recycle();
2808 return success;
2809 }
2810
2811 public void backupAgentCreated(String packageName, IBinder agent) throws RemoteException {
2812 Parcel data = Parcel.obtain();
2813 Parcel reply = Parcel.obtain();
2814 data.writeInterfaceToken(IActivityManager.descriptor);
2815 data.writeString(packageName);
2816 data.writeStrongBinder(agent);
2817 mRemote.transact(BACKUP_AGENT_CREATED_TRANSACTION, data, reply, 0);
2818 reply.recycle();
2819 data.recycle();
2820 }
2821
2822 public void unbindBackupAgent(ApplicationInfo app) throws RemoteException {
2823 Parcel data = Parcel.obtain();
2824 Parcel reply = Parcel.obtain();
2825 data.writeInterfaceToken(IActivityManager.descriptor);
2826 app.writeToParcel(data, 0);
2827 mRemote.transact(UNBIND_BACKUP_AGENT_TRANSACTION, data, reply, 0);
2828 reply.readException();
2829 reply.recycle();
2830 data.recycle();
2831 }
2832
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002833 public boolean startInstrumentation(ComponentName className, String profileFile,
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07002834 int flags, Bundle arguments, IInstrumentationWatcher watcher, int userId)
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002835 throws RemoteException {
2836 Parcel data = Parcel.obtain();
2837 Parcel reply = Parcel.obtain();
2838 data.writeInterfaceToken(IActivityManager.descriptor);
2839 ComponentName.writeToParcel(className, data);
2840 data.writeString(profileFile);
2841 data.writeInt(flags);
2842 data.writeBundle(arguments);
2843 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07002844 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002845 mRemote.transact(START_INSTRUMENTATION_TRANSACTION, data, reply, 0);
2846 reply.readException();
2847 boolean res = reply.readInt() != 0;
2848 reply.recycle();
2849 data.recycle();
2850 return res;
2851 }
2852
2853 public void finishInstrumentation(IApplicationThread target,
2854 int resultCode, Bundle results) throws RemoteException {
2855 Parcel data = Parcel.obtain();
2856 Parcel reply = Parcel.obtain();
2857 data.writeInterfaceToken(IActivityManager.descriptor);
2858 data.writeStrongBinder(target != null ? target.asBinder() : null);
2859 data.writeInt(resultCode);
2860 data.writeBundle(results);
2861 mRemote.transact(FINISH_INSTRUMENTATION_TRANSACTION, data, reply, 0);
2862 reply.readException();
2863 data.recycle();
2864 reply.recycle();
2865 }
2866 public Configuration getConfiguration() throws RemoteException
2867 {
2868 Parcel data = Parcel.obtain();
2869 Parcel reply = Parcel.obtain();
2870 data.writeInterfaceToken(IActivityManager.descriptor);
2871 mRemote.transact(GET_CONFIGURATION_TRANSACTION, data, reply, 0);
2872 reply.readException();
2873 Configuration res = Configuration.CREATOR.createFromParcel(reply);
2874 reply.recycle();
2875 data.recycle();
2876 return res;
2877 }
2878 public void updateConfiguration(Configuration values) throws RemoteException
2879 {
2880 Parcel data = Parcel.obtain();
2881 Parcel reply = Parcel.obtain();
2882 data.writeInterfaceToken(IActivityManager.descriptor);
2883 values.writeToParcel(data, 0);
2884 mRemote.transact(UPDATE_CONFIGURATION_TRANSACTION, data, reply, 0);
2885 reply.readException();
2886 data.recycle();
2887 reply.recycle();
2888 }
2889 public void setRequestedOrientation(IBinder token, int requestedOrientation)
2890 throws RemoteException {
2891 Parcel data = Parcel.obtain();
2892 Parcel reply = Parcel.obtain();
2893 data.writeInterfaceToken(IActivityManager.descriptor);
2894 data.writeStrongBinder(token);
2895 data.writeInt(requestedOrientation);
2896 mRemote.transact(SET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0);
2897 reply.readException();
2898 data.recycle();
2899 reply.recycle();
2900 }
2901 public int getRequestedOrientation(IBinder token) throws RemoteException {
2902 Parcel data = Parcel.obtain();
2903 Parcel reply = Parcel.obtain();
2904 data.writeInterfaceToken(IActivityManager.descriptor);
2905 data.writeStrongBinder(token);
2906 mRemote.transact(GET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0);
2907 reply.readException();
2908 int res = reply.readInt();
2909 data.recycle();
2910 reply.recycle();
2911 return res;
2912 }
2913 public ComponentName getActivityClassForToken(IBinder token)
2914 throws RemoteException {
2915 Parcel data = Parcel.obtain();
2916 Parcel reply = Parcel.obtain();
2917 data.writeInterfaceToken(IActivityManager.descriptor);
2918 data.writeStrongBinder(token);
2919 mRemote.transact(GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION, data, reply, 0);
2920 reply.readException();
2921 ComponentName res = ComponentName.readFromParcel(reply);
2922 data.recycle();
2923 reply.recycle();
2924 return res;
2925 }
2926 public String getPackageForToken(IBinder token) throws RemoteException
2927 {
2928 Parcel data = Parcel.obtain();
2929 Parcel reply = Parcel.obtain();
2930 data.writeInterfaceToken(IActivityManager.descriptor);
2931 data.writeStrongBinder(token);
2932 mRemote.transact(GET_PACKAGE_FOR_TOKEN_TRANSACTION, data, reply, 0);
2933 reply.readException();
2934 String res = reply.readString();
2935 data.recycle();
2936 reply.recycle();
2937 return res;
2938 }
2939 public IIntentSender getIntentSender(int type,
2940 String packageName, IBinder token, String resultWho,
Dianne Hackborn7a2195c2012-03-19 17:38:00 -07002941 int requestCode, Intent[] intents, String[] resolvedTypes, int flags,
Dianne Hackborn41203752012-08-31 14:05:51 -07002942 Bundle options, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002943 Parcel data = Parcel.obtain();
2944 Parcel reply = Parcel.obtain();
2945 data.writeInterfaceToken(IActivityManager.descriptor);
2946 data.writeInt(type);
2947 data.writeString(packageName);
2948 data.writeStrongBinder(token);
2949 data.writeString(resultWho);
2950 data.writeInt(requestCode);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08002951 if (intents != null) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002952 data.writeInt(1);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08002953 data.writeTypedArray(intents, 0);
2954 data.writeStringArray(resolvedTypes);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002955 } else {
2956 data.writeInt(0);
2957 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002958 data.writeInt(flags);
Dianne Hackborn7a2195c2012-03-19 17:38:00 -07002959 if (options != null) {
2960 data.writeInt(1);
2961 options.writeToParcel(data, 0);
2962 } else {
2963 data.writeInt(0);
2964 }
Dianne Hackborn41203752012-08-31 14:05:51 -07002965 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002966 mRemote.transact(GET_INTENT_SENDER_TRANSACTION, data, reply, 0);
2967 reply.readException();
2968 IIntentSender res = IIntentSender.Stub.asInterface(
2969 reply.readStrongBinder());
2970 data.recycle();
2971 reply.recycle();
2972 return res;
2973 }
2974 public void cancelIntentSender(IIntentSender sender) throws RemoteException {
2975 Parcel data = Parcel.obtain();
2976 Parcel reply = Parcel.obtain();
2977 data.writeInterfaceToken(IActivityManager.descriptor);
2978 data.writeStrongBinder(sender.asBinder());
2979 mRemote.transact(CANCEL_INTENT_SENDER_TRANSACTION, data, reply, 0);
2980 reply.readException();
2981 data.recycle();
2982 reply.recycle();
2983 }
2984 public String getPackageForIntentSender(IIntentSender sender) throws RemoteException {
2985 Parcel data = Parcel.obtain();
2986 Parcel reply = Parcel.obtain();
2987 data.writeInterfaceToken(IActivityManager.descriptor);
2988 data.writeStrongBinder(sender.asBinder());
2989 mRemote.transact(GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0);
2990 reply.readException();
2991 String res = reply.readString();
2992 data.recycle();
2993 reply.recycle();
2994 return res;
2995 }
Christopher Tatec4a07d12012-04-06 14:19:13 -07002996 public int getUidForIntentSender(IIntentSender sender) throws RemoteException {
2997 Parcel data = Parcel.obtain();
2998 Parcel reply = Parcel.obtain();
2999 data.writeInterfaceToken(IActivityManager.descriptor);
3000 data.writeStrongBinder(sender.asBinder());
3001 mRemote.transact(GET_UID_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0);
3002 reply.readException();
3003 int res = reply.readInt();
3004 data.recycle();
3005 reply.recycle();
3006 return res;
3007 }
Dianne Hackborn41203752012-08-31 14:05:51 -07003008 public int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll,
3009 boolean requireFull, String name, String callerPackage) throws RemoteException {
3010 Parcel data = Parcel.obtain();
3011 Parcel reply = Parcel.obtain();
3012 data.writeInterfaceToken(IActivityManager.descriptor);
3013 data.writeInt(callingPid);
3014 data.writeInt(callingUid);
3015 data.writeInt(userId);
3016 data.writeInt(allowAll ? 1 : 0);
3017 data.writeInt(requireFull ? 1 : 0);
3018 data.writeString(name);
3019 data.writeString(callerPackage);
3020 mRemote.transact(HANDLE_INCOMING_USER_TRANSACTION, data, reply, 0);
3021 reply.readException();
3022 int res = reply.readInt();
3023 data.recycle();
3024 reply.recycle();
3025 return res;
3026 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003027 public void setProcessLimit(int max) throws RemoteException
3028 {
3029 Parcel data = Parcel.obtain();
3030 Parcel reply = Parcel.obtain();
3031 data.writeInterfaceToken(IActivityManager.descriptor);
3032 data.writeInt(max);
3033 mRemote.transact(SET_PROCESS_LIMIT_TRANSACTION, data, reply, 0);
3034 reply.readException();
3035 data.recycle();
3036 reply.recycle();
3037 }
3038 public int getProcessLimit() throws RemoteException
3039 {
3040 Parcel data = Parcel.obtain();
3041 Parcel reply = Parcel.obtain();
3042 data.writeInterfaceToken(IActivityManager.descriptor);
3043 mRemote.transact(GET_PROCESS_LIMIT_TRANSACTION, data, reply, 0);
3044 reply.readException();
3045 int res = reply.readInt();
3046 data.recycle();
3047 reply.recycle();
3048 return res;
3049 }
3050 public void setProcessForeground(IBinder token, int pid,
3051 boolean isForeground) throws RemoteException {
3052 Parcel data = Parcel.obtain();
3053 Parcel reply = Parcel.obtain();
3054 data.writeInterfaceToken(IActivityManager.descriptor);
3055 data.writeStrongBinder(token);
3056 data.writeInt(pid);
3057 data.writeInt(isForeground ? 1 : 0);
3058 mRemote.transact(SET_PROCESS_FOREGROUND_TRANSACTION, data, reply, 0);
3059 reply.readException();
3060 data.recycle();
3061 reply.recycle();
3062 }
3063 public int checkPermission(String permission, int pid, int uid)
3064 throws RemoteException {
3065 Parcel data = Parcel.obtain();
3066 Parcel reply = Parcel.obtain();
3067 data.writeInterfaceToken(IActivityManager.descriptor);
3068 data.writeString(permission);
3069 data.writeInt(pid);
3070 data.writeInt(uid);
3071 mRemote.transact(CHECK_PERMISSION_TRANSACTION, data, reply, 0);
3072 reply.readException();
3073 int res = reply.readInt();
3074 data.recycle();
3075 reply.recycle();
3076 return res;
3077 }
3078 public boolean clearApplicationUserData(final String packageName,
Amith Yamasani742a6712011-05-04 14:49:28 -07003079 final IPackageDataObserver observer, final int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003080 Parcel data = Parcel.obtain();
3081 Parcel reply = Parcel.obtain();
3082 data.writeInterfaceToken(IActivityManager.descriptor);
3083 data.writeString(packageName);
3084 data.writeStrongBinder(observer.asBinder());
Amith Yamasani742a6712011-05-04 14:49:28 -07003085 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003086 mRemote.transact(CLEAR_APP_DATA_TRANSACTION, data, reply, 0);
3087 reply.readException();
3088 boolean res = reply.readInt() != 0;
3089 data.recycle();
3090 reply.recycle();
3091 return res;
3092 }
3093 public int checkUriPermission(Uri uri, int pid, int uid, int mode)
3094 throws RemoteException {
3095 Parcel data = Parcel.obtain();
3096 Parcel reply = Parcel.obtain();
3097 data.writeInterfaceToken(IActivityManager.descriptor);
3098 uri.writeToParcel(data, 0);
3099 data.writeInt(pid);
3100 data.writeInt(uid);
3101 data.writeInt(mode);
3102 mRemote.transact(CHECK_URI_PERMISSION_TRANSACTION, data, reply, 0);
3103 reply.readException();
3104 int res = reply.readInt();
3105 data.recycle();
3106 reply.recycle();
3107 return res;
3108 }
3109 public void grantUriPermission(IApplicationThread caller, String targetPkg,
3110 Uri uri, int mode) throws RemoteException {
3111 Parcel data = Parcel.obtain();
3112 Parcel reply = Parcel.obtain();
3113 data.writeInterfaceToken(IActivityManager.descriptor);
3114 data.writeStrongBinder(caller.asBinder());
3115 data.writeString(targetPkg);
3116 uri.writeToParcel(data, 0);
3117 data.writeInt(mode);
3118 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0);
3119 reply.readException();
3120 data.recycle();
3121 reply.recycle();
3122 }
3123 public void revokeUriPermission(IApplicationThread caller, Uri uri,
3124 int mode) throws RemoteException {
3125 Parcel data = Parcel.obtain();
3126 Parcel reply = Parcel.obtain();
3127 data.writeInterfaceToken(IActivityManager.descriptor);
3128 data.writeStrongBinder(caller.asBinder());
3129 uri.writeToParcel(data, 0);
3130 data.writeInt(mode);
3131 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0);
3132 reply.readException();
3133 data.recycle();
3134 reply.recycle();
3135 }
3136 public void showWaitingForDebugger(IApplicationThread who, boolean waiting)
3137 throws RemoteException {
3138 Parcel data = Parcel.obtain();
3139 Parcel reply = Parcel.obtain();
3140 data.writeInterfaceToken(IActivityManager.descriptor);
3141 data.writeStrongBinder(who.asBinder());
3142 data.writeInt(waiting ? 1 : 0);
3143 mRemote.transact(SHOW_WAITING_FOR_DEBUGGER_TRANSACTION, data, reply, 0);
3144 reply.readException();
3145 data.recycle();
3146 reply.recycle();
3147 }
3148 public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) throws RemoteException {
3149 Parcel data = Parcel.obtain();
3150 Parcel reply = Parcel.obtain();
3151 data.writeInterfaceToken(IActivityManager.descriptor);
3152 mRemote.transact(GET_MEMORY_INFO_TRANSACTION, data, reply, 0);
3153 reply.readException();
3154 outInfo.readFromParcel(reply);
3155 data.recycle();
3156 reply.recycle();
3157 }
3158 public void unhandledBack() throws RemoteException
3159 {
3160 Parcel data = Parcel.obtain();
3161 Parcel reply = Parcel.obtain();
3162 data.writeInterfaceToken(IActivityManager.descriptor);
3163 mRemote.transact(UNHANDLED_BACK_TRANSACTION, data, reply, 0);
3164 reply.readException();
3165 data.recycle();
3166 reply.recycle();
3167 }
3168 public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException
3169 {
3170 Parcel data = Parcel.obtain();
3171 Parcel reply = Parcel.obtain();
3172 data.writeInterfaceToken(IActivityManager.descriptor);
3173 mRemote.transact(OPEN_CONTENT_URI_TRANSACTION, data, reply, 0);
3174 reply.readException();
3175 ParcelFileDescriptor pfd = null;
3176 if (reply.readInt() != 0) {
3177 pfd = ParcelFileDescriptor.CREATOR.createFromParcel(reply);
3178 }
3179 data.recycle();
3180 reply.recycle();
3181 return pfd;
3182 }
3183 public void goingToSleep() throws RemoteException
3184 {
3185 Parcel data = Parcel.obtain();
3186 Parcel reply = Parcel.obtain();
3187 data.writeInterfaceToken(IActivityManager.descriptor);
3188 mRemote.transact(GOING_TO_SLEEP_TRANSACTION, data, reply, 0);
3189 reply.readException();
3190 data.recycle();
3191 reply.recycle();
3192 }
3193 public void wakingUp() throws RemoteException
3194 {
3195 Parcel data = Parcel.obtain();
3196 Parcel reply = Parcel.obtain();
3197 data.writeInterfaceToken(IActivityManager.descriptor);
3198 mRemote.transact(WAKING_UP_TRANSACTION, data, reply, 0);
3199 reply.readException();
3200 data.recycle();
3201 reply.recycle();
3202 }
Dianne Hackbornff5b1582012-04-12 17:24:07 -07003203 public void setLockScreenShown(boolean shown) throws RemoteException
3204 {
3205 Parcel data = Parcel.obtain();
3206 Parcel reply = Parcel.obtain();
3207 data.writeInterfaceToken(IActivityManager.descriptor);
3208 data.writeInt(shown ? 1 : 0);
3209 mRemote.transact(SET_LOCK_SCREEN_SHOWN_TRANSACTION, data, reply, 0);
3210 reply.readException();
3211 data.recycle();
3212 reply.recycle();
3213 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003214 public void setDebugApp(
3215 String packageName, boolean waitForDebugger, boolean persistent)
3216 throws RemoteException
3217 {
3218 Parcel data = Parcel.obtain();
3219 Parcel reply = Parcel.obtain();
3220 data.writeInterfaceToken(IActivityManager.descriptor);
3221 data.writeString(packageName);
3222 data.writeInt(waitForDebugger ? 1 : 0);
3223 data.writeInt(persistent ? 1 : 0);
3224 mRemote.transact(SET_DEBUG_APP_TRANSACTION, data, reply, 0);
3225 reply.readException();
3226 data.recycle();
3227 reply.recycle();
3228 }
3229 public void setAlwaysFinish(boolean enabled) throws RemoteException
3230 {
3231 Parcel data = Parcel.obtain();
3232 Parcel reply = Parcel.obtain();
3233 data.writeInterfaceToken(IActivityManager.descriptor);
3234 data.writeInt(enabled ? 1 : 0);
3235 mRemote.transact(SET_ALWAYS_FINISH_TRANSACTION, data, reply, 0);
3236 reply.readException();
3237 data.recycle();
3238 reply.recycle();
3239 }
Dianne Hackbornb06ea702009-07-13 13:07:51 -07003240 public void setActivityController(IActivityController watcher) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003241 {
3242 Parcel data = Parcel.obtain();
3243 Parcel reply = Parcel.obtain();
3244 data.writeInterfaceToken(IActivityManager.descriptor);
3245 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null);
Dianne Hackbornb06ea702009-07-13 13:07:51 -07003246 mRemote.transact(SET_ACTIVITY_CONTROLLER_TRANSACTION, data, reply, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003247 reply.readException();
3248 data.recycle();
3249 reply.recycle();
3250 }
3251 public void enterSafeMode() throws RemoteException {
3252 Parcel data = Parcel.obtain();
3253 data.writeInterfaceToken(IActivityManager.descriptor);
3254 mRemote.transact(ENTER_SAFE_MODE_TRANSACTION, data, null, 0);
3255 data.recycle();
3256 }
3257 public void noteWakeupAlarm(IIntentSender sender) throws RemoteException {
3258 Parcel data = Parcel.obtain();
3259 data.writeStrongBinder(sender.asBinder());
3260 data.writeInterfaceToken(IActivityManager.descriptor);
3261 mRemote.transact(NOTE_WAKEUP_ALARM_TRANSACTION, data, null, 0);
3262 data.recycle();
3263 }
Dianne Hackborn64825172011-03-02 21:32:58 -08003264 public boolean killPids(int[] pids, String reason, boolean secure) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003265 Parcel data = Parcel.obtain();
3266 Parcel reply = Parcel.obtain();
3267 data.writeInterfaceToken(IActivityManager.descriptor);
3268 data.writeIntArray(pids);
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07003269 data.writeString(reason);
Dianne Hackborn64825172011-03-02 21:32:58 -08003270 data.writeInt(secure ? 1 : 0);
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07003271 mRemote.transact(KILL_PIDS_TRANSACTION, data, reply, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003272 boolean res = reply.readInt() != 0;
3273 data.recycle();
3274 reply.recycle();
3275 return res;
3276 }
Jeff Sharkeyb9a07012012-03-22 17:00:04 -07003277 @Override
3278 public boolean killProcessesBelowForeground(String reason) throws RemoteException {
3279 Parcel data = Parcel.obtain();
3280 Parcel reply = Parcel.obtain();
3281 data.writeInterfaceToken(IActivityManager.descriptor);
3282 data.writeString(reason);
3283 mRemote.transact(KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION, data, reply, 0);
3284 boolean res = reply.readInt() != 0;
3285 data.recycle();
3286 reply.recycle();
3287 return res;
3288 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003289 public void startRunning(String pkg, String cls, String action,
3290 String indata) throws RemoteException {
3291 Parcel data = Parcel.obtain();
3292 Parcel reply = Parcel.obtain();
3293 data.writeInterfaceToken(IActivityManager.descriptor);
3294 data.writeString(pkg);
3295 data.writeString(cls);
3296 data.writeString(action);
3297 data.writeString(indata);
3298 mRemote.transact(START_RUNNING_TRANSACTION, data, reply, 0);
3299 reply.readException();
3300 data.recycle();
3301 reply.recycle();
3302 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003303 public boolean testIsSystemReady()
3304 {
3305 /* this base class version is never called */
3306 return true;
3307 }
Dan Egnor60d87622009-12-16 16:32:58 -08003308 public void handleApplicationCrash(IBinder app,
3309 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException
3310 {
3311 Parcel data = Parcel.obtain();
3312 Parcel reply = Parcel.obtain();
3313 data.writeInterfaceToken(IActivityManager.descriptor);
3314 data.writeStrongBinder(app);
3315 crashInfo.writeToParcel(data, 0);
3316 mRemote.transact(HANDLE_APPLICATION_CRASH_TRANSACTION, data, reply, 0);
3317 reply.readException();
3318 reply.recycle();
3319 data.recycle();
3320 }
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003321
Dan Egnor60d87622009-12-16 16:32:58 -08003322 public boolean handleApplicationWtf(IBinder app, String tag,
Dan Egnorb7f03672009-12-09 16:22:32 -08003323 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003324 {
3325 Parcel data = Parcel.obtain();
3326 Parcel reply = Parcel.obtain();
3327 data.writeInterfaceToken(IActivityManager.descriptor);
3328 data.writeStrongBinder(app);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003329 data.writeString(tag);
Dan Egnorb7f03672009-12-09 16:22:32 -08003330 crashInfo.writeToParcel(data, 0);
Dan Egnor60d87622009-12-16 16:32:58 -08003331 mRemote.transact(HANDLE_APPLICATION_WTF_TRANSACTION, data, reply, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003332 reply.readException();
Dan Egnor60d87622009-12-16 16:32:58 -08003333 boolean res = reply.readInt() != 0;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003334 reply.recycle();
3335 data.recycle();
Dan Egnor60d87622009-12-16 16:32:58 -08003336 return res;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003337 }
Dan Egnorb7f03672009-12-09 16:22:32 -08003338
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003339 public void handleApplicationStrictModeViolation(IBinder app,
Brad Fitzpatrick46d42382010-06-11 13:57:58 -07003340 int violationMask,
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -07003341 StrictMode.ViolationInfo info) throws RemoteException
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003342 {
3343 Parcel data = Parcel.obtain();
3344 Parcel reply = Parcel.obtain();
3345 data.writeInterfaceToken(IActivityManager.descriptor);
3346 data.writeStrongBinder(app);
Brad Fitzpatrick46d42382010-06-11 13:57:58 -07003347 data.writeInt(violationMask);
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -07003348 info.writeToParcel(data, 0);
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003349 mRemote.transact(HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION, data, reply, 0);
3350 reply.readException();
3351 reply.recycle();
3352 data.recycle();
3353 }
3354
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003355 public void signalPersistentProcesses(int sig) throws RemoteException {
3356 Parcel data = Parcel.obtain();
3357 Parcel reply = Parcel.obtain();
3358 data.writeInterfaceToken(IActivityManager.descriptor);
3359 data.writeInt(sig);
3360 mRemote.transact(SIGNAL_PERSISTENT_PROCESSES_TRANSACTION, data, reply, 0);
3361 reply.readException();
3362 data.recycle();
3363 reply.recycle();
3364 }
Dianne Hackborne4d4fbc2011-11-08 11:53:28 -08003365
Dianne Hackborn1676c852012-09-10 14:52:30 -07003366 public void killBackgroundProcesses(String packageName, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003367 Parcel data = Parcel.obtain();
3368 Parcel reply = Parcel.obtain();
3369 data.writeInterfaceToken(IActivityManager.descriptor);
3370 data.writeString(packageName);
Dianne Hackborn1676c852012-09-10 14:52:30 -07003371 data.writeInt(userId);
Dianne Hackborn03abb812010-01-04 18:43:19 -08003372 mRemote.transact(KILL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0);
3373 reply.readException();
3374 data.recycle();
3375 reply.recycle();
3376 }
Dianne Hackborne4d4fbc2011-11-08 11:53:28 -08003377
3378 public void killAllBackgroundProcesses() throws RemoteException {
3379 Parcel data = Parcel.obtain();
3380 Parcel reply = Parcel.obtain();
3381 data.writeInterfaceToken(IActivityManager.descriptor);
3382 mRemote.transact(KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0);
3383 reply.readException();
3384 data.recycle();
3385 reply.recycle();
3386 }
3387
Dianne Hackborn1676c852012-09-10 14:52:30 -07003388 public void forceStopPackage(String packageName, int userId) throws RemoteException {
Dianne Hackborn03abb812010-01-04 18:43:19 -08003389 Parcel data = Parcel.obtain();
3390 Parcel reply = Parcel.obtain();
3391 data.writeInterfaceToken(IActivityManager.descriptor);
3392 data.writeString(packageName);
Dianne Hackborn1676c852012-09-10 14:52:30 -07003393 data.writeInt(userId);
Dianne Hackborn03abb812010-01-04 18:43:19 -08003394 mRemote.transact(FORCE_STOP_PACKAGE_TRANSACTION, data, reply, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003395 reply.readException();
3396 data.recycle();
3397 reply.recycle();
3398 }
3399
Dianne Hackborn27ff9132012-03-06 14:57:58 -08003400 public void getMyMemoryState(ActivityManager.RunningAppProcessInfo outInfo)
3401 throws RemoteException
3402 {
3403 Parcel data = Parcel.obtain();
3404 Parcel reply = Parcel.obtain();
3405 data.writeInterfaceToken(IActivityManager.descriptor);
3406 mRemote.transact(GET_MY_MEMORY_STATE_TRANSACTION, data, reply, 0);
3407 reply.readException();
3408 outInfo.readFromParcel(reply);
3409 reply.recycle();
3410 data.recycle();
3411 }
3412
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003413 public ConfigurationInfo getDeviceConfigurationInfo() throws RemoteException
3414 {
3415 Parcel data = Parcel.obtain();
3416 Parcel reply = Parcel.obtain();
3417 data.writeInterfaceToken(IActivityManager.descriptor);
3418 mRemote.transact(GET_DEVICE_CONFIGURATION_TRANSACTION, data, reply, 0);
3419 reply.readException();
3420 ConfigurationInfo res = ConfigurationInfo.CREATOR.createFromParcel(reply);
3421 reply.recycle();
3422 data.recycle();
3423 return res;
3424 }
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003425
Dianne Hackborn1676c852012-09-10 14:52:30 -07003426 public boolean profileControl(String process, int userId, boolean start,
Romain Guy7eabe552011-07-21 14:56:34 -07003427 String path, ParcelFileDescriptor fd, int profileType) throws RemoteException
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003428 {
3429 Parcel data = Parcel.obtain();
3430 Parcel reply = Parcel.obtain();
3431 data.writeInterfaceToken(IActivityManager.descriptor);
3432 data.writeString(process);
Dianne Hackborn1676c852012-09-10 14:52:30 -07003433 data.writeInt(userId);
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003434 data.writeInt(start ? 1 : 0);
Romain Guy9a8c5ce2011-07-21 18:04:29 -07003435 data.writeInt(profileType);
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003436 data.writeString(path);
Dianne Hackborn9c8dd552009-06-23 19:22:52 -07003437 if (fd != null) {
3438 data.writeInt(1);
3439 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
3440 } else {
3441 data.writeInt(0);
3442 }
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003443 mRemote.transact(PROFILE_CONTROL_TRANSACTION, data, reply, 0);
3444 reply.readException();
3445 boolean res = reply.readInt() != 0;
3446 reply.recycle();
3447 data.recycle();
3448 return res;
3449 }
3450
Dianne Hackborn55280a92009-05-07 15:53:46 -07003451 public boolean shutdown(int timeout) throws RemoteException
3452 {
3453 Parcel data = Parcel.obtain();
3454 Parcel reply = Parcel.obtain();
3455 data.writeInterfaceToken(IActivityManager.descriptor);
3456 data.writeInt(timeout);
3457 mRemote.transact(SHUTDOWN_TRANSACTION, data, reply, 0);
3458 reply.readException();
3459 boolean res = reply.readInt() != 0;
3460 reply.recycle();
3461 data.recycle();
3462 return res;
3463 }
3464
Dianne Hackborn95fc68f2009-05-19 18:37:45 -07003465 public void stopAppSwitches() throws RemoteException {
3466 Parcel data = Parcel.obtain();
3467 Parcel reply = Parcel.obtain();
3468 data.writeInterfaceToken(IActivityManager.descriptor);
3469 mRemote.transact(STOP_APP_SWITCHES_TRANSACTION, data, reply, 0);
3470 reply.readException();
3471 reply.recycle();
3472 data.recycle();
3473 }
3474
3475 public void resumeAppSwitches() throws RemoteException {
3476 Parcel data = Parcel.obtain();
3477 Parcel reply = Parcel.obtain();
3478 data.writeInterfaceToken(IActivityManager.descriptor);
3479 mRemote.transact(RESUME_APP_SWITCHES_TRANSACTION, data, reply, 0);
3480 reply.readException();
3481 reply.recycle();
3482 data.recycle();
3483 }
3484
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003485 public void killApplicationWithAppId(String pkg, int appid) throws RemoteException {
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07003486 Parcel data = Parcel.obtain();
3487 Parcel reply = Parcel.obtain();
3488 data.writeInterfaceToken(IActivityManager.descriptor);
3489 data.writeString(pkg);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003490 data.writeInt(appid);
3491 mRemote.transact(KILL_APPLICATION_WITH_APPID_TRANSACTION, data, reply, 0);
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07003492 reply.readException();
3493 data.recycle();
3494 reply.recycle();
3495 }
Dianne Hackborna6ddc8a2009-07-28 17:49:55 -07003496
3497 public void closeSystemDialogs(String reason) throws RemoteException {
3498 Parcel data = Parcel.obtain();
3499 Parcel reply = Parcel.obtain();
3500 data.writeInterfaceToken(IActivityManager.descriptor);
3501 data.writeString(reason);
3502 mRemote.transact(CLOSE_SYSTEM_DIALOGS_TRANSACTION, data, reply, 0);
3503 reply.readException();
3504 data.recycle();
3505 reply.recycle();
3506 }
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003507
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07003508 public Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids)
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003509 throws RemoteException {
3510 Parcel data = Parcel.obtain();
3511 Parcel reply = Parcel.obtain();
3512 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07003513 data.writeIntArray(pids);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003514 mRemote.transact(GET_PROCESS_MEMORY_INFO_TRANSACTION, data, reply, 0);
3515 reply.readException();
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07003516 Debug.MemoryInfo[] res = reply.createTypedArray(Debug.MemoryInfo.CREATOR);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003517 data.recycle();
3518 reply.recycle();
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07003519 return res;
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003520 }
Christopher Tate5e1ab332009-09-01 20:32:49 -07003521
3522 public void killApplicationProcess(String processName, int uid) throws RemoteException {
3523 Parcel data = Parcel.obtain();
3524 Parcel reply = Parcel.obtain();
3525 data.writeInterfaceToken(IActivityManager.descriptor);
3526 data.writeString(processName);
3527 data.writeInt(uid);
3528 mRemote.transact(KILL_APPLICATION_PROCESS_TRANSACTION, data, reply, 0);
3529 reply.readException();
3530 data.recycle();
3531 reply.recycle();
3532 }
3533
Dianne Hackborn3b3e1452009-09-24 19:22:12 -07003534 public void overridePendingTransition(IBinder token, String packageName,
3535 int enterAnim, int exitAnim) throws RemoteException {
3536 Parcel data = Parcel.obtain();
3537 Parcel reply = Parcel.obtain();
3538 data.writeInterfaceToken(IActivityManager.descriptor);
3539 data.writeStrongBinder(token);
3540 data.writeString(packageName);
3541 data.writeInt(enterAnim);
3542 data.writeInt(exitAnim);
3543 mRemote.transact(OVERRIDE_PENDING_TRANSITION_TRANSACTION, data, reply, 0);
3544 reply.readException();
3545 data.recycle();
3546 reply.recycle();
3547 }
3548
Dianne Hackborn9327f4f2010-01-29 10:38:29 -08003549 public boolean isUserAMonkey() throws RemoteException {
3550 Parcel data = Parcel.obtain();
3551 Parcel reply = Parcel.obtain();
3552 data.writeInterfaceToken(IActivityManager.descriptor);
3553 mRemote.transact(IS_USER_A_MONKEY_TRANSACTION, data, reply, 0);
3554 reply.readException();
3555 boolean res = reply.readInt() != 0;
3556 data.recycle();
3557 reply.recycle();
3558 return res;
3559 }
3560
Dianne Hackborn860755f2010-06-03 18:47:52 -07003561 public void finishHeavyWeightApp() throws RemoteException {
3562 Parcel data = Parcel.obtain();
3563 Parcel reply = Parcel.obtain();
3564 data.writeInterfaceToken(IActivityManager.descriptor);
3565 mRemote.transact(FINISH_HEAVY_WEIGHT_APP_TRANSACTION, data, reply, 0);
3566 reply.readException();
3567 data.recycle();
3568 reply.recycle();
3569 }
3570
Daniel Sandler69a48172010-06-23 16:29:36 -04003571 public void setImmersive(IBinder token, boolean immersive)
3572 throws RemoteException {
3573 Parcel data = Parcel.obtain();
3574 Parcel reply = Parcel.obtain();
3575 data.writeInterfaceToken(IActivityManager.descriptor);
3576 data.writeStrongBinder(token);
3577 data.writeInt(immersive ? 1 : 0);
3578 mRemote.transact(SET_IMMERSIVE_TRANSACTION, data, reply, 0);
3579 reply.readException();
3580 data.recycle();
3581 reply.recycle();
3582 }
3583
3584 public boolean isImmersive(IBinder token)
3585 throws RemoteException {
3586 Parcel data = Parcel.obtain();
3587 Parcel reply = Parcel.obtain();
3588 data.writeInterfaceToken(IActivityManager.descriptor);
3589 data.writeStrongBinder(token);
3590 mRemote.transact(IS_IMMERSIVE_TRANSACTION, data, reply, 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04003591 reply.readException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07003592 boolean res = reply.readInt() == 1;
Daniel Sandler69a48172010-06-23 16:29:36 -04003593 data.recycle();
3594 reply.recycle();
3595 return res;
3596 }
3597
3598 public boolean isTopActivityImmersive()
3599 throws RemoteException {
3600 Parcel data = Parcel.obtain();
3601 Parcel reply = Parcel.obtain();
3602 data.writeInterfaceToken(IActivityManager.descriptor);
3603 mRemote.transact(IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION, data, reply, 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04003604 reply.readException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07003605 boolean res = reply.readInt() == 1;
Daniel Sandler69a48172010-06-23 16:29:36 -04003606 data.recycle();
3607 reply.recycle();
3608 return res;
3609 }
3610
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07003611 public void crashApplication(int uid, int initialPid, String packageName,
3612 String message) throws RemoteException {
3613 Parcel data = Parcel.obtain();
3614 Parcel reply = Parcel.obtain();
3615 data.writeInterfaceToken(IActivityManager.descriptor);
3616 data.writeInt(uid);
3617 data.writeInt(initialPid);
3618 data.writeString(packageName);
3619 data.writeString(message);
3620 mRemote.transact(CRASH_APPLICATION_TRANSACTION, data, reply, 0);
3621 reply.readException();
3622 data.recycle();
3623 reply.recycle();
3624 }
Andy McFadden824c5102010-07-09 16:26:57 -07003625
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003626 public String getProviderMimeType(Uri uri, int userId) throws RemoteException {
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07003627 Parcel data = Parcel.obtain();
3628 Parcel reply = Parcel.obtain();
3629 data.writeInterfaceToken(IActivityManager.descriptor);
3630 uri.writeToParcel(data, 0);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003631 data.writeInt(userId);
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07003632 mRemote.transact(GET_PROVIDER_MIME_TYPE_TRANSACTION, data, reply, 0);
3633 reply.readException();
3634 String res = reply.readString();
3635 data.recycle();
3636 reply.recycle();
3637 return res;
3638 }
3639
Dianne Hackborn7e269642010-08-25 19:50:20 -07003640 public IBinder newUriPermissionOwner(String name)
3641 throws RemoteException {
3642 Parcel data = Parcel.obtain();
3643 Parcel reply = Parcel.obtain();
3644 data.writeInterfaceToken(IActivityManager.descriptor);
3645 data.writeString(name);
3646 mRemote.transact(NEW_URI_PERMISSION_OWNER_TRANSACTION, data, reply, 0);
3647 reply.readException();
3648 IBinder res = reply.readStrongBinder();
3649 data.recycle();
3650 reply.recycle();
3651 return res;
3652 }
3653
3654 public void grantUriPermissionFromOwner(IBinder owner, int fromUid, String targetPkg,
3655 Uri uri, int mode) throws RemoteException {
3656 Parcel data = Parcel.obtain();
3657 Parcel reply = Parcel.obtain();
3658 data.writeInterfaceToken(IActivityManager.descriptor);
3659 data.writeStrongBinder(owner);
3660 data.writeInt(fromUid);
3661 data.writeString(targetPkg);
3662 uri.writeToParcel(data, 0);
3663 data.writeInt(mode);
3664 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0);
3665 reply.readException();
3666 data.recycle();
3667 reply.recycle();
3668 }
3669
3670 public void revokeUriPermissionFromOwner(IBinder owner, Uri uri,
3671 int mode) throws RemoteException {
3672 Parcel data = Parcel.obtain();
3673 Parcel reply = Parcel.obtain();
3674 data.writeInterfaceToken(IActivityManager.descriptor);
3675 data.writeStrongBinder(owner);
3676 if (uri != null) {
3677 data.writeInt(1);
3678 uri.writeToParcel(data, 0);
3679 } else {
3680 data.writeInt(0);
3681 }
3682 data.writeInt(mode);
3683 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0);
3684 reply.readException();
3685 data.recycle();
3686 reply.recycle();
3687 }
Dianne Hackbornc8f84972010-08-25 23:14:44 -07003688
Dianne Hackborn90f4aaf2010-09-27 14:58:44 -07003689 public int checkGrantUriPermission(int callingUid, String targetPkg,
3690 Uri uri, int modeFlags) throws RemoteException {
3691 Parcel data = Parcel.obtain();
3692 Parcel reply = Parcel.obtain();
3693 data.writeInterfaceToken(IActivityManager.descriptor);
3694 data.writeInt(callingUid);
3695 data.writeString(targetPkg);
3696 uri.writeToParcel(data, 0);
3697 data.writeInt(modeFlags);
3698 mRemote.transact(CHECK_GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0);
3699 reply.readException();
3700 int res = reply.readInt();
3701 data.recycle();
3702 reply.recycle();
3703 return res;
3704 }
3705
Dianne Hackborn1676c852012-09-10 14:52:30 -07003706 public boolean dumpHeap(String process, int userId, boolean managed,
Andy McFadden824c5102010-07-09 16:26:57 -07003707 String path, ParcelFileDescriptor fd) throws RemoteException {
3708 Parcel data = Parcel.obtain();
3709 Parcel reply = Parcel.obtain();
3710 data.writeInterfaceToken(IActivityManager.descriptor);
3711 data.writeString(process);
Dianne Hackborn1676c852012-09-10 14:52:30 -07003712 data.writeInt(userId);
Andy McFadden824c5102010-07-09 16:26:57 -07003713 data.writeInt(managed ? 1 : 0);
3714 data.writeString(path);
3715 if (fd != null) {
3716 data.writeInt(1);
3717 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
3718 } else {
3719 data.writeInt(0);
3720 }
3721 mRemote.transact(DUMP_HEAP_TRANSACTION, data, reply, 0);
3722 reply.readException();
3723 boolean res = reply.readInt() != 0;
3724 reply.recycle();
3725 data.recycle();
3726 return res;
3727 }
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07003728
Dianne Hackborn621e17d2010-11-22 15:59:56 -08003729 public int startActivities(IApplicationThread caller,
Dianne Hackborna4972e92012-03-14 10:38:05 -07003730 Intent[] intents, String[] resolvedTypes, IBinder resultTo,
Amith Yamasaniea7e9152012-09-24 16:11:18 -07003731 Bundle options, int userId) throws RemoteException {
Dianne Hackborn621e17d2010-11-22 15:59:56 -08003732 Parcel data = Parcel.obtain();
3733 Parcel reply = Parcel.obtain();
3734 data.writeInterfaceToken(IActivityManager.descriptor);
3735 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
3736 data.writeTypedArray(intents, 0);
3737 data.writeStringArray(resolvedTypes);
3738 data.writeStrongBinder(resultTo);
Dianne Hackborna4972e92012-03-14 10:38:05 -07003739 if (options != null) {
3740 data.writeInt(1);
3741 options.writeToParcel(data, 0);
3742 } else {
3743 data.writeInt(0);
3744 }
Amith Yamasaniea7e9152012-09-24 16:11:18 -07003745 data.writeInt(userId);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08003746 mRemote.transact(START_ACTIVITIES_TRANSACTION, data, reply, 0);
3747 reply.readException();
3748 int result = reply.readInt();
3749 reply.recycle();
3750 data.recycle();
3751 return result;
3752 }
3753
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07003754 public int getFrontActivityScreenCompatMode() throws RemoteException {
3755 Parcel data = Parcel.obtain();
3756 Parcel reply = Parcel.obtain();
3757 data.writeInterfaceToken(IActivityManager.descriptor);
3758 mRemote.transact(GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
3759 reply.readException();
3760 int mode = reply.readInt();
3761 reply.recycle();
3762 data.recycle();
3763 return mode;
3764 }
3765
3766 public void setFrontActivityScreenCompatMode(int mode) throws RemoteException {
3767 Parcel data = Parcel.obtain();
3768 Parcel reply = Parcel.obtain();
3769 data.writeInterfaceToken(IActivityManager.descriptor);
3770 data.writeInt(mode);
3771 mRemote.transact(SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
3772 reply.readException();
3773 reply.recycle();
3774 data.recycle();
3775 }
3776
3777 public int getPackageScreenCompatMode(String packageName) throws RemoteException {
3778 Parcel data = Parcel.obtain();
3779 Parcel reply = Parcel.obtain();
3780 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn36cd41f2011-05-25 21:00:46 -07003781 data.writeString(packageName);
3782 mRemote.transact(GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07003783 reply.readException();
3784 int mode = reply.readInt();
3785 reply.recycle();
3786 data.recycle();
3787 return mode;
3788 }
3789
3790 public void setPackageScreenCompatMode(String packageName, int mode)
Dianne Hackborne2515ee2011-04-27 18:52:56 -04003791 throws RemoteException {
3792 Parcel data = Parcel.obtain();
3793 Parcel reply = Parcel.obtain();
3794 data.writeInterfaceToken(IActivityManager.descriptor);
3795 data.writeString(packageName);
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07003796 data.writeInt(mode);
Dianne Hackborne2515ee2011-04-27 18:52:56 -04003797 mRemote.transact(SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
3798 reply.readException();
3799 reply.recycle();
3800 data.recycle();
3801 }
3802
Dianne Hackborn36cd41f2011-05-25 21:00:46 -07003803 public boolean getPackageAskScreenCompat(String packageName) throws RemoteException {
3804 Parcel data = Parcel.obtain();
3805 Parcel reply = Parcel.obtain();
3806 data.writeInterfaceToken(IActivityManager.descriptor);
3807 data.writeString(packageName);
3808 mRemote.transact(GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0);
3809 reply.readException();
3810 boolean ask = reply.readInt() != 0;
3811 reply.recycle();
3812 data.recycle();
3813 return ask;
3814 }
3815
3816 public void setPackageAskScreenCompat(String packageName, boolean ask)
3817 throws RemoteException {
3818 Parcel data = Parcel.obtain();
3819 Parcel reply = Parcel.obtain();
3820 data.writeInterfaceToken(IActivityManager.descriptor);
3821 data.writeString(packageName);
3822 data.writeInt(ask ? 1 : 0);
3823 mRemote.transact(SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0);
3824 reply.readException();
3825 reply.recycle();
3826 data.recycle();
3827 }
3828
Amith Yamasani4b2e9342011-03-31 12:38:53 -07003829 public boolean switchUser(int userid) throws RemoteException {
3830 Parcel data = Parcel.obtain();
3831 Parcel reply = Parcel.obtain();
3832 data.writeInterfaceToken(IActivityManager.descriptor);
3833 data.writeInt(userid);
3834 mRemote.transact(SWITCH_USER_TRANSACTION, data, reply, 0);
3835 reply.readException();
3836 boolean result = reply.readInt() != 0;
3837 reply.recycle();
3838 data.recycle();
3839 return result;
3840 }
Amith Yamasani52f1d752012-03-28 18:19:29 -07003841
Dianne Hackborn80a4af22012-08-27 19:18:31 -07003842 public int stopUser(int userid, IStopUserCallback callback) throws RemoteException {
3843 Parcel data = Parcel.obtain();
3844 Parcel reply = Parcel.obtain();
3845 data.writeInterfaceToken(IActivityManager.descriptor);
3846 data.writeInt(userid);
3847 data.writeStrongInterface(callback);
3848 mRemote.transact(STOP_USER_TRANSACTION, data, reply, 0);
3849 reply.readException();
3850 int result = reply.readInt();
3851 reply.recycle();
3852 data.recycle();
3853 return result;
3854 }
3855
Amith Yamasani52f1d752012-03-28 18:19:29 -07003856 public UserInfo getCurrentUser() throws RemoteException {
3857 Parcel data = Parcel.obtain();
3858 Parcel reply = Parcel.obtain();
3859 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn80a4af22012-08-27 19:18:31 -07003860 mRemote.transact(GET_CURRENT_USER_TRANSACTION, data, reply, 0);
Amith Yamasani52f1d752012-03-28 18:19:29 -07003861 reply.readException();
3862 UserInfo userInfo = UserInfo.CREATOR.createFromParcel(reply);
3863 reply.recycle();
3864 data.recycle();
3865 return userInfo;
3866 }
3867
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003868 public boolean isUserRunning(int userid) throws RemoteException {
3869 Parcel data = Parcel.obtain();
3870 Parcel reply = Parcel.obtain();
3871 data.writeInterfaceToken(IActivityManager.descriptor);
3872 data.writeInt(userid);
3873 mRemote.transact(IS_USER_RUNNING_TRANSACTION, data, reply, 0);
3874 reply.readException();
3875 boolean result = reply.readInt() != 0;
3876 reply.recycle();
3877 data.recycle();
3878 return result;
3879 }
3880
Dianne Hackbornc72fc672012-09-20 13:12:03 -07003881 public int[] getRunningUserIds() throws RemoteException {
3882 Parcel data = Parcel.obtain();
3883 Parcel reply = Parcel.obtain();
3884 data.writeInterfaceToken(IActivityManager.descriptor);
3885 mRemote.transact(GET_RUNNING_USER_IDS_TRANSACTION, data, reply, 0);
3886 reply.readException();
3887 int[] result = reply.createIntArray();
3888 reply.recycle();
3889 data.recycle();
3890 return result;
3891 }
3892
Dianne Hackborn0c5001d2011-04-12 18:16:08 -07003893 public boolean removeSubTask(int taskId, int subTaskIndex) throws RemoteException {
3894 Parcel data = Parcel.obtain();
3895 Parcel reply = Parcel.obtain();
3896 data.writeInterfaceToken(IActivityManager.descriptor);
3897 data.writeInt(taskId);
3898 data.writeInt(subTaskIndex);
3899 mRemote.transact(REMOVE_SUB_TASK_TRANSACTION, data, reply, 0);
3900 reply.readException();
3901 boolean result = reply.readInt() != 0;
3902 reply.recycle();
3903 data.recycle();
3904 return result;
3905 }
3906
3907 public boolean removeTask(int taskId, int flags) throws RemoteException {
3908 Parcel data = Parcel.obtain();
3909 Parcel reply = Parcel.obtain();
3910 data.writeInterfaceToken(IActivityManager.descriptor);
3911 data.writeInt(taskId);
3912 data.writeInt(flags);
3913 mRemote.transact(REMOVE_TASK_TRANSACTION, data, reply, 0);
3914 reply.readException();
3915 boolean result = reply.readInt() != 0;
3916 reply.recycle();
3917 data.recycle();
3918 return result;
3919 }
Amith Yamasani4b2e9342011-03-31 12:38:53 -07003920
Jeff Sharkeya4620792011-05-20 15:29:23 -07003921 public void registerProcessObserver(IProcessObserver observer) throws RemoteException {
3922 Parcel data = Parcel.obtain();
3923 Parcel reply = Parcel.obtain();
3924 data.writeInterfaceToken(IActivityManager.descriptor);
3925 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
3926 mRemote.transact(REGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0);
3927 reply.readException();
3928 data.recycle();
3929 reply.recycle();
3930 }
3931
3932 public void unregisterProcessObserver(IProcessObserver observer) throws RemoteException {
3933 Parcel data = Parcel.obtain();
3934 Parcel reply = Parcel.obtain();
3935 data.writeInterfaceToken(IActivityManager.descriptor);
3936 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
3937 mRemote.transact(UNREGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0);
3938 reply.readException();
3939 data.recycle();
3940 reply.recycle();
3941 }
3942
Dianne Hackborn6c418d52011-06-29 14:05:33 -07003943 public boolean isIntentSenderTargetedToPackage(IIntentSender sender) throws RemoteException {
3944 Parcel data = Parcel.obtain();
3945 Parcel reply = Parcel.obtain();
3946 data.writeInterfaceToken(IActivityManager.descriptor);
3947 data.writeStrongBinder(sender.asBinder());
3948 mRemote.transact(IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION, data, reply, 0);
3949 reply.readException();
3950 boolean res = reply.readInt() != 0;
3951 data.recycle();
3952 reply.recycle();
3953 return res;
3954 }
3955
Dianne Hackborn1927ae82012-06-22 15:21:36 -07003956 public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException {
3957 Parcel data = Parcel.obtain();
3958 Parcel reply = Parcel.obtain();
3959 data.writeInterfaceToken(IActivityManager.descriptor);
3960 data.writeStrongBinder(sender.asBinder());
3961 mRemote.transact(IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION, data, reply, 0);
3962 reply.readException();
3963 boolean res = reply.readInt() != 0;
3964 data.recycle();
3965 reply.recycle();
3966 return res;
3967 }
3968
Dianne Hackborn31ca8542011-07-19 14:58:28 -07003969 public void updatePersistentConfiguration(Configuration values) throws RemoteException
3970 {
3971 Parcel data = Parcel.obtain();
3972 Parcel reply = Parcel.obtain();
3973 data.writeInterfaceToken(IActivityManager.descriptor);
3974 values.writeToParcel(data, 0);
3975 mRemote.transact(UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION, data, reply, 0);
3976 reply.readException();
3977 data.recycle();
3978 reply.recycle();
3979 }
3980
Dianne Hackbornb437e092011-08-05 17:50:29 -07003981 public long[] getProcessPss(int[] pids) throws RemoteException {
3982 Parcel data = Parcel.obtain();
3983 Parcel reply = Parcel.obtain();
3984 data.writeInterfaceToken(IActivityManager.descriptor);
3985 data.writeIntArray(pids);
3986 mRemote.transact(GET_PROCESS_PSS_TRANSACTION, data, reply, 0);
3987 reply.readException();
3988 long[] res = reply.createLongArray();
3989 data.recycle();
3990 reply.recycle();
3991 return res;
3992 }
3993
Dianne Hackborn661cd522011-08-22 00:26:20 -07003994 public void showBootMessage(CharSequence msg, boolean always) throws RemoteException {
3995 Parcel data = Parcel.obtain();
3996 Parcel reply = Parcel.obtain();
3997 data.writeInterfaceToken(IActivityManager.descriptor);
3998 TextUtils.writeToParcel(msg, data, 0);
3999 data.writeInt(always ? 1 : 0);
4000 mRemote.transact(SHOW_BOOT_MESSAGE_TRANSACTION, data, reply, 0);
4001 reply.readException();
4002 data.recycle();
4003 reply.recycle();
4004 }
4005
Dianne Hackborn90c52de2011-09-23 12:57:44 -07004006 public void dismissKeyguardOnNextActivity() throws RemoteException {
4007 Parcel data = Parcel.obtain();
4008 Parcel reply = Parcel.obtain();
4009 data.writeInterfaceToken(IActivityManager.descriptor);
4010 mRemote.transact(DISMISS_KEYGUARD_ON_NEXT_ACTIVITY_TRANSACTION, data, reply, 0);
4011 reply.readException();
4012 data.recycle();
4013 reply.recycle();
4014 }
4015
Adam Powelldd8fab22012-03-22 17:47:27 -07004016 public boolean targetTaskAffinityMatchesActivity(IBinder token, String destAffinity)
4017 throws RemoteException {
4018 Parcel data = Parcel.obtain();
4019 Parcel reply = Parcel.obtain();
4020 data.writeInterfaceToken(IActivityManager.descriptor);
4021 data.writeStrongBinder(token);
4022 data.writeString(destAffinity);
4023 mRemote.transact(TARGET_TASK_AFFINITY_MATCHES_ACTIVITY_TRANSACTION, data, reply, 0);
4024 reply.readException();
4025 boolean result = reply.readInt() != 0;
4026 data.recycle();
4027 reply.recycle();
4028 return result;
4029 }
4030
4031 public boolean navigateUpTo(IBinder token, Intent target, int resultCode, Intent resultData)
4032 throws RemoteException {
4033 Parcel data = Parcel.obtain();
4034 Parcel reply = Parcel.obtain();
4035 data.writeInterfaceToken(IActivityManager.descriptor);
4036 data.writeStrongBinder(token);
4037 target.writeToParcel(data, 0);
4038 data.writeInt(resultCode);
4039 if (resultData != null) {
4040 data.writeInt(1);
4041 resultData.writeToParcel(data, 0);
4042 } else {
4043 data.writeInt(0);
4044 }
4045 mRemote.transact(NAVIGATE_UP_TO_TRANSACTION, data, reply, 0);
4046 reply.readException();
4047 boolean result = reply.readInt() != 0;
4048 data.recycle();
4049 reply.recycle();
4050 return result;
4051 }
4052
Dianne Hackborn5320eb82012-05-18 12:05:04 -07004053 public int getLaunchedFromUid(IBinder activityToken) throws RemoteException {
4054 Parcel data = Parcel.obtain();
4055 Parcel reply = Parcel.obtain();
4056 data.writeInterfaceToken(IActivityManager.descriptor);
4057 data.writeStrongBinder(activityToken);
4058 mRemote.transact(GET_LAUNCHED_FROM_UID_TRANSACTION, data, reply, 0);
4059 reply.readException();
4060 int result = reply.readInt();
4061 data.recycle();
4062 reply.recycle();
4063 return result;
4064 }
4065
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07004066 public void registerUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException {
4067 Parcel data = Parcel.obtain();
4068 Parcel reply = Parcel.obtain();
4069 data.writeInterfaceToken(IActivityManager.descriptor);
4070 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
4071 mRemote.transact(REGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0);
4072 reply.readException();
4073 data.recycle();
4074 reply.recycle();
4075 }
4076
4077 public void unregisterUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException {
4078 Parcel data = Parcel.obtain();
4079 Parcel reply = Parcel.obtain();
4080 data.writeInterfaceToken(IActivityManager.descriptor);
4081 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
4082 mRemote.transact(UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0);
4083 reply.readException();
4084 data.recycle();
4085 reply.recycle();
4086 }
4087
Dianne Hackbornd4ac8d72012-09-27 23:20:10 -07004088 public void requestBugReport() throws RemoteException {
4089 Parcel data = Parcel.obtain();
4090 Parcel reply = Parcel.obtain();
4091 data.writeInterfaceToken(IActivityManager.descriptor);
4092 mRemote.transact(REQUEST_BUG_REPORT_TRANSACTION, data, reply, 0);
4093 reply.readException();
4094 data.recycle();
4095 reply.recycle();
4096 }
4097
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07004098 public long inputDispatchingTimedOut(int pid, boolean aboveSystem) throws RemoteException {
4099 Parcel data = Parcel.obtain();
4100 Parcel reply = Parcel.obtain();
4101 data.writeInterfaceToken(IActivityManager.descriptor);
4102 data.writeInt(pid);
4103 data.writeInt(aboveSystem ? 1 : 0);
4104 mRemote.transact(INPUT_DISPATCHING_TIMED_OUT_TRANSACTION, data, reply, 0);
4105 reply.readException();
4106 long res = reply.readInt();
4107 data.recycle();
4108 reply.recycle();
4109 return res;
4110 }
4111
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004112 private IBinder mRemote;
4113}