blob: 3dbb636c19c09079231f7995e6c57a434bba4af6 [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;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080042import android.text.TextUtils;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080043import android.util.Log;
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080044import android.util.Singleton;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080045
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080046import java.util.ArrayList;
47import java.util.List;
48
49/** {@hide} */
50public abstract class ActivityManagerNative extends Binder implements IActivityManager
51{
52 /**
53 * Cast a Binder object into an activity manager interface, generating
54 * a proxy if needed.
55 */
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080056 static public IActivityManager asInterface(IBinder obj) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080057 if (obj == null) {
58 return null;
59 }
60 IActivityManager in =
61 (IActivityManager)obj.queryLocalInterface(descriptor);
62 if (in != null) {
63 return in;
64 }
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080065
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080066 return new ActivityManagerProxy(obj);
67 }
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080068
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080069 /**
70 * Retrieve the system's default/global activity manager.
71 */
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080072 static public IActivityManager getDefault() {
73 return gDefault.get();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080074 }
75
76 /**
77 * Convenience for checking whether the system is ready. For internal use only.
78 */
79 static public boolean isSystemReady() {
80 if (!sSystemReady) {
81 sSystemReady = getDefault().testIsSystemReady();
82 }
83 return sSystemReady;
84 }
85 static boolean sSystemReady = false;
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080086
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080087 /**
88 * Convenience for sending a sticky broadcast. For internal use only.
89 * If you don't care about permission, use null.
90 */
Dianne Hackborn5ac72a22012-08-29 18:32:08 -070091 static public void broadcastStickyIntent(Intent intent, String permission, int userId) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080092 try {
93 getDefault().broadcastIntent(
94 null, intent, null, null, Activity.RESULT_OK, null, null,
Dianne Hackbornf51f6122013-02-04 18:23:34 -080095 null /*permission*/, AppOpsManager.OP_NONE, false, true, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080096 } catch (RemoteException ex) {
97 }
98 }
99
100 static public void noteWakeupAlarm(PendingIntent ps) {
101 try {
102 getDefault().noteWakeupAlarm(ps.getTarget());
103 } catch (RemoteException ex) {
104 }
105 }
106
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -0800107 public ActivityManagerNative() {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800108 attachInterface(this, descriptor);
109 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700110
111 @Override
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800112 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);
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800120 String callingPackage = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800121 Intent intent = Intent.CREATOR.createFromParcel(data);
122 String resolvedType = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800123 IBinder resultTo = data.readStrongBinder();
Siva Velusamy92a8b222012-03-09 16:24:04 -0800124 String resultWho = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800125 int requestCode = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700126 int startFlags = data.readInt();
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700127 String profileFile = data.readString();
128 ParcelFileDescriptor profileFd = data.readInt() != 0
129 ? data.readFileDescriptor() : null;
Dianne Hackborna4972e92012-03-14 10:38:05 -0700130 Bundle options = data.readInt() != 0
131 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800132 int result = startActivity(app, callingPackage, intent, resolvedType,
Dianne Hackborna4972e92012-03-14 10:38:05 -0700133 resultTo, resultWho, requestCode, startFlags,
134 profileFile, profileFd, options);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800135 reply.writeNoException();
136 reply.writeInt(result);
137 return true;
138 }
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700139
Amith Yamasani82644082012-08-03 13:09:11 -0700140 case START_ACTIVITY_AS_USER_TRANSACTION:
141 {
142 data.enforceInterface(IActivityManager.descriptor);
143 IBinder b = data.readStrongBinder();
144 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800145 String callingPackage = data.readString();
Amith Yamasani82644082012-08-03 13:09:11 -0700146 Intent intent = Intent.CREATOR.createFromParcel(data);
147 String resolvedType = data.readString();
148 IBinder resultTo = data.readStrongBinder();
149 String resultWho = data.readString();
150 int requestCode = data.readInt();
151 int startFlags = data.readInt();
152 String profileFile = data.readString();
153 ParcelFileDescriptor profileFd = data.readInt() != 0
154 ? data.readFileDescriptor() : null;
155 Bundle options = data.readInt() != 0
156 ? Bundle.CREATOR.createFromParcel(data) : null;
157 int userId = data.readInt();
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800158 int result = startActivityAsUser(app, callingPackage, intent, resolvedType,
Amith Yamasani82644082012-08-03 13:09:11 -0700159 resultTo, resultWho, requestCode, startFlags,
160 profileFile, profileFd, options, userId);
161 reply.writeNoException();
162 reply.writeInt(result);
163 return true;
164 }
165
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800166 case START_ACTIVITY_AND_WAIT_TRANSACTION:
167 {
168 data.enforceInterface(IActivityManager.descriptor);
169 IBinder b = data.readStrongBinder();
170 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800171 String callingPackage = data.readString();
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800172 Intent intent = Intent.CREATOR.createFromParcel(data);
173 String resolvedType = data.readString();
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800174 IBinder resultTo = data.readStrongBinder();
Siva Velusamy92a8b222012-03-09 16:24:04 -0800175 String resultWho = data.readString();
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800176 int requestCode = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700177 int startFlags = data.readInt();
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700178 String profileFile = data.readString();
179 ParcelFileDescriptor profileFd = data.readInt() != 0
180 ? data.readFileDescriptor() : null;
Dianne Hackborna4972e92012-03-14 10:38:05 -0700181 Bundle options = data.readInt() != 0
182 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -0700183 int userId = data.readInt();
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800184 WaitResult result = startActivityAndWait(app, callingPackage, intent, resolvedType,
Dianne Hackborna4972e92012-03-14 10:38:05 -0700185 resultTo, resultWho, requestCode, startFlags,
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -0700186 profileFile, profileFd, options, userId);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800187 reply.writeNoException();
188 result.writeToParcel(reply, 0);
189 return true;
190 }
191
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700192 case START_ACTIVITY_WITH_CONFIG_TRANSACTION:
193 {
194 data.enforceInterface(IActivityManager.descriptor);
195 IBinder b = data.readStrongBinder();
196 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800197 String callingPackage = data.readString();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700198 Intent intent = Intent.CREATOR.createFromParcel(data);
199 String resolvedType = data.readString();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700200 IBinder resultTo = data.readStrongBinder();
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700201 String resultWho = data.readString();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700202 int requestCode = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700203 int startFlags = data.readInt();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700204 Configuration config = Configuration.CREATOR.createFromParcel(data);
Dianne Hackborna4972e92012-03-14 10:38:05 -0700205 Bundle options = data.readInt() != 0
206 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackborn41203752012-08-31 14:05:51 -0700207 int userId = data.readInt();
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800208 int result = startActivityWithConfig(app, callingPackage, intent, resolvedType,
Dianne Hackborn41203752012-08-31 14:05:51 -0700209 resultTo, resultWho, requestCode, startFlags, config, options, userId);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700210 reply.writeNoException();
211 reply.writeInt(result);
212 return true;
213 }
214
Dianne Hackbornfa82f222009-09-17 15:14:12 -0700215 case START_ACTIVITY_INTENT_SENDER_TRANSACTION:
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700216 {
217 data.enforceInterface(IActivityManager.descriptor);
218 IBinder b = data.readStrongBinder();
219 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornfa82f222009-09-17 15:14:12 -0700220 IntentSender intent = IntentSender.CREATOR.createFromParcel(data);
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700221 Intent fillInIntent = null;
222 if (data.readInt() != 0) {
223 fillInIntent = Intent.CREATOR.createFromParcel(data);
224 }
225 String resolvedType = data.readString();
226 IBinder resultTo = data.readStrongBinder();
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700227 String resultWho = data.readString();
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700228 int requestCode = data.readInt();
229 int flagsMask = data.readInt();
230 int flagsValues = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700231 Bundle options = data.readInt() != 0
232 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackbornfa82f222009-09-17 15:14:12 -0700233 int result = startActivityIntentSender(app, intent,
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700234 fillInIntent, resolvedType, resultTo, resultWho,
Dianne Hackborna4972e92012-03-14 10:38:05 -0700235 requestCode, flagsMask, flagsValues, options);
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700236 reply.writeNoException();
237 reply.writeInt(result);
238 return true;
239 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700240
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800241 case START_NEXT_MATCHING_ACTIVITY_TRANSACTION:
242 {
243 data.enforceInterface(IActivityManager.descriptor);
244 IBinder callingActivity = data.readStrongBinder();
245 Intent intent = Intent.CREATOR.createFromParcel(data);
Dianne Hackborna4972e92012-03-14 10:38:05 -0700246 Bundle options = data.readInt() != 0
247 ? Bundle.CREATOR.createFromParcel(data) : null;
248 boolean result = startNextMatchingActivity(callingActivity, intent, options);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800249 reply.writeNoException();
250 reply.writeInt(result ? 1 : 0);
251 return true;
252 }
Dianne Hackbornecc5a9c2012-04-26 18:56:09 -0700253
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800254 case FINISH_ACTIVITY_TRANSACTION: {
255 data.enforceInterface(IActivityManager.descriptor);
256 IBinder token = data.readStrongBinder();
257 Intent resultData = null;
258 int resultCode = data.readInt();
259 if (data.readInt() != 0) {
260 resultData = Intent.CREATOR.createFromParcel(data);
261 }
262 boolean res = finishActivity(token, resultCode, resultData);
263 reply.writeNoException();
264 reply.writeInt(res ? 1 : 0);
265 return true;
266 }
267
268 case FINISH_SUB_ACTIVITY_TRANSACTION: {
269 data.enforceInterface(IActivityManager.descriptor);
270 IBinder token = data.readStrongBinder();
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700271 String resultWho = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800272 int requestCode = data.readInt();
273 finishSubActivity(token, resultWho, requestCode);
274 reply.writeNoException();
275 return true;
276 }
277
Dianne Hackbornecc5a9c2012-04-26 18:56:09 -0700278 case FINISH_ACTIVITY_AFFINITY_TRANSACTION: {
279 data.enforceInterface(IActivityManager.descriptor);
280 IBinder token = data.readStrongBinder();
281 boolean res = finishActivityAffinity(token);
282 reply.writeNoException();
283 reply.writeInt(res ? 1 : 0);
284 return true;
285 }
286
Dianne Hackborn061d58a2010-03-12 15:07:06 -0800287 case WILL_ACTIVITY_BE_VISIBLE_TRANSACTION: {
288 data.enforceInterface(IActivityManager.descriptor);
289 IBinder token = data.readStrongBinder();
290 boolean res = willActivityBeVisible(token);
291 reply.writeNoException();
292 reply.writeInt(res ? 1 : 0);
293 return true;
294 }
295
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800296 case REGISTER_RECEIVER_TRANSACTION:
297 {
298 data.enforceInterface(IActivityManager.descriptor);
299 IBinder b = data.readStrongBinder();
300 IApplicationThread app =
301 b != null ? ApplicationThreadNative.asInterface(b) : null;
Dianne Hackborn6c418d52011-06-29 14:05:33 -0700302 String packageName = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800303 b = data.readStrongBinder();
304 IIntentReceiver rec
305 = b != null ? IIntentReceiver.Stub.asInterface(b) : null;
306 IntentFilter filter = IntentFilter.CREATOR.createFromParcel(data);
307 String perm = data.readString();
Dianne Hackborn20e80982012-08-31 19:00:44 -0700308 int userId = data.readInt();
309 Intent intent = registerReceiver(app, packageName, rec, filter, perm, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800310 reply.writeNoException();
311 if (intent != null) {
312 reply.writeInt(1);
313 intent.writeToParcel(reply, 0);
314 } else {
315 reply.writeInt(0);
316 }
317 return true;
318 }
319
320 case UNREGISTER_RECEIVER_TRANSACTION:
321 {
322 data.enforceInterface(IActivityManager.descriptor);
323 IBinder b = data.readStrongBinder();
324 if (b == null) {
325 return true;
326 }
327 IIntentReceiver rec = IIntentReceiver.Stub.asInterface(b);
328 unregisterReceiver(rec);
329 reply.writeNoException();
330 return true;
331 }
332
333 case BROADCAST_INTENT_TRANSACTION:
334 {
335 data.enforceInterface(IActivityManager.descriptor);
336 IBinder b = data.readStrongBinder();
337 IApplicationThread app =
338 b != null ? ApplicationThreadNative.asInterface(b) : null;
339 Intent intent = Intent.CREATOR.createFromParcel(data);
340 String resolvedType = data.readString();
341 b = data.readStrongBinder();
342 IIntentReceiver resultTo =
343 b != null ? IIntentReceiver.Stub.asInterface(b) : null;
344 int resultCode = data.readInt();
345 String resultData = data.readString();
346 Bundle resultExtras = data.readBundle();
347 String perm = data.readString();
Dianne Hackbornf51f6122013-02-04 18:23:34 -0800348 int appOp = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800349 boolean serialized = data.readInt() != 0;
350 boolean sticky = data.readInt() != 0;
Amith Yamasani742a6712011-05-04 14:49:28 -0700351 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800352 int res = broadcastIntent(app, intent, resolvedType, resultTo,
Dianne Hackbornf51f6122013-02-04 18:23:34 -0800353 resultCode, resultData, resultExtras, perm, appOp,
Amith Yamasani742a6712011-05-04 14:49:28 -0700354 serialized, sticky, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800355 reply.writeNoException();
356 reply.writeInt(res);
357 return true;
358 }
359
360 case UNBROADCAST_INTENT_TRANSACTION:
361 {
362 data.enforceInterface(IActivityManager.descriptor);
363 IBinder b = data.readStrongBinder();
364 IApplicationThread app = b != null ? ApplicationThreadNative.asInterface(b) : null;
365 Intent intent = Intent.CREATOR.createFromParcel(data);
Amith Yamasani742a6712011-05-04 14:49:28 -0700366 int userId = data.readInt();
367 unbroadcastIntent(app, intent, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800368 reply.writeNoException();
369 return true;
370 }
371
372 case FINISH_RECEIVER_TRANSACTION: {
373 data.enforceInterface(IActivityManager.descriptor);
374 IBinder who = data.readStrongBinder();
375 int resultCode = data.readInt();
376 String resultData = data.readString();
377 Bundle resultExtras = data.readBundle();
378 boolean resultAbort = data.readInt() != 0;
379 if (who != null) {
380 finishReceiver(who, resultCode, resultData, resultExtras, resultAbort);
381 }
382 reply.writeNoException();
383 return true;
384 }
385
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800386 case ATTACH_APPLICATION_TRANSACTION: {
387 data.enforceInterface(IActivityManager.descriptor);
388 IApplicationThread app = ApplicationThreadNative.asInterface(
389 data.readStrongBinder());
390 if (app != null) {
391 attachApplication(app);
392 }
393 reply.writeNoException();
394 return true;
395 }
396
397 case ACTIVITY_IDLE_TRANSACTION: {
398 data.enforceInterface(IActivityManager.descriptor);
399 IBinder token = data.readStrongBinder();
Dianne Hackborne88846e2009-09-30 21:34:25 -0700400 Configuration config = null;
401 if (data.readInt() != 0) {
402 config = Configuration.CREATOR.createFromParcel(data);
403 }
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700404 boolean stopProfiling = data.readInt() != 0;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800405 if (token != null) {
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700406 activityIdle(token, config, stopProfiling);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800407 }
408 reply.writeNoException();
409 return true;
410 }
411
Dianne Hackbornad9b32112012-09-17 15:35:01 -0700412 case ACTIVITY_RESUMED_TRANSACTION: {
413 data.enforceInterface(IActivityManager.descriptor);
414 IBinder token = data.readStrongBinder();
415 activityResumed(token);
416 reply.writeNoException();
417 return true;
418 }
419
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800420 case ACTIVITY_PAUSED_TRANSACTION: {
421 data.enforceInterface(IActivityManager.descriptor);
422 IBinder token = data.readStrongBinder();
Dianne Hackborn0aae2d42010-12-07 23:51:29 -0800423 activityPaused(token);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800424 reply.writeNoException();
425 return true;
426 }
427
428 case ACTIVITY_STOPPED_TRANSACTION: {
429 data.enforceInterface(IActivityManager.descriptor);
430 IBinder token = data.readStrongBinder();
Dianne Hackborn0aae2d42010-12-07 23:51:29 -0800431 Bundle map = data.readBundle();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800432 Bitmap thumbnail = data.readInt() != 0
433 ? Bitmap.CREATOR.createFromParcel(data) : null;
434 CharSequence description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data);
Dianne Hackborn0aae2d42010-12-07 23:51:29 -0800435 activityStopped(token, map, thumbnail, description);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800436 reply.writeNoException();
437 return true;
438 }
439
Dianne Hackborn4eba96b2011-01-21 13:34:36 -0800440 case ACTIVITY_SLEPT_TRANSACTION: {
441 data.enforceInterface(IActivityManager.descriptor);
442 IBinder token = data.readStrongBinder();
443 activitySlept(token);
444 reply.writeNoException();
445 return true;
446 }
447
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800448 case ACTIVITY_DESTROYED_TRANSACTION: {
449 data.enforceInterface(IActivityManager.descriptor);
450 IBinder token = data.readStrongBinder();
451 activityDestroyed(token);
452 reply.writeNoException();
453 return true;
454 }
455
456 case GET_CALLING_PACKAGE_TRANSACTION: {
457 data.enforceInterface(IActivityManager.descriptor);
458 IBinder token = data.readStrongBinder();
459 String res = token != null ? getCallingPackage(token) : null;
460 reply.writeNoException();
461 reply.writeString(res);
462 return true;
463 }
464
465 case GET_CALLING_ACTIVITY_TRANSACTION: {
466 data.enforceInterface(IActivityManager.descriptor);
467 IBinder token = data.readStrongBinder();
468 ComponentName cn = getCallingActivity(token);
469 reply.writeNoException();
470 ComponentName.writeToParcel(cn, reply);
471 return true;
472 }
473
474 case GET_TASKS_TRANSACTION: {
475 data.enforceInterface(IActivityManager.descriptor);
476 int maxNum = data.readInt();
477 int fl = data.readInt();
478 IBinder receiverBinder = data.readStrongBinder();
479 IThumbnailReceiver receiver = receiverBinder != null
480 ? IThumbnailReceiver.Stub.asInterface(receiverBinder)
481 : null;
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700482 List<ActivityManager.RunningTaskInfo> list = getTasks(maxNum, fl, receiver);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800483 reply.writeNoException();
484 int N = list != null ? list.size() : -1;
485 reply.writeInt(N);
486 int i;
487 for (i=0; i<N; i++) {
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700488 ActivityManager.RunningTaskInfo info = list.get(i);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800489 info.writeToParcel(reply, 0);
490 }
491 return true;
492 }
493
494 case GET_RECENT_TASKS_TRANSACTION: {
495 data.enforceInterface(IActivityManager.descriptor);
496 int maxNum = data.readInt();
497 int fl = data.readInt();
Amith Yamasani82644082012-08-03 13:09:11 -0700498 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800499 List<ActivityManager.RecentTaskInfo> list = getRecentTasks(maxNum,
Amith Yamasani82644082012-08-03 13:09:11 -0700500 fl, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800501 reply.writeNoException();
502 reply.writeTypedList(list);
503 return true;
504 }
Dianne Hackborn15491c62012-09-19 10:59:14 -0700505
Dianne Hackbornf26fd992011-04-08 18:14:09 -0700506 case GET_TASK_THUMBNAILS_TRANSACTION: {
Dianne Hackbornd94df452011-02-16 18:53:31 -0800507 data.enforceInterface(IActivityManager.descriptor);
508 int id = data.readInt();
Dianne Hackbornf26fd992011-04-08 18:14:09 -0700509 ActivityManager.TaskThumbnails bm = getTaskThumbnails(id);
Dianne Hackbornd94df452011-02-16 18:53:31 -0800510 reply.writeNoException();
511 if (bm != null) {
512 reply.writeInt(1);
513 bm.writeToParcel(reply, 0);
514 } else {
515 reply.writeInt(0);
516 }
517 return true;
518 }
Dianne Hackborn15491c62012-09-19 10:59:14 -0700519
520 case GET_TASK_TOP_THUMBNAIL_TRANSACTION: {
521 data.enforceInterface(IActivityManager.descriptor);
522 int id = data.readInt();
523 Bitmap bm = getTaskTopThumbnail(id);
524 reply.writeNoException();
525 if (bm != null) {
526 reply.writeInt(1);
527 bm.writeToParcel(reply, 0);
528 } else {
529 reply.writeInt(0);
530 }
531 return true;
532 }
533
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800534 case GET_SERVICES_TRANSACTION: {
535 data.enforceInterface(IActivityManager.descriptor);
536 int maxNum = data.readInt();
537 int fl = data.readInt();
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700538 List<ActivityManager.RunningServiceInfo> list = getServices(maxNum, fl);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800539 reply.writeNoException();
540 int N = list != null ? list.size() : -1;
541 reply.writeInt(N);
542 int i;
543 for (i=0; i<N; i++) {
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700544 ActivityManager.RunningServiceInfo info = list.get(i);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800545 info.writeToParcel(reply, 0);
546 }
547 return true;
548 }
549
550 case GET_PROCESSES_IN_ERROR_STATE_TRANSACTION: {
551 data.enforceInterface(IActivityManager.descriptor);
552 List<ActivityManager.ProcessErrorStateInfo> list = getProcessesInErrorState();
553 reply.writeNoException();
554 reply.writeTypedList(list);
555 return true;
556 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700557
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800558 case GET_RUNNING_APP_PROCESSES_TRANSACTION: {
559 data.enforceInterface(IActivityManager.descriptor);
560 List<ActivityManager.RunningAppProcessInfo> list = getRunningAppProcesses();
561 reply.writeNoException();
562 reply.writeTypedList(list);
563 return true;
564 }
565
Suchi Amalapurapuf7f5dda2010-03-23 10:34:28 -0700566 case GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION: {
567 data.enforceInterface(IActivityManager.descriptor);
568 List<ApplicationInfo> list = getRunningExternalApplications();
569 reply.writeNoException();
570 reply.writeTypedList(list);
571 return true;
572 }
573
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800574 case MOVE_TASK_TO_FRONT_TRANSACTION: {
575 data.enforceInterface(IActivityManager.descriptor);
576 int task = data.readInt();
Dianne Hackborn621e17d2010-11-22 15:59:56 -0800577 int fl = data.readInt();
Dianne Hackborn8078d8c2012-03-20 11:11:26 -0700578 Bundle options = data.readInt() != 0
579 ? Bundle.CREATOR.createFromParcel(data) : null;
580 moveTaskToFront(task, fl, options);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800581 reply.writeNoException();
582 return true;
583 }
584
585 case MOVE_TASK_TO_BACK_TRANSACTION: {
586 data.enforceInterface(IActivityManager.descriptor);
587 int task = data.readInt();
588 moveTaskToBack(task);
589 reply.writeNoException();
590 return true;
591 }
592
593 case MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION: {
594 data.enforceInterface(IActivityManager.descriptor);
595 IBinder token = data.readStrongBinder();
596 boolean nonRoot = data.readInt() != 0;
597 boolean res = moveActivityTaskToBack(token, nonRoot);
598 reply.writeNoException();
599 reply.writeInt(res ? 1 : 0);
600 return true;
601 }
602
603 case MOVE_TASK_BACKWARDS_TRANSACTION: {
604 data.enforceInterface(IActivityManager.descriptor);
605 int task = data.readInt();
606 moveTaskBackwards(task);
607 reply.writeNoException();
608 return true;
609 }
610
Craig Mautnerc00204b2013-03-05 15:02:14 -0800611 case CREATE_STACK_TRANSACTION: {
612 data.enforceInterface(IActivityManager.descriptor);
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700613 int taskId = data.readInt();
Craig Mautnerc00204b2013-03-05 15:02:14 -0800614 int relativeStackId = data.readInt();
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700615 int position = data.readInt();
Craig Mautnerc00204b2013-03-05 15:02:14 -0800616 float weight = data.readFloat();
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700617 int res = createStack(taskId, relativeStackId, position, weight);
Craig Mautnerc00204b2013-03-05 15:02:14 -0800618 reply.writeNoException();
619 reply.writeInt(res);
620 return true;
621 }
622
623 case MOVE_TASK_TO_STACK_TRANSACTION: {
624 data.enforceInterface(IActivityManager.descriptor);
625 int taskId = data.readInt();
626 int stackId = data.readInt();
627 boolean toTop = data.readInt() != 0;
628 moveTaskToStack(taskId, stackId, toTop);
629 reply.writeNoException();
630 return true;
631 }
632
633 case RESIZE_STACK_TRANSACTION: {
634 data.enforceInterface(IActivityManager.descriptor);
635 int stackId = data.readInt();
636 float weight = data.readFloat();
637 resizeStack(stackId, weight);
638 reply.writeNoException();
639 return true;
640 }
641
Craig Mautner967212c2013-04-13 21:10:58 -0700642 case GET_STACKS_TRANSACTION: {
643 data.enforceInterface(IActivityManager.descriptor);
644 List<ActivityManager.StackInfo> list = getStacks();
645 reply.writeNoException();
646 reply.writeTypedList(list);
647 return true;
648 }
649
Craig Mautnercf910b02013-04-23 11:23:27 -0700650 case SET_FOCUSED_STACK_TRANSACTION: {
651 data.enforceInterface(IActivityManager.descriptor);
652 int stackId = data.readInt();
653 setFocusedStack(stackId);
654 reply.writeNoException();
655 return true;
656 }
657
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800658 case GET_TASK_FOR_ACTIVITY_TRANSACTION: {
659 data.enforceInterface(IActivityManager.descriptor);
660 IBinder token = data.readStrongBinder();
661 boolean onlyRoot = data.readInt() != 0;
662 int res = token != null
663 ? getTaskForActivity(token, onlyRoot) : -1;
664 reply.writeNoException();
665 reply.writeInt(res);
666 return true;
667 }
668
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800669 case REPORT_THUMBNAIL_TRANSACTION: {
670 data.enforceInterface(IActivityManager.descriptor);
671 IBinder token = data.readStrongBinder();
672 Bitmap thumbnail = data.readInt() != 0
673 ? Bitmap.CREATOR.createFromParcel(data) : null;
674 CharSequence description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data);
675 reportThumbnail(token, thumbnail, description);
676 reply.writeNoException();
677 return true;
678 }
679
680 case GET_CONTENT_PROVIDER_TRANSACTION: {
681 data.enforceInterface(IActivityManager.descriptor);
682 IBinder b = data.readStrongBinder();
683 IApplicationThread app = ApplicationThreadNative.asInterface(b);
684 String name = data.readString();
Jeff Sharkey6d515712012-09-20 16:06:08 -0700685 int userId = data.readInt();
Dianne Hackborn6ae8d182012-05-23 13:12:42 -0700686 boolean stable = data.readInt() != 0;
Jeff Sharkey6d515712012-09-20 16:06:08 -0700687 ContentProviderHolder cph = getContentProvider(app, name, userId, stable);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800688 reply.writeNoException();
689 if (cph != null) {
690 reply.writeInt(1);
691 cph.writeToParcel(reply, 0);
692 } else {
693 reply.writeInt(0);
694 }
695 return true;
696 }
697
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800698 case GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION: {
699 data.enforceInterface(IActivityManager.descriptor);
700 String name = data.readString();
Jeff Sharkey6d515712012-09-20 16:06:08 -0700701 int userId = data.readInt();
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800702 IBinder token = data.readStrongBinder();
Jeff Sharkey6d515712012-09-20 16:06:08 -0700703 ContentProviderHolder cph = getContentProviderExternal(name, userId, token);
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800704 reply.writeNoException();
705 if (cph != null) {
706 reply.writeInt(1);
707 cph.writeToParcel(reply, 0);
708 } else {
709 reply.writeInt(0);
710 }
711 return true;
712 }
713
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800714 case PUBLISH_CONTENT_PROVIDERS_TRANSACTION: {
715 data.enforceInterface(IActivityManager.descriptor);
716 IBinder b = data.readStrongBinder();
717 IApplicationThread app = ApplicationThreadNative.asInterface(b);
718 ArrayList<ContentProviderHolder> providers =
719 data.createTypedArrayList(ContentProviderHolder.CREATOR);
720 publishContentProviders(app, providers);
721 reply.writeNoException();
722 return true;
723 }
724
Dianne Hackborn6ae8d182012-05-23 13:12:42 -0700725 case REF_CONTENT_PROVIDER_TRANSACTION: {
726 data.enforceInterface(IActivityManager.descriptor);
727 IBinder b = data.readStrongBinder();
728 int stable = data.readInt();
729 int unstable = data.readInt();
730 boolean res = refContentProvider(b, stable, unstable);
731 reply.writeNoException();
732 reply.writeInt(res ? 1 : 0);
733 return true;
734 }
735
736 case UNSTABLE_PROVIDER_DIED_TRANSACTION: {
737 data.enforceInterface(IActivityManager.descriptor);
738 IBinder b = data.readStrongBinder();
739 unstableProviderDied(b);
740 reply.writeNoException();
741 return true;
742 }
743
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800744 case REMOVE_CONTENT_PROVIDER_TRANSACTION: {
745 data.enforceInterface(IActivityManager.descriptor);
746 IBinder b = data.readStrongBinder();
Dianne Hackborn6ae8d182012-05-23 13:12:42 -0700747 boolean stable = data.readInt() != 0;
748 removeContentProvider(b, stable);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800749 reply.writeNoException();
750 return true;
751 }
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800752
753 case REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION: {
754 data.enforceInterface(IActivityManager.descriptor);
755 String name = data.readString();
756 IBinder token = data.readStrongBinder();
757 removeContentProviderExternal(name, token);
758 reply.writeNoException();
759 return true;
760 }
761
Dianne Hackborndd9b82c2009-09-03 00:18:47 -0700762 case GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION: {
763 data.enforceInterface(IActivityManager.descriptor);
764 ComponentName comp = ComponentName.CREATOR.createFromParcel(data);
765 PendingIntent pi = getRunningServiceControlPanel(comp);
766 reply.writeNoException();
767 PendingIntent.writePendingIntentOrNullToParcel(pi, reply);
768 return true;
769 }
770
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800771 case START_SERVICE_TRANSACTION: {
772 data.enforceInterface(IActivityManager.descriptor);
773 IBinder b = data.readStrongBinder();
774 IApplicationThread app = ApplicationThreadNative.asInterface(b);
775 Intent service = Intent.CREATOR.createFromParcel(data);
776 String resolvedType = data.readString();
Dianne Hackborn7767eac2012-08-23 18:25:40 -0700777 int userId = data.readInt();
778 ComponentName cn = startService(app, service, resolvedType, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800779 reply.writeNoException();
780 ComponentName.writeToParcel(cn, reply);
781 return true;
782 }
783
784 case STOP_SERVICE_TRANSACTION: {
785 data.enforceInterface(IActivityManager.descriptor);
786 IBinder b = data.readStrongBinder();
787 IApplicationThread app = ApplicationThreadNative.asInterface(b);
788 Intent service = Intent.CREATOR.createFromParcel(data);
789 String resolvedType = data.readString();
Dianne Hackborn7767eac2012-08-23 18:25:40 -0700790 int userId = data.readInt();
791 int res = stopService(app, service, resolvedType, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800792 reply.writeNoException();
793 reply.writeInt(res);
794 return true;
795 }
796
797 case STOP_SERVICE_TOKEN_TRANSACTION: {
798 data.enforceInterface(IActivityManager.descriptor);
799 ComponentName className = ComponentName.readFromParcel(data);
800 IBinder token = data.readStrongBinder();
801 int startId = data.readInt();
802 boolean res = stopServiceToken(className, token, startId);
803 reply.writeNoException();
804 reply.writeInt(res ? 1 : 0);
805 return true;
806 }
807
808 case SET_SERVICE_FOREGROUND_TRANSACTION: {
809 data.enforceInterface(IActivityManager.descriptor);
810 ComponentName className = ComponentName.readFromParcel(data);
811 IBinder token = data.readStrongBinder();
Dianne Hackbornd8a43f62009-08-17 23:33:56 -0700812 int id = data.readInt();
813 Notification notification = null;
814 if (data.readInt() != 0) {
815 notification = Notification.CREATOR.createFromParcel(data);
816 }
817 boolean removeNotification = data.readInt() != 0;
818 setServiceForeground(className, token, id, notification, removeNotification);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800819 reply.writeNoException();
820 return true;
821 }
822
823 case BIND_SERVICE_TRANSACTION: {
824 data.enforceInterface(IActivityManager.descriptor);
825 IBinder b = data.readStrongBinder();
826 IApplicationThread app = ApplicationThreadNative.asInterface(b);
827 IBinder token = data.readStrongBinder();
828 Intent service = Intent.CREATOR.createFromParcel(data);
829 String resolvedType = data.readString();
830 b = data.readStrongBinder();
831 int fl = data.readInt();
Amith Yamasani37ce3a82012-02-06 12:04:42 -0800832 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800833 IServiceConnection conn = IServiceConnection.Stub.asInterface(b);
Amith Yamasani37ce3a82012-02-06 12:04:42 -0800834 int res = bindService(app, token, service, resolvedType, conn, fl, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800835 reply.writeNoException();
836 reply.writeInt(res);
837 return true;
838 }
839
840 case UNBIND_SERVICE_TRANSACTION: {
841 data.enforceInterface(IActivityManager.descriptor);
842 IBinder b = data.readStrongBinder();
843 IServiceConnection conn = IServiceConnection.Stub.asInterface(b);
844 boolean res = unbindService(conn);
845 reply.writeNoException();
846 reply.writeInt(res ? 1 : 0);
847 return true;
848 }
849
850 case PUBLISH_SERVICE_TRANSACTION: {
851 data.enforceInterface(IActivityManager.descriptor);
852 IBinder token = data.readStrongBinder();
853 Intent intent = Intent.CREATOR.createFromParcel(data);
854 IBinder service = data.readStrongBinder();
855 publishService(token, intent, service);
856 reply.writeNoException();
857 return true;
858 }
859
860 case UNBIND_FINISHED_TRANSACTION: {
861 data.enforceInterface(IActivityManager.descriptor);
862 IBinder token = data.readStrongBinder();
863 Intent intent = Intent.CREATOR.createFromParcel(data);
864 boolean doRebind = data.readInt() != 0;
865 unbindFinished(token, intent, doRebind);
866 reply.writeNoException();
867 return true;
868 }
869
870 case SERVICE_DONE_EXECUTING_TRANSACTION: {
871 data.enforceInterface(IActivityManager.descriptor);
872 IBinder token = data.readStrongBinder();
Dianne Hackbornf6f9f2d2009-08-21 16:26:03 -0700873 int type = data.readInt();
874 int startId = data.readInt();
875 int res = data.readInt();
876 serviceDoneExecuting(token, type, startId, res);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800877 reply.writeNoException();
878 return true;
879 }
880
881 case START_INSTRUMENTATION_TRANSACTION: {
882 data.enforceInterface(IActivityManager.descriptor);
883 ComponentName className = ComponentName.readFromParcel(data);
884 String profileFile = data.readString();
885 int fl = data.readInt();
886 Bundle arguments = data.readBundle();
887 IBinder b = data.readStrongBinder();
888 IInstrumentationWatcher w = IInstrumentationWatcher.Stub.asInterface(b);
Svetoslav Ganov80943d82013-01-02 10:25:37 -0800889 b = data.readStrongBinder();
890 IUiAutomationConnection c = IUiAutomationConnection.Stub.asInterface(b);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -0700891 int userId = data.readInt();
Svetoslav Ganov80943d82013-01-02 10:25:37 -0800892 boolean res = startInstrumentation(className, profileFile, fl, arguments, w, c, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800893 reply.writeNoException();
894 reply.writeInt(res ? 1 : 0);
895 return true;
896 }
897
898
899 case FINISH_INSTRUMENTATION_TRANSACTION: {
900 data.enforceInterface(IActivityManager.descriptor);
901 IBinder b = data.readStrongBinder();
902 IApplicationThread app = ApplicationThreadNative.asInterface(b);
903 int resultCode = data.readInt();
904 Bundle results = data.readBundle();
905 finishInstrumentation(app, resultCode, results);
906 reply.writeNoException();
907 return true;
908 }
909
910 case GET_CONFIGURATION_TRANSACTION: {
911 data.enforceInterface(IActivityManager.descriptor);
912 Configuration config = getConfiguration();
913 reply.writeNoException();
914 config.writeToParcel(reply, 0);
915 return true;
916 }
917
918 case UPDATE_CONFIGURATION_TRANSACTION: {
919 data.enforceInterface(IActivityManager.descriptor);
920 Configuration config = Configuration.CREATOR.createFromParcel(data);
921 updateConfiguration(config);
922 reply.writeNoException();
923 return true;
924 }
925
926 case SET_REQUESTED_ORIENTATION_TRANSACTION: {
927 data.enforceInterface(IActivityManager.descriptor);
928 IBinder token = data.readStrongBinder();
929 int requestedOrientation = data.readInt();
930 setRequestedOrientation(token, requestedOrientation);
931 reply.writeNoException();
932 return true;
933 }
934
935 case GET_REQUESTED_ORIENTATION_TRANSACTION: {
936 data.enforceInterface(IActivityManager.descriptor);
937 IBinder token = data.readStrongBinder();
938 int req = getRequestedOrientation(token);
939 reply.writeNoException();
940 reply.writeInt(req);
941 return true;
942 }
943
944 case GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION: {
945 data.enforceInterface(IActivityManager.descriptor);
946 IBinder token = data.readStrongBinder();
947 ComponentName cn = getActivityClassForToken(token);
948 reply.writeNoException();
949 ComponentName.writeToParcel(cn, reply);
950 return true;
951 }
952
953 case GET_PACKAGE_FOR_TOKEN_TRANSACTION: {
954 data.enforceInterface(IActivityManager.descriptor);
955 IBinder token = data.readStrongBinder();
956 reply.writeNoException();
957 reply.writeString(getPackageForToken(token));
958 return true;
959 }
960
961 case GET_INTENT_SENDER_TRANSACTION: {
962 data.enforceInterface(IActivityManager.descriptor);
963 int type = data.readInt();
964 String packageName = data.readString();
965 IBinder token = data.readStrongBinder();
966 String resultWho = data.readString();
967 int requestCode = data.readInt();
Dianne Hackborn621e17d2010-11-22 15:59:56 -0800968 Intent[] requestIntents;
969 String[] requestResolvedTypes;
970 if (data.readInt() != 0) {
971 requestIntents = data.createTypedArray(Intent.CREATOR);
972 requestResolvedTypes = data.createStringArray();
973 } else {
974 requestIntents = null;
975 requestResolvedTypes = null;
976 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800977 int fl = data.readInt();
Dianne Hackborn7a2195c2012-03-19 17:38:00 -0700978 Bundle options = data.readInt() != 0
979 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackborn41203752012-08-31 14:05:51 -0700980 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800981 IIntentSender res = getIntentSender(type, packageName, token,
Dianne Hackborn621e17d2010-11-22 15:59:56 -0800982 resultWho, requestCode, requestIntents,
Dianne Hackborn41203752012-08-31 14:05:51 -0700983 requestResolvedTypes, fl, options, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800984 reply.writeNoException();
985 reply.writeStrongBinder(res != null ? res.asBinder() : null);
986 return true;
987 }
988
989 case CANCEL_INTENT_SENDER_TRANSACTION: {
990 data.enforceInterface(IActivityManager.descriptor);
991 IIntentSender r = IIntentSender.Stub.asInterface(
992 data.readStrongBinder());
993 cancelIntentSender(r);
994 reply.writeNoException();
995 return true;
996 }
997
998 case GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION: {
999 data.enforceInterface(IActivityManager.descriptor);
1000 IIntentSender r = IIntentSender.Stub.asInterface(
1001 data.readStrongBinder());
1002 String res = getPackageForIntentSender(r);
1003 reply.writeNoException();
1004 reply.writeString(res);
1005 return true;
1006 }
1007
Christopher Tatec4a07d12012-04-06 14:19:13 -07001008 case GET_UID_FOR_INTENT_SENDER_TRANSACTION: {
1009 data.enforceInterface(IActivityManager.descriptor);
1010 IIntentSender r = IIntentSender.Stub.asInterface(
1011 data.readStrongBinder());
1012 int res = getUidForIntentSender(r);
1013 reply.writeNoException();
1014 reply.writeInt(res);
1015 return true;
1016 }
1017
Dianne Hackborn41203752012-08-31 14:05:51 -07001018 case HANDLE_INCOMING_USER_TRANSACTION: {
1019 data.enforceInterface(IActivityManager.descriptor);
1020 int callingPid = data.readInt();
1021 int callingUid = data.readInt();
1022 int userId = data.readInt();
1023 boolean allowAll = data.readInt() != 0 ;
1024 boolean requireFull = data.readInt() != 0;
1025 String name = data.readString();
1026 String callerPackage = data.readString();
1027 int res = handleIncomingUser(callingPid, callingUid, userId, allowAll,
1028 requireFull, name, callerPackage);
1029 reply.writeNoException();
1030 reply.writeInt(res);
1031 return true;
1032 }
1033
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001034 case SET_PROCESS_LIMIT_TRANSACTION: {
1035 data.enforceInterface(IActivityManager.descriptor);
1036 int max = data.readInt();
1037 setProcessLimit(max);
1038 reply.writeNoException();
1039 return true;
1040 }
1041
1042 case GET_PROCESS_LIMIT_TRANSACTION: {
1043 data.enforceInterface(IActivityManager.descriptor);
1044 int limit = getProcessLimit();
1045 reply.writeNoException();
1046 reply.writeInt(limit);
1047 return true;
1048 }
1049
1050 case SET_PROCESS_FOREGROUND_TRANSACTION: {
1051 data.enforceInterface(IActivityManager.descriptor);
1052 IBinder token = data.readStrongBinder();
1053 int pid = data.readInt();
1054 boolean isForeground = data.readInt() != 0;
1055 setProcessForeground(token, pid, isForeground);
1056 reply.writeNoException();
1057 return true;
1058 }
1059
1060 case CHECK_PERMISSION_TRANSACTION: {
1061 data.enforceInterface(IActivityManager.descriptor);
1062 String perm = data.readString();
1063 int pid = data.readInt();
1064 int uid = data.readInt();
1065 int res = checkPermission(perm, pid, uid);
1066 reply.writeNoException();
1067 reply.writeInt(res);
1068 return true;
1069 }
1070
1071 case CHECK_URI_PERMISSION_TRANSACTION: {
1072 data.enforceInterface(IActivityManager.descriptor);
1073 Uri uri = Uri.CREATOR.createFromParcel(data);
1074 int pid = data.readInt();
1075 int uid = data.readInt();
1076 int mode = data.readInt();
1077 int res = checkUriPermission(uri, pid, uid, mode);
1078 reply.writeNoException();
1079 reply.writeInt(res);
1080 return true;
1081 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001082
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001083 case CLEAR_APP_DATA_TRANSACTION: {
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001084 data.enforceInterface(IActivityManager.descriptor);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001085 String packageName = data.readString();
1086 IPackageDataObserver observer = IPackageDataObserver.Stub.asInterface(
1087 data.readStrongBinder());
Amith Yamasani742a6712011-05-04 14:49:28 -07001088 int userId = data.readInt();
1089 boolean res = clearApplicationUserData(packageName, observer, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001090 reply.writeNoException();
1091 reply.writeInt(res ? 1 : 0);
1092 return true;
1093 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001094
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001095 case GRANT_URI_PERMISSION_TRANSACTION: {
1096 data.enforceInterface(IActivityManager.descriptor);
1097 IBinder b = data.readStrongBinder();
1098 IApplicationThread app = ApplicationThreadNative.asInterface(b);
1099 String targetPkg = data.readString();
1100 Uri uri = Uri.CREATOR.createFromParcel(data);
1101 int mode = data.readInt();
1102 grantUriPermission(app, targetPkg, uri, mode);
1103 reply.writeNoException();
1104 return true;
1105 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001106
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001107 case REVOKE_URI_PERMISSION_TRANSACTION: {
1108 data.enforceInterface(IActivityManager.descriptor);
1109 IBinder b = data.readStrongBinder();
1110 IApplicationThread app = ApplicationThreadNative.asInterface(b);
1111 Uri uri = Uri.CREATOR.createFromParcel(data);
1112 int mode = data.readInt();
1113 revokeUriPermission(app, uri, mode);
1114 reply.writeNoException();
1115 return true;
1116 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001117
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001118 case SHOW_WAITING_FOR_DEBUGGER_TRANSACTION: {
1119 data.enforceInterface(IActivityManager.descriptor);
1120 IBinder b = data.readStrongBinder();
1121 IApplicationThread app = ApplicationThreadNative.asInterface(b);
1122 boolean waiting = data.readInt() != 0;
1123 showWaitingForDebugger(app, waiting);
1124 reply.writeNoException();
1125 return true;
1126 }
1127
1128 case GET_MEMORY_INFO_TRANSACTION: {
1129 data.enforceInterface(IActivityManager.descriptor);
1130 ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
1131 getMemoryInfo(mi);
1132 reply.writeNoException();
1133 mi.writeToParcel(reply, 0);
1134 return true;
1135 }
1136
1137 case UNHANDLED_BACK_TRANSACTION: {
1138 data.enforceInterface(IActivityManager.descriptor);
1139 unhandledBack();
1140 reply.writeNoException();
1141 return true;
1142 }
1143
1144 case OPEN_CONTENT_URI_TRANSACTION: {
1145 data.enforceInterface(IActivityManager.descriptor);
1146 Uri uri = Uri.parse(data.readString());
1147 ParcelFileDescriptor pfd = openContentUri(uri);
1148 reply.writeNoException();
1149 if (pfd != null) {
1150 reply.writeInt(1);
1151 pfd.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
1152 } else {
1153 reply.writeInt(0);
1154 }
1155 return true;
1156 }
Dianne Hackbornff5b1582012-04-12 17:24:07 -07001157
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001158 case GOING_TO_SLEEP_TRANSACTION: {
1159 data.enforceInterface(IActivityManager.descriptor);
1160 goingToSleep();
1161 reply.writeNoException();
1162 return true;
1163 }
1164
1165 case WAKING_UP_TRANSACTION: {
1166 data.enforceInterface(IActivityManager.descriptor);
1167 wakingUp();
1168 reply.writeNoException();
1169 return true;
1170 }
1171
Dianne Hackbornff5b1582012-04-12 17:24:07 -07001172 case SET_LOCK_SCREEN_SHOWN_TRANSACTION: {
1173 data.enforceInterface(IActivityManager.descriptor);
1174 setLockScreenShown(data.readInt() != 0);
1175 reply.writeNoException();
1176 return true;
1177 }
1178
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001179 case SET_DEBUG_APP_TRANSACTION: {
1180 data.enforceInterface(IActivityManager.descriptor);
1181 String pn = data.readString();
1182 boolean wfd = data.readInt() != 0;
1183 boolean per = data.readInt() != 0;
1184 setDebugApp(pn, wfd, per);
1185 reply.writeNoException();
1186 return true;
1187 }
1188
1189 case SET_ALWAYS_FINISH_TRANSACTION: {
1190 data.enforceInterface(IActivityManager.descriptor);
1191 boolean enabled = data.readInt() != 0;
1192 setAlwaysFinish(enabled);
1193 reply.writeNoException();
1194 return true;
1195 }
1196
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001197 case SET_ACTIVITY_CONTROLLER_TRANSACTION: {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001198 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001199 IActivityController watcher = IActivityController.Stub.asInterface(
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001200 data.readStrongBinder());
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001201 setActivityController(watcher);
Sungmin Choicdb86bb2012-12-20 14:08:59 +09001202 reply.writeNoException();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001203 return true;
1204 }
1205
1206 case ENTER_SAFE_MODE_TRANSACTION: {
1207 data.enforceInterface(IActivityManager.descriptor);
1208 enterSafeMode();
1209 reply.writeNoException();
1210 return true;
1211 }
1212
1213 case NOTE_WAKEUP_ALARM_TRANSACTION: {
1214 data.enforceInterface(IActivityManager.descriptor);
1215 IIntentSender is = IIntentSender.Stub.asInterface(
1216 data.readStrongBinder());
1217 noteWakeupAlarm(is);
1218 reply.writeNoException();
1219 return true;
1220 }
1221
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07001222 case KILL_PIDS_TRANSACTION: {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001223 data.enforceInterface(IActivityManager.descriptor);
1224 int[] pids = data.createIntArray();
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07001225 String reason = data.readString();
Dianne Hackborn64825172011-03-02 21:32:58 -08001226 boolean secure = data.readInt() != 0;
1227 boolean res = killPids(pids, reason, secure);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001228 reply.writeNoException();
1229 reply.writeInt(res ? 1 : 0);
1230 return true;
1231 }
1232
Jeff Sharkeyb9a07012012-03-22 17:00:04 -07001233 case KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION: {
1234 data.enforceInterface(IActivityManager.descriptor);
1235 String reason = data.readString();
1236 boolean res = killProcessesBelowForeground(reason);
1237 reply.writeNoException();
1238 reply.writeInt(res ? 1 : 0);
1239 return true;
1240 }
1241
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001242 case START_RUNNING_TRANSACTION: {
1243 data.enforceInterface(IActivityManager.descriptor);
1244 String pkg = data.readString();
1245 String cls = data.readString();
1246 String action = data.readString();
1247 String indata = data.readString();
1248 startRunning(pkg, cls, action, indata);
1249 reply.writeNoException();
1250 return true;
1251 }
1252
Dan Egnor60d87622009-12-16 16:32:58 -08001253 case HANDLE_APPLICATION_CRASH_TRANSACTION: {
1254 data.enforceInterface(IActivityManager.descriptor);
1255 IBinder app = data.readStrongBinder();
1256 ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data);
1257 handleApplicationCrash(app, ci);
1258 reply.writeNoException();
1259 return true;
1260 }
1261
1262 case HANDLE_APPLICATION_WTF_TRANSACTION: {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001263 data.enforceInterface(IActivityManager.descriptor);
1264 IBinder app = data.readStrongBinder();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001265 String tag = data.readString();
Dan Egnorb7f03672009-12-09 16:22:32 -08001266 ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data);
Dan Egnor60d87622009-12-16 16:32:58 -08001267 boolean res = handleApplicationWtf(app, tag, ci);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001268 reply.writeNoException();
Dan Egnor60d87622009-12-16 16:32:58 -08001269 reply.writeInt(res ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001270 return true;
1271 }
Dan Egnorb7f03672009-12-09 16:22:32 -08001272
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07001273 case HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION: {
1274 data.enforceInterface(IActivityManager.descriptor);
1275 IBinder app = data.readStrongBinder();
Brad Fitzpatrick46d42382010-06-11 13:57:58 -07001276 int violationMask = data.readInt();
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -07001277 StrictMode.ViolationInfo info = new StrictMode.ViolationInfo(data);
1278 handleApplicationStrictModeViolation(app, violationMask, info);
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07001279 reply.writeNoException();
1280 return true;
1281 }
1282
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001283 case SIGNAL_PERSISTENT_PROCESSES_TRANSACTION: {
1284 data.enforceInterface(IActivityManager.descriptor);
1285 int sig = data.readInt();
1286 signalPersistentProcesses(sig);
1287 reply.writeNoException();
1288 return true;
1289 }
1290
Dianne Hackborn03abb812010-01-04 18:43:19 -08001291 case KILL_BACKGROUND_PROCESSES_TRANSACTION: {
1292 data.enforceInterface(IActivityManager.descriptor);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001293 String packageName = data.readString();
Dianne Hackborn1676c852012-09-10 14:52:30 -07001294 int userId = data.readInt();
1295 killBackgroundProcesses(packageName, userId);
Dianne Hackborn03abb812010-01-04 18:43:19 -08001296 reply.writeNoException();
1297 return true;
1298 }
Dianne Hackborne4d4fbc2011-11-08 11:53:28 -08001299
1300 case KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION: {
1301 data.enforceInterface(IActivityManager.descriptor);
1302 killAllBackgroundProcesses();
1303 reply.writeNoException();
1304 return true;
1305 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001306
Dianne Hackborn03abb812010-01-04 18:43:19 -08001307 case FORCE_STOP_PACKAGE_TRANSACTION: {
1308 data.enforceInterface(IActivityManager.descriptor);
1309 String packageName = data.readString();
Dianne Hackborn1676c852012-09-10 14:52:30 -07001310 int userId = data.readInt();
1311 forceStopPackage(packageName, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001312 reply.writeNoException();
1313 return true;
1314 }
Dianne Hackborn27ff9132012-03-06 14:57:58 -08001315
1316 case GET_MY_MEMORY_STATE_TRANSACTION: {
1317 data.enforceInterface(IActivityManager.descriptor);
1318 ActivityManager.RunningAppProcessInfo info =
1319 new ActivityManager.RunningAppProcessInfo();
1320 getMyMemoryState(info);
1321 reply.writeNoException();
1322 info.writeToParcel(reply, 0);
1323 return true;
1324 }
1325
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001326 case GET_DEVICE_CONFIGURATION_TRANSACTION: {
1327 data.enforceInterface(IActivityManager.descriptor);
1328 ConfigurationInfo config = getDeviceConfigurationInfo();
1329 reply.writeNoException();
1330 config.writeToParcel(reply, 0);
1331 return true;
1332 }
1333
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001334 case PROFILE_CONTROL_TRANSACTION: {
1335 data.enforceInterface(IActivityManager.descriptor);
1336 String process = data.readString();
Dianne Hackborn1676c852012-09-10 14:52:30 -07001337 int userId = data.readInt();
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001338 boolean start = data.readInt() != 0;
Romain Guy9a8c5ce2011-07-21 18:04:29 -07001339 int profileType = data.readInt();
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001340 String path = data.readString();
Dianne Hackborn9c8dd552009-06-23 19:22:52 -07001341 ParcelFileDescriptor fd = data.readInt() != 0
1342 ? data.readFileDescriptor() : null;
Dianne Hackborn1676c852012-09-10 14:52:30 -07001343 boolean res = profileControl(process, userId, start, path, fd, profileType);
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001344 reply.writeNoException();
1345 reply.writeInt(res ? 1 : 0);
1346 return true;
1347 }
1348
Dianne Hackborn55280a92009-05-07 15:53:46 -07001349 case SHUTDOWN_TRANSACTION: {
1350 data.enforceInterface(IActivityManager.descriptor);
1351 boolean res = shutdown(data.readInt());
1352 reply.writeNoException();
1353 reply.writeInt(res ? 1 : 0);
1354 return true;
1355 }
1356
Dianne Hackborn95fc68f2009-05-19 18:37:45 -07001357 case STOP_APP_SWITCHES_TRANSACTION: {
1358 data.enforceInterface(IActivityManager.descriptor);
1359 stopAppSwitches();
1360 reply.writeNoException();
1361 return true;
1362 }
1363
1364 case RESUME_APP_SWITCHES_TRANSACTION: {
1365 data.enforceInterface(IActivityManager.descriptor);
1366 resumeAppSwitches();
1367 reply.writeNoException();
1368 return true;
1369 }
1370
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001371 case PEEK_SERVICE_TRANSACTION: {
1372 data.enforceInterface(IActivityManager.descriptor);
1373 Intent service = Intent.CREATOR.createFromParcel(data);
1374 String resolvedType = data.readString();
1375 IBinder binder = peekService(service, resolvedType);
1376 reply.writeNoException();
1377 reply.writeStrongBinder(binder);
1378 return true;
1379 }
Christopher Tate181fafa2009-05-14 11:12:14 -07001380
1381 case START_BACKUP_AGENT_TRANSACTION: {
1382 data.enforceInterface(IActivityManager.descriptor);
1383 ApplicationInfo info = ApplicationInfo.CREATOR.createFromParcel(data);
1384 int backupRestoreMode = data.readInt();
1385 boolean success = bindBackupAgent(info, backupRestoreMode);
1386 reply.writeNoException();
1387 reply.writeInt(success ? 1 : 0);
1388 return true;
1389 }
1390
1391 case BACKUP_AGENT_CREATED_TRANSACTION: {
1392 data.enforceInterface(IActivityManager.descriptor);
1393 String packageName = data.readString();
1394 IBinder agent = data.readStrongBinder();
1395 backupAgentCreated(packageName, agent);
1396 reply.writeNoException();
1397 return true;
1398 }
1399
1400 case UNBIND_BACKUP_AGENT_TRANSACTION: {
1401 data.enforceInterface(IActivityManager.descriptor);
1402 ApplicationInfo info = ApplicationInfo.CREATOR.createFromParcel(data);
1403 unbindBackupAgent(info);
1404 reply.writeNoException();
1405 return true;
1406 }
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001407
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001408 case KILL_APPLICATION_WITH_APPID_TRANSACTION: {
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07001409 data.enforceInterface(IActivityManager.descriptor);
1410 String pkg = data.readString();
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001411 int appid = data.readInt();
1412 killApplicationWithAppId(pkg, appid);
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07001413 reply.writeNoException();
1414 return true;
1415 }
Dianne Hackborna6ddc8a2009-07-28 17:49:55 -07001416
1417 case CLOSE_SYSTEM_DIALOGS_TRANSACTION: {
1418 data.enforceInterface(IActivityManager.descriptor);
1419 String reason = data.readString();
1420 closeSystemDialogs(reason);
1421 reply.writeNoException();
1422 return true;
1423 }
Dianne Hackborn3025ef32009-08-31 21:31:47 -07001424
1425 case GET_PROCESS_MEMORY_INFO_TRANSACTION: {
1426 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07001427 int[] pids = data.createIntArray();
1428 Debug.MemoryInfo[] res = getProcessMemoryInfo(pids);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07001429 reply.writeNoException();
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07001430 reply.writeTypedArray(res, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07001431 return true;
1432 }
Christopher Tate5e1ab332009-09-01 20:32:49 -07001433
1434 case KILL_APPLICATION_PROCESS_TRANSACTION: {
1435 data.enforceInterface(IActivityManager.descriptor);
1436 String processName = data.readString();
1437 int uid = data.readInt();
1438 killApplicationProcess(processName, uid);
1439 reply.writeNoException();
1440 return true;
1441 }
Dianne Hackborn3b3e1452009-09-24 19:22:12 -07001442
1443 case OVERRIDE_PENDING_TRANSITION_TRANSACTION: {
1444 data.enforceInterface(IActivityManager.descriptor);
1445 IBinder token = data.readStrongBinder();
1446 String packageName = data.readString();
1447 int enterAnim = data.readInt();
1448 int exitAnim = data.readInt();
1449 overridePendingTransition(token, packageName, enterAnim, exitAnim);
Dianne Hackborn9327f4f2010-01-29 10:38:29 -08001450 reply.writeNoException();
1451 return true;
1452 }
1453
1454 case IS_USER_A_MONKEY_TRANSACTION: {
1455 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackborn7e269642010-08-25 19:50:20 -07001456 boolean areThey = isUserAMonkey();
Dianne Hackborn9327f4f2010-01-29 10:38:29 -08001457 reply.writeNoException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001458 reply.writeInt(areThey ? 1 : 0);
Dianne Hackborn3b3e1452009-09-24 19:22:12 -07001459 return true;
1460 }
Dianne Hackborn860755f2010-06-03 18:47:52 -07001461
Adam Momtaz8f6f1f42013-04-10 12:42:58 -07001462 case SET_USER_IS_MONKEY_TRANSACTION: {
1463 data.enforceInterface(IActivityManager.descriptor);
1464 final boolean monkey = (data.readInt() == 1);
1465 setUserIsMonkey(monkey);
1466 reply.writeNoException();
1467 return true;
1468 }
1469
Dianne Hackborn860755f2010-06-03 18:47:52 -07001470 case FINISH_HEAVY_WEIGHT_APP_TRANSACTION: {
1471 data.enforceInterface(IActivityManager.descriptor);
1472 finishHeavyWeightApp();
1473 reply.writeNoException();
1474 return true;
1475 }
Daniel Sandler69a48172010-06-23 16:29:36 -04001476
1477 case IS_IMMERSIVE_TRANSACTION: {
1478 data.enforceInterface(IActivityManager.descriptor);
1479 IBinder token = data.readStrongBinder();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001480 boolean isit = isImmersive(token);
Daniel Sandler69a48172010-06-23 16:29:36 -04001481 reply.writeNoException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001482 reply.writeInt(isit ? 1 : 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04001483 return true;
1484 }
1485
1486 case SET_IMMERSIVE_TRANSACTION: {
1487 data.enforceInterface(IActivityManager.descriptor);
1488 IBinder token = data.readStrongBinder();
1489 boolean imm = data.readInt() == 1;
1490 setImmersive(token, imm);
1491 reply.writeNoException();
1492 return true;
1493 }
1494
1495 case IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION: {
1496 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackborn7e269642010-08-25 19:50:20 -07001497 boolean isit = isTopActivityImmersive();
Daniel Sandler69a48172010-06-23 16:29:36 -04001498 reply.writeNoException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001499 reply.writeInt(isit ? 1 : 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04001500 return true;
1501 }
1502
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07001503 case CRASH_APPLICATION_TRANSACTION: {
1504 data.enforceInterface(IActivityManager.descriptor);
1505 int uid = data.readInt();
1506 int initialPid = data.readInt();
1507 String packageName = data.readString();
1508 String message = data.readString();
1509 crashApplication(uid, initialPid, packageName, message);
1510 reply.writeNoException();
1511 return true;
1512 }
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07001513
1514 case GET_PROVIDER_MIME_TYPE_TRANSACTION: {
1515 data.enforceInterface(IActivityManager.descriptor);
1516 Uri uri = Uri.CREATOR.createFromParcel(data);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001517 int userId = data.readInt();
1518 String type = getProviderMimeType(uri, userId);
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07001519 reply.writeNoException();
1520 reply.writeString(type);
1521 return true;
1522 }
1523
Dianne Hackborn7e269642010-08-25 19:50:20 -07001524 case NEW_URI_PERMISSION_OWNER_TRANSACTION: {
1525 data.enforceInterface(IActivityManager.descriptor);
1526 String name = data.readString();
1527 IBinder perm = newUriPermissionOwner(name);
1528 reply.writeNoException();
1529 reply.writeStrongBinder(perm);
1530 return true;
1531 }
1532
1533 case GRANT_URI_PERMISSION_FROM_OWNER_TRANSACTION: {
1534 data.enforceInterface(IActivityManager.descriptor);
1535 IBinder owner = data.readStrongBinder();
1536 int fromUid = data.readInt();
1537 String targetPkg = data.readString();
1538 Uri uri = Uri.CREATOR.createFromParcel(data);
1539 int mode = data.readInt();
1540 grantUriPermissionFromOwner(owner, fromUid, targetPkg, uri, mode);
1541 reply.writeNoException();
1542 return true;
1543 }
1544
1545 case REVOKE_URI_PERMISSION_FROM_OWNER_TRANSACTION: {
1546 data.enforceInterface(IActivityManager.descriptor);
1547 IBinder owner = data.readStrongBinder();
1548 Uri uri = null;
1549 if (data.readInt() != 0) {
1550 Uri.CREATOR.createFromParcel(data);
1551 }
1552 int mode = data.readInt();
1553 revokeUriPermissionFromOwner(owner, uri, mode);
1554 reply.writeNoException();
1555 return true;
1556 }
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07001557
Dianne Hackborn90f4aaf2010-09-27 14:58:44 -07001558 case CHECK_GRANT_URI_PERMISSION_TRANSACTION: {
1559 data.enforceInterface(IActivityManager.descriptor);
1560 int callingUid = data.readInt();
1561 String targetPkg = data.readString();
1562 Uri uri = Uri.CREATOR.createFromParcel(data);
1563 int modeFlags = data.readInt();
1564 int res = checkGrantUriPermission(callingUid, targetPkg, uri, modeFlags);
1565 reply.writeNoException();
1566 reply.writeInt(res);
1567 return true;
1568 }
1569
Andy McFadden824c5102010-07-09 16:26:57 -07001570 case DUMP_HEAP_TRANSACTION: {
1571 data.enforceInterface(IActivityManager.descriptor);
1572 String process = data.readString();
Dianne Hackbornb12e1352012-09-26 11:39:20 -07001573 int userId = data.readInt();
Andy McFadden824c5102010-07-09 16:26:57 -07001574 boolean managed = data.readInt() != 0;
1575 String path = data.readString();
1576 ParcelFileDescriptor fd = data.readInt() != 0
1577 ? data.readFileDescriptor() : null;
Dianne Hackborn1676c852012-09-10 14:52:30 -07001578 boolean res = dumpHeap(process, userId, managed, path, fd);
Andy McFadden824c5102010-07-09 16:26:57 -07001579 reply.writeNoException();
1580 reply.writeInt(res ? 1 : 0);
1581 return true;
1582 }
1583
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001584 case START_ACTIVITIES_TRANSACTION:
1585 {
1586 data.enforceInterface(IActivityManager.descriptor);
1587 IBinder b = data.readStrongBinder();
1588 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08001589 String callingPackage = data.readString();
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001590 Intent[] intents = data.createTypedArray(Intent.CREATOR);
1591 String[] resolvedTypes = data.createStringArray();
1592 IBinder resultTo = data.readStrongBinder();
Dianne Hackborna4972e92012-03-14 10:38:05 -07001593 Bundle options = data.readInt() != 0
1594 ? Bundle.CREATOR.createFromParcel(data) : null;
Amith Yamasaniea7e9152012-09-24 16:11:18 -07001595 int userId = data.readInt();
Dianne Hackbornf265ea92013-01-31 15:00:51 -08001596 int result = startActivities(app, callingPackage, intents, resolvedTypes, resultTo,
Amith Yamasaniea7e9152012-09-24 16:11:18 -07001597 options, userId);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001598 reply.writeNoException();
1599 reply.writeInt(result);
1600 return true;
1601 }
1602
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07001603 case GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION:
1604 {
1605 data.enforceInterface(IActivityManager.descriptor);
1606 int mode = getFrontActivityScreenCompatMode();
1607 reply.writeNoException();
1608 reply.writeInt(mode);
1609 return true;
1610 }
1611
1612 case SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION:
1613 {
1614 data.enforceInterface(IActivityManager.descriptor);
1615 int mode = data.readInt();
1616 setFrontActivityScreenCompatMode(mode);
1617 reply.writeNoException();
1618 reply.writeInt(mode);
1619 return true;
1620 }
1621
1622 case GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION:
1623 {
1624 data.enforceInterface(IActivityManager.descriptor);
1625 String pkg = data.readString();
1626 int mode = getPackageScreenCompatMode(pkg);
1627 reply.writeNoException();
1628 reply.writeInt(mode);
1629 return true;
1630 }
1631
Dianne Hackborne2515ee2011-04-27 18:52:56 -04001632 case SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION:
1633 {
1634 data.enforceInterface(IActivityManager.descriptor);
1635 String pkg = data.readString();
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07001636 int mode = data.readInt();
1637 setPackageScreenCompatMode(pkg, mode);
Dianne Hackborne2515ee2011-04-27 18:52:56 -04001638 reply.writeNoException();
1639 return true;
1640 }
Dianne Hackbornaa9d84c2011-05-09 19:00:59 -07001641
Amith Yamasani4b2e9342011-03-31 12:38:53 -07001642 case SWITCH_USER_TRANSACTION: {
1643 data.enforceInterface(IActivityManager.descriptor);
1644 int userid = data.readInt();
1645 boolean result = switchUser(userid);
1646 reply.writeNoException();
1647 reply.writeInt(result ? 1 : 0);
1648 return true;
1649 }
Amith Yamasani52f1d752012-03-28 18:19:29 -07001650
Dianne Hackborn80a4af22012-08-27 19:18:31 -07001651 case STOP_USER_TRANSACTION: {
1652 data.enforceInterface(IActivityManager.descriptor);
1653 int userid = data.readInt();
1654 IStopUserCallback callback = IStopUserCallback.Stub.asInterface(
1655 data.readStrongBinder());
1656 int result = stopUser(userid, callback);
1657 reply.writeNoException();
1658 reply.writeInt(result);
1659 return true;
1660 }
1661
Amith Yamasani52f1d752012-03-28 18:19:29 -07001662 case GET_CURRENT_USER_TRANSACTION: {
1663 data.enforceInterface(IActivityManager.descriptor);
1664 UserInfo userInfo = getCurrentUser();
1665 reply.writeNoException();
1666 userInfo.writeToParcel(reply, 0);
1667 return true;
1668 }
1669
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001670 case IS_USER_RUNNING_TRANSACTION: {
1671 data.enforceInterface(IActivityManager.descriptor);
1672 int userid = data.readInt();
Dianne Hackborna8a9bd62012-10-09 15:36:59 -07001673 boolean orStopping = data.readInt() != 0;
1674 boolean result = isUserRunning(userid, orStopping);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001675 reply.writeNoException();
1676 reply.writeInt(result ? 1 : 0);
1677 return true;
1678 }
1679
Dianne Hackbornc72fc672012-09-20 13:12:03 -07001680 case GET_RUNNING_USER_IDS_TRANSACTION: {
1681 data.enforceInterface(IActivityManager.descriptor);
1682 int[] result = getRunningUserIds();
1683 reply.writeNoException();
1684 reply.writeIntArray(result);
1685 return true;
1686 }
1687
Dianne Hackborn0c5001d2011-04-12 18:16:08 -07001688 case REMOVE_SUB_TASK_TRANSACTION:
1689 {
1690 data.enforceInterface(IActivityManager.descriptor);
1691 int taskId = data.readInt();
1692 int subTaskIndex = data.readInt();
1693 boolean result = removeSubTask(taskId, subTaskIndex);
1694 reply.writeNoException();
1695 reply.writeInt(result ? 1 : 0);
1696 return true;
1697 }
1698
1699 case REMOVE_TASK_TRANSACTION:
1700 {
1701 data.enforceInterface(IActivityManager.descriptor);
1702 int taskId = data.readInt();
1703 int fl = data.readInt();
1704 boolean result = removeTask(taskId, fl);
1705 reply.writeNoException();
1706 reply.writeInt(result ? 1 : 0);
1707 return true;
1708 }
Amith Yamasani4b2e9342011-03-31 12:38:53 -07001709
Jeff Sharkeya4620792011-05-20 15:29:23 -07001710 case REGISTER_PROCESS_OBSERVER_TRANSACTION: {
1711 data.enforceInterface(IActivityManager.descriptor);
1712 IProcessObserver observer = IProcessObserver.Stub.asInterface(
1713 data.readStrongBinder());
1714 registerProcessObserver(observer);
1715 return true;
1716 }
1717
1718 case UNREGISTER_PROCESS_OBSERVER_TRANSACTION: {
1719 data.enforceInterface(IActivityManager.descriptor);
1720 IProcessObserver observer = IProcessObserver.Stub.asInterface(
1721 data.readStrongBinder());
1722 unregisterProcessObserver(observer);
1723 return true;
1724 }
1725
Dianne Hackborn36cd41f2011-05-25 21:00:46 -07001726 case GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION:
1727 {
1728 data.enforceInterface(IActivityManager.descriptor);
1729 String pkg = data.readString();
1730 boolean ask = getPackageAskScreenCompat(pkg);
1731 reply.writeNoException();
1732 reply.writeInt(ask ? 1 : 0);
1733 return true;
1734 }
1735
1736 case SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION:
1737 {
1738 data.enforceInterface(IActivityManager.descriptor);
1739 String pkg = data.readString();
1740 boolean ask = data.readInt() != 0;
1741 setPackageAskScreenCompat(pkg, ask);
1742 reply.writeNoException();
1743 return true;
1744 }
1745
Dianne Hackborn6c418d52011-06-29 14:05:33 -07001746 case IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION: {
1747 data.enforceInterface(IActivityManager.descriptor);
1748 IIntentSender r = IIntentSender.Stub.asInterface(
1749 data.readStrongBinder());
1750 boolean res = isIntentSenderTargetedToPackage(r);
1751 reply.writeNoException();
1752 reply.writeInt(res ? 1 : 0);
1753 return true;
1754 }
1755
Dianne Hackborn1927ae82012-06-22 15:21:36 -07001756 case IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION: {
1757 data.enforceInterface(IActivityManager.descriptor);
1758 IIntentSender r = IIntentSender.Stub.asInterface(
1759 data.readStrongBinder());
1760 boolean res = isIntentSenderAnActivity(r);
1761 reply.writeNoException();
1762 reply.writeInt(res ? 1 : 0);
1763 return true;
1764 }
1765
Dianne Hackborn81038902012-11-26 17:04:09 -08001766 case GET_INTENT_FOR_INTENT_SENDER_TRANSACTION: {
1767 data.enforceInterface(IActivityManager.descriptor);
1768 IIntentSender r = IIntentSender.Stub.asInterface(
1769 data.readStrongBinder());
1770 Intent intent = getIntentForIntentSender(r);
1771 reply.writeNoException();
1772 if (intent != null) {
1773 reply.writeInt(1);
1774 intent.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
1775 } else {
1776 reply.writeInt(0);
1777 }
1778 return true;
1779 }
1780
Dianne Hackborn31ca8542011-07-19 14:58:28 -07001781 case UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION: {
1782 data.enforceInterface(IActivityManager.descriptor);
1783 Configuration config = Configuration.CREATOR.createFromParcel(data);
1784 updatePersistentConfiguration(config);
1785 reply.writeNoException();
1786 return true;
1787 }
1788
Dianne Hackbornb437e092011-08-05 17:50:29 -07001789 case GET_PROCESS_PSS_TRANSACTION: {
1790 data.enforceInterface(IActivityManager.descriptor);
1791 int[] pids = data.createIntArray();
1792 long[] pss = getProcessPss(pids);
1793 reply.writeNoException();
1794 reply.writeLongArray(pss);
1795 return true;
1796 }
1797
Dianne Hackborn661cd522011-08-22 00:26:20 -07001798 case SHOW_BOOT_MESSAGE_TRANSACTION: {
1799 data.enforceInterface(IActivityManager.descriptor);
1800 CharSequence msg = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data);
1801 boolean always = data.readInt() != 0;
1802 showBootMessage(msg, always);
1803 reply.writeNoException();
1804 return true;
1805 }
1806
Dianne Hackborn90c52de2011-09-23 12:57:44 -07001807 case DISMISS_KEYGUARD_ON_NEXT_ACTIVITY_TRANSACTION: {
1808 data.enforceInterface(IActivityManager.descriptor);
1809 dismissKeyguardOnNextActivity();
1810 reply.writeNoException();
1811 return true;
1812 }
1813
Adam Powelldd8fab22012-03-22 17:47:27 -07001814 case TARGET_TASK_AFFINITY_MATCHES_ACTIVITY_TRANSACTION: {
1815 data.enforceInterface(IActivityManager.descriptor);
1816 IBinder token = data.readStrongBinder();
1817 String destAffinity = data.readString();
1818 boolean res = targetTaskAffinityMatchesActivity(token, destAffinity);
1819 reply.writeNoException();
1820 reply.writeInt(res ? 1 : 0);
1821 return true;
1822 }
1823
1824 case NAVIGATE_UP_TO_TRANSACTION: {
1825 data.enforceInterface(IActivityManager.descriptor);
1826 IBinder token = data.readStrongBinder();
1827 Intent target = Intent.CREATOR.createFromParcel(data);
1828 int resultCode = data.readInt();
1829 Intent resultData = null;
1830 if (data.readInt() != 0) {
1831 resultData = Intent.CREATOR.createFromParcel(data);
1832 }
1833 boolean res = navigateUpTo(token, target, resultCode, resultData);
1834 reply.writeNoException();
1835 reply.writeInt(res ? 1 : 0);
1836 return true;
1837 }
1838
Dianne Hackborn5320eb82012-05-18 12:05:04 -07001839 case GET_LAUNCHED_FROM_UID_TRANSACTION: {
1840 data.enforceInterface(IActivityManager.descriptor);
1841 IBinder token = data.readStrongBinder();
1842 int res = getLaunchedFromUid(token);
1843 reply.writeNoException();
1844 reply.writeInt(res);
1845 return true;
1846 }
1847
Dianne Hackbornf265ea92013-01-31 15:00:51 -08001848 case GET_LAUNCHED_FROM_PACKAGE_TRANSACTION: {
1849 data.enforceInterface(IActivityManager.descriptor);
1850 IBinder token = data.readStrongBinder();
1851 String res = getLaunchedFromPackage(token);
1852 reply.writeNoException();
1853 reply.writeString(res);
1854 return true;
1855 }
1856
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07001857 case REGISTER_USER_SWITCH_OBSERVER_TRANSACTION: {
1858 data.enforceInterface(IActivityManager.descriptor);
1859 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface(
1860 data.readStrongBinder());
1861 registerUserSwitchObserver(observer);
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07001862 reply.writeNoException();
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07001863 return true;
1864 }
1865
1866 case UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION: {
1867 data.enforceInterface(IActivityManager.descriptor);
1868 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface(
1869 data.readStrongBinder());
1870 unregisterUserSwitchObserver(observer);
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07001871 reply.writeNoException();
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07001872 return true;
1873 }
1874
Dianne Hackbornd4ac8d72012-09-27 23:20:10 -07001875 case REQUEST_BUG_REPORT_TRANSACTION: {
1876 data.enforceInterface(IActivityManager.descriptor);
1877 requestBugReport();
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07001878 reply.writeNoException();
1879 return true;
1880 }
1881
1882 case INPUT_DISPATCHING_TIMED_OUT_TRANSACTION: {
1883 data.enforceInterface(IActivityManager.descriptor);
1884 int pid = data.readInt();
1885 boolean aboveSystem = data.readInt() != 0;
1886 long res = inputDispatchingTimedOut(pid, aboveSystem);
1887 reply.writeNoException();
1888 reply.writeLong(res);
Dianne Hackbornd4ac8d72012-09-27 23:20:10 -07001889 return true;
1890 }
1891
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08001892 case GET_TOP_ACTIVITY_EXTRAS_TRANSACTION: {
1893 data.enforceInterface(IActivityManager.descriptor);
1894 int requestType = data.readInt();
1895 Bundle res = getTopActivityExtras(requestType);
1896 reply.writeNoException();
1897 reply.writeBundle(res);
1898 return true;
1899 }
1900
1901 case REPORT_TOP_ACTIVITY_EXTRAS_TRANSACTION: {
1902 data.enforceInterface(IActivityManager.descriptor);
1903 IBinder token = data.readStrongBinder();
1904 Bundle extras = data.readBundle();
1905 reportTopActivityExtras(token, extras);
1906 reply.writeNoException();
1907 return true;
1908 }
1909
Dianne Hackbornf1b78242013-04-08 22:28:59 -07001910 case KILL_UID_TRANSACTION: {
1911 data.enforceInterface(IActivityManager.descriptor);
1912 int uid = data.readInt();
1913 String reason = data.readString();
1914 killUid(uid, reason);
1915 reply.writeNoException();
1916 return true;
1917 }
1918
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001919 }
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08001920
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001921 return super.onTransact(code, data, reply, flags);
1922 }
1923
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08001924 public IBinder asBinder() {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001925 return this;
1926 }
1927
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08001928 private static final Singleton<IActivityManager> gDefault = new Singleton<IActivityManager>() {
1929 protected IActivityManager create() {
1930 IBinder b = ServiceManager.getService("activity");
Joe Onorato43a17652011-04-06 19:22:23 -07001931 if (false) {
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08001932 Log.v("ActivityManager", "default service binder = " + b);
1933 }
1934 IActivityManager am = asInterface(b);
Joe Onorato43a17652011-04-06 19:22:23 -07001935 if (false) {
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08001936 Log.v("ActivityManager", "default service = " + am);
1937 }
1938 return am;
1939 }
1940 };
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001941}
1942
1943class ActivityManagerProxy implements IActivityManager
1944{
1945 public ActivityManagerProxy(IBinder remote)
1946 {
1947 mRemote = remote;
1948 }
Siva Velusamy92a8b222012-03-09 16:24:04 -08001949
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001950 public IBinder asBinder()
1951 {
1952 return mRemote;
1953 }
Siva Velusamy92a8b222012-03-09 16:24:04 -08001954
Dianne Hackbornf265ea92013-01-31 15:00:51 -08001955 public int startActivity(IApplicationThread caller, String callingPackage, Intent intent,
Dianne Hackborna4972e92012-03-14 10:38:05 -07001956 String resolvedType, IBinder resultTo, String resultWho, int requestCode,
1957 int startFlags, String profileFile,
1958 ParcelFileDescriptor profileFd, Bundle options) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001959 Parcel data = Parcel.obtain();
1960 Parcel reply = Parcel.obtain();
1961 data.writeInterfaceToken(IActivityManager.descriptor);
1962 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08001963 data.writeString(callingPackage);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001964 intent.writeToParcel(data, 0);
1965 data.writeString(resolvedType);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001966 data.writeStrongBinder(resultTo);
1967 data.writeString(resultWho);
1968 data.writeInt(requestCode);
Dianne Hackborna4972e92012-03-14 10:38:05 -07001969 data.writeInt(startFlags);
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07001970 data.writeString(profileFile);
1971 if (profileFd != null) {
1972 data.writeInt(1);
1973 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
1974 } else {
1975 data.writeInt(0);
1976 }
Dianne Hackborna4972e92012-03-14 10:38:05 -07001977 if (options != null) {
1978 data.writeInt(1);
1979 options.writeToParcel(data, 0);
1980 } else {
1981 data.writeInt(0);
1982 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001983 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0);
1984 reply.readException();
1985 int result = reply.readInt();
1986 reply.recycle();
1987 data.recycle();
1988 return result;
1989 }
Amith Yamasani82644082012-08-03 13:09:11 -07001990
Dianne Hackbornf265ea92013-01-31 15:00:51 -08001991 public int startActivityAsUser(IApplicationThread caller, String callingPackage, Intent intent,
Amith Yamasani82644082012-08-03 13:09:11 -07001992 String resolvedType, IBinder resultTo, String resultWho, int requestCode,
1993 int startFlags, String profileFile,
1994 ParcelFileDescriptor profileFd, Bundle options, int userId) throws RemoteException {
1995 Parcel data = Parcel.obtain();
1996 Parcel reply = Parcel.obtain();
1997 data.writeInterfaceToken(IActivityManager.descriptor);
1998 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08001999 data.writeString(callingPackage);
Amith Yamasani82644082012-08-03 13:09:11 -07002000 intent.writeToParcel(data, 0);
2001 data.writeString(resolvedType);
2002 data.writeStrongBinder(resultTo);
2003 data.writeString(resultWho);
2004 data.writeInt(requestCode);
2005 data.writeInt(startFlags);
2006 data.writeString(profileFile);
2007 if (profileFd != null) {
2008 data.writeInt(1);
2009 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
2010 } else {
2011 data.writeInt(0);
2012 }
2013 if (options != null) {
2014 data.writeInt(1);
2015 options.writeToParcel(data, 0);
2016 } else {
2017 data.writeInt(0);
2018 }
2019 data.writeInt(userId);
2020 mRemote.transact(START_ACTIVITY_AS_USER_TRANSACTION, data, reply, 0);
2021 reply.readException();
2022 int result = reply.readInt();
2023 reply.recycle();
2024 data.recycle();
2025 return result;
2026 }
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002027 public WaitResult startActivityAndWait(IApplicationThread caller, String callingPackage,
2028 Intent intent, String resolvedType, IBinder resultTo, String resultWho,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002029 int requestCode, int startFlags, String profileFile,
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07002030 ParcelFileDescriptor profileFd, Bundle options, int userId) throws RemoteException {
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08002031 Parcel data = Parcel.obtain();
2032 Parcel reply = Parcel.obtain();
2033 data.writeInterfaceToken(IActivityManager.descriptor);
2034 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002035 data.writeString(callingPackage);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08002036 intent.writeToParcel(data, 0);
2037 data.writeString(resolvedType);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08002038 data.writeStrongBinder(resultTo);
2039 data.writeString(resultWho);
2040 data.writeInt(requestCode);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002041 data.writeInt(startFlags);
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07002042 data.writeString(profileFile);
2043 if (profileFd != null) {
2044 data.writeInt(1);
2045 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
2046 } else {
2047 data.writeInt(0);
2048 }
Dianne Hackborna4972e92012-03-14 10:38:05 -07002049 if (options != null) {
2050 data.writeInt(1);
2051 options.writeToParcel(data, 0);
2052 } else {
2053 data.writeInt(0);
2054 }
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07002055 data.writeInt(userId);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08002056 mRemote.transact(START_ACTIVITY_AND_WAIT_TRANSACTION, data, reply, 0);
2057 reply.readException();
2058 WaitResult result = WaitResult.CREATOR.createFromParcel(reply);
2059 reply.recycle();
2060 data.recycle();
2061 return result;
2062 }
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002063 public int startActivityWithConfig(IApplicationThread caller, String callingPackage,
2064 Intent intent, String resolvedType, IBinder resultTo, String resultWho,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002065 int requestCode, int startFlags, Configuration config,
Dianne Hackborn41203752012-08-31 14:05:51 -07002066 Bundle options, int userId) throws RemoteException {
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002067 Parcel data = Parcel.obtain();
2068 Parcel reply = Parcel.obtain();
2069 data.writeInterfaceToken(IActivityManager.descriptor);
2070 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002071 data.writeString(callingPackage);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002072 intent.writeToParcel(data, 0);
2073 data.writeString(resolvedType);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002074 data.writeStrongBinder(resultTo);
2075 data.writeString(resultWho);
2076 data.writeInt(requestCode);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002077 data.writeInt(startFlags);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002078 config.writeToParcel(data, 0);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002079 if (options != null) {
2080 data.writeInt(1);
2081 options.writeToParcel(data, 0);
2082 } else {
2083 data.writeInt(0);
2084 }
Dianne Hackborn41203752012-08-31 14:05:51 -07002085 data.writeInt(userId);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002086 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0);
2087 reply.readException();
2088 int result = reply.readInt();
2089 reply.recycle();
2090 data.recycle();
2091 return result;
2092 }
Dianne Hackbornfa82f222009-09-17 15:14:12 -07002093 public int startActivityIntentSender(IApplicationThread caller,
2094 IntentSender intent, Intent fillInIntent, String resolvedType,
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -07002095 IBinder resultTo, String resultWho, int requestCode,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002096 int flagsMask, int flagsValues, Bundle options) throws RemoteException {
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -07002097 Parcel data = Parcel.obtain();
2098 Parcel reply = Parcel.obtain();
2099 data.writeInterfaceToken(IActivityManager.descriptor);
2100 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2101 intent.writeToParcel(data, 0);
2102 if (fillInIntent != null) {
2103 data.writeInt(1);
2104 fillInIntent.writeToParcel(data, 0);
2105 } else {
2106 data.writeInt(0);
2107 }
2108 data.writeString(resolvedType);
2109 data.writeStrongBinder(resultTo);
2110 data.writeString(resultWho);
2111 data.writeInt(requestCode);
2112 data.writeInt(flagsMask);
2113 data.writeInt(flagsValues);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002114 if (options != null) {
2115 data.writeInt(1);
2116 options.writeToParcel(data, 0);
2117 } else {
2118 data.writeInt(0);
2119 }
Dianne Hackbornfa82f222009-09-17 15:14:12 -07002120 mRemote.transact(START_ACTIVITY_INTENT_SENDER_TRANSACTION, data, reply, 0);
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -07002121 reply.readException();
2122 int result = reply.readInt();
2123 reply.recycle();
2124 data.recycle();
2125 return result;
2126 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002127 public boolean startNextMatchingActivity(IBinder callingActivity,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002128 Intent intent, Bundle options) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002129 Parcel data = Parcel.obtain();
2130 Parcel reply = Parcel.obtain();
2131 data.writeInterfaceToken(IActivityManager.descriptor);
2132 data.writeStrongBinder(callingActivity);
2133 intent.writeToParcel(data, 0);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002134 if (options != null) {
2135 data.writeInt(1);
2136 options.writeToParcel(data, 0);
2137 } else {
2138 data.writeInt(0);
2139 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002140 mRemote.transact(START_NEXT_MATCHING_ACTIVITY_TRANSACTION, data, reply, 0);
2141 reply.readException();
2142 int result = reply.readInt();
2143 reply.recycle();
2144 data.recycle();
2145 return result != 0;
2146 }
2147 public boolean finishActivity(IBinder token, int resultCode, Intent resultData)
2148 throws RemoteException {
2149 Parcel data = Parcel.obtain();
2150 Parcel reply = Parcel.obtain();
2151 data.writeInterfaceToken(IActivityManager.descriptor);
2152 data.writeStrongBinder(token);
2153 data.writeInt(resultCode);
2154 if (resultData != null) {
2155 data.writeInt(1);
2156 resultData.writeToParcel(data, 0);
2157 } else {
2158 data.writeInt(0);
2159 }
2160 mRemote.transact(FINISH_ACTIVITY_TRANSACTION, data, reply, 0);
2161 reply.readException();
2162 boolean res = reply.readInt() != 0;
2163 data.recycle();
2164 reply.recycle();
2165 return res;
2166 }
2167 public void finishSubActivity(IBinder token, String resultWho, int requestCode) throws RemoteException
2168 {
2169 Parcel data = Parcel.obtain();
2170 Parcel reply = Parcel.obtain();
2171 data.writeInterfaceToken(IActivityManager.descriptor);
2172 data.writeStrongBinder(token);
2173 data.writeString(resultWho);
2174 data.writeInt(requestCode);
2175 mRemote.transact(FINISH_SUB_ACTIVITY_TRANSACTION, data, reply, 0);
2176 reply.readException();
2177 data.recycle();
2178 reply.recycle();
2179 }
Dianne Hackbornecc5a9c2012-04-26 18:56:09 -07002180 public boolean finishActivityAffinity(IBinder token) throws RemoteException {
2181 Parcel data = Parcel.obtain();
2182 Parcel reply = Parcel.obtain();
2183 data.writeInterfaceToken(IActivityManager.descriptor);
2184 data.writeStrongBinder(token);
2185 mRemote.transact(FINISH_ACTIVITY_AFFINITY_TRANSACTION, data, reply, 0);
2186 reply.readException();
2187 boolean res = reply.readInt() != 0;
2188 data.recycle();
2189 reply.recycle();
2190 return res;
2191 }
Dianne Hackborn061d58a2010-03-12 15:07:06 -08002192 public boolean willActivityBeVisible(IBinder token) throws RemoteException {
2193 Parcel data = Parcel.obtain();
2194 Parcel reply = Parcel.obtain();
2195 data.writeInterfaceToken(IActivityManager.descriptor);
2196 data.writeStrongBinder(token);
2197 mRemote.transact(WILL_ACTIVITY_BE_VISIBLE_TRANSACTION, data, reply, 0);
2198 reply.readException();
2199 boolean res = reply.readInt() != 0;
2200 data.recycle();
2201 reply.recycle();
2202 return res;
2203 }
Dianne Hackborn6c418d52011-06-29 14:05:33 -07002204 public Intent registerReceiver(IApplicationThread caller, String packageName,
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002205 IIntentReceiver receiver,
Dianne Hackborn20e80982012-08-31 19:00:44 -07002206 IntentFilter filter, String perm, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002207 {
2208 Parcel data = Parcel.obtain();
2209 Parcel reply = Parcel.obtain();
2210 data.writeInterfaceToken(IActivityManager.descriptor);
2211 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackborn6c418d52011-06-29 14:05:33 -07002212 data.writeString(packageName);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002213 data.writeStrongBinder(receiver != null ? receiver.asBinder() : null);
2214 filter.writeToParcel(data, 0);
2215 data.writeString(perm);
Dianne Hackborn20e80982012-08-31 19:00:44 -07002216 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002217 mRemote.transact(REGISTER_RECEIVER_TRANSACTION, data, reply, 0);
2218 reply.readException();
2219 Intent intent = null;
2220 int haveIntent = reply.readInt();
2221 if (haveIntent != 0) {
2222 intent = Intent.CREATOR.createFromParcel(reply);
2223 }
2224 reply.recycle();
2225 data.recycle();
2226 return intent;
2227 }
2228 public void unregisterReceiver(IIntentReceiver receiver) throws RemoteException
2229 {
2230 Parcel data = Parcel.obtain();
2231 Parcel reply = Parcel.obtain();
2232 data.writeInterfaceToken(IActivityManager.descriptor);
2233 data.writeStrongBinder(receiver.asBinder());
2234 mRemote.transact(UNREGISTER_RECEIVER_TRANSACTION, data, reply, 0);
2235 reply.readException();
2236 data.recycle();
2237 reply.recycle();
2238 }
2239 public int broadcastIntent(IApplicationThread caller,
2240 Intent intent, String resolvedType, IIntentReceiver resultTo,
2241 int resultCode, String resultData, Bundle map,
Dianne Hackbornf51f6122013-02-04 18:23:34 -08002242 String requiredPermission, int appOp, boolean serialized,
Amith Yamasani742a6712011-05-04 14:49:28 -07002243 boolean sticky, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002244 {
2245 Parcel data = Parcel.obtain();
2246 Parcel reply = Parcel.obtain();
2247 data.writeInterfaceToken(IActivityManager.descriptor);
2248 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2249 intent.writeToParcel(data, 0);
2250 data.writeString(resolvedType);
2251 data.writeStrongBinder(resultTo != null ? resultTo.asBinder() : null);
2252 data.writeInt(resultCode);
2253 data.writeString(resultData);
2254 data.writeBundle(map);
2255 data.writeString(requiredPermission);
Dianne Hackbornf51f6122013-02-04 18:23:34 -08002256 data.writeInt(appOp);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002257 data.writeInt(serialized ? 1 : 0);
2258 data.writeInt(sticky ? 1 : 0);
Amith Yamasani742a6712011-05-04 14:49:28 -07002259 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002260 mRemote.transact(BROADCAST_INTENT_TRANSACTION, data, reply, 0);
2261 reply.readException();
2262 int res = reply.readInt();
2263 reply.recycle();
2264 data.recycle();
2265 return res;
2266 }
Amith Yamasani742a6712011-05-04 14:49:28 -07002267 public void unbroadcastIntent(IApplicationThread caller, Intent intent, int userId)
2268 throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002269 {
2270 Parcel data = Parcel.obtain();
2271 Parcel reply = Parcel.obtain();
2272 data.writeInterfaceToken(IActivityManager.descriptor);
2273 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2274 intent.writeToParcel(data, 0);
Amith Yamasani742a6712011-05-04 14:49:28 -07002275 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002276 mRemote.transact(UNBROADCAST_INTENT_TRANSACTION, data, reply, 0);
2277 reply.readException();
2278 data.recycle();
2279 reply.recycle();
2280 }
2281 public void finishReceiver(IBinder who, int resultCode, String resultData, Bundle map, boolean abortBroadcast) throws RemoteException
2282 {
2283 Parcel data = Parcel.obtain();
2284 Parcel reply = Parcel.obtain();
2285 data.writeInterfaceToken(IActivityManager.descriptor);
2286 data.writeStrongBinder(who);
2287 data.writeInt(resultCode);
2288 data.writeString(resultData);
2289 data.writeBundle(map);
2290 data.writeInt(abortBroadcast ? 1 : 0);
2291 mRemote.transact(FINISH_RECEIVER_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2292 reply.readException();
2293 data.recycle();
2294 reply.recycle();
2295 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002296 public void attachApplication(IApplicationThread app) throws RemoteException
2297 {
2298 Parcel data = Parcel.obtain();
2299 Parcel reply = Parcel.obtain();
2300 data.writeInterfaceToken(IActivityManager.descriptor);
2301 data.writeStrongBinder(app.asBinder());
2302 mRemote.transact(ATTACH_APPLICATION_TRANSACTION, data, reply, 0);
2303 reply.readException();
2304 data.recycle();
2305 reply.recycle();
2306 }
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07002307 public void activityIdle(IBinder token, Configuration config, boolean stopProfiling)
2308 throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002309 {
2310 Parcel data = Parcel.obtain();
2311 Parcel reply = Parcel.obtain();
2312 data.writeInterfaceToken(IActivityManager.descriptor);
2313 data.writeStrongBinder(token);
Dianne Hackborne88846e2009-09-30 21:34:25 -07002314 if (config != null) {
2315 data.writeInt(1);
2316 config.writeToParcel(data, 0);
2317 } else {
2318 data.writeInt(0);
2319 }
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07002320 data.writeInt(stopProfiling ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002321 mRemote.transact(ACTIVITY_IDLE_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2322 reply.readException();
2323 data.recycle();
2324 reply.recycle();
2325 }
Dianne Hackbornad9b32112012-09-17 15:35:01 -07002326 public void activityResumed(IBinder token) throws RemoteException
2327 {
2328 Parcel data = Parcel.obtain();
2329 Parcel reply = Parcel.obtain();
2330 data.writeInterfaceToken(IActivityManager.descriptor);
2331 data.writeStrongBinder(token);
2332 mRemote.transact(ACTIVITY_RESUMED_TRANSACTION, data, reply, 0);
2333 reply.readException();
2334 data.recycle();
2335 reply.recycle();
2336 }
Dianne Hackborn0aae2d42010-12-07 23:51:29 -08002337 public void activityPaused(IBinder token) throws RemoteException
2338 {
2339 Parcel data = Parcel.obtain();
2340 Parcel reply = Parcel.obtain();
2341 data.writeInterfaceToken(IActivityManager.descriptor);
2342 data.writeStrongBinder(token);
2343 mRemote.transact(ACTIVITY_PAUSED_TRANSACTION, data, reply, 0);
2344 reply.readException();
2345 data.recycle();
2346 reply.recycle();
2347 }
2348 public void activityStopped(IBinder token, Bundle state,
2349 Bitmap thumbnail, CharSequence description) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002350 {
2351 Parcel data = Parcel.obtain();
2352 Parcel reply = Parcel.obtain();
2353 data.writeInterfaceToken(IActivityManager.descriptor);
2354 data.writeStrongBinder(token);
2355 data.writeBundle(state);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002356 if (thumbnail != null) {
2357 data.writeInt(1);
2358 thumbnail.writeToParcel(data, 0);
2359 } else {
2360 data.writeInt(0);
2361 }
2362 TextUtils.writeToParcel(description, data, 0);
2363 mRemote.transact(ACTIVITY_STOPPED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2364 reply.readException();
2365 data.recycle();
2366 reply.recycle();
2367 }
Dianne Hackborn4eba96b2011-01-21 13:34:36 -08002368 public void activitySlept(IBinder token) throws RemoteException
2369 {
2370 Parcel data = Parcel.obtain();
2371 Parcel reply = Parcel.obtain();
2372 data.writeInterfaceToken(IActivityManager.descriptor);
2373 data.writeStrongBinder(token);
2374 mRemote.transact(ACTIVITY_SLEPT_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2375 reply.readException();
2376 data.recycle();
2377 reply.recycle();
2378 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002379 public void activityDestroyed(IBinder token) throws RemoteException
2380 {
2381 Parcel data = Parcel.obtain();
2382 Parcel reply = Parcel.obtain();
2383 data.writeInterfaceToken(IActivityManager.descriptor);
2384 data.writeStrongBinder(token);
2385 mRemote.transact(ACTIVITY_DESTROYED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2386 reply.readException();
2387 data.recycle();
2388 reply.recycle();
2389 }
2390 public String getCallingPackage(IBinder token) throws RemoteException
2391 {
2392 Parcel data = Parcel.obtain();
2393 Parcel reply = Parcel.obtain();
2394 data.writeInterfaceToken(IActivityManager.descriptor);
2395 data.writeStrongBinder(token);
2396 mRemote.transact(GET_CALLING_PACKAGE_TRANSACTION, data, reply, 0);
2397 reply.readException();
2398 String res = reply.readString();
2399 data.recycle();
2400 reply.recycle();
2401 return res;
2402 }
2403 public ComponentName getCallingActivity(IBinder token)
2404 throws RemoteException {
2405 Parcel data = Parcel.obtain();
2406 Parcel reply = Parcel.obtain();
2407 data.writeInterfaceToken(IActivityManager.descriptor);
2408 data.writeStrongBinder(token);
2409 mRemote.transact(GET_CALLING_ACTIVITY_TRANSACTION, data, reply, 0);
2410 reply.readException();
2411 ComponentName res = ComponentName.readFromParcel(reply);
2412 data.recycle();
2413 reply.recycle();
2414 return res;
2415 }
2416 public List getTasks(int maxNum, int flags,
2417 IThumbnailReceiver receiver) throws RemoteException {
2418 Parcel data = Parcel.obtain();
2419 Parcel reply = Parcel.obtain();
2420 data.writeInterfaceToken(IActivityManager.descriptor);
2421 data.writeInt(maxNum);
2422 data.writeInt(flags);
2423 data.writeStrongBinder(receiver != null ? receiver.asBinder() : null);
2424 mRemote.transact(GET_TASKS_TRANSACTION, data, reply, 0);
2425 reply.readException();
2426 ArrayList list = null;
2427 int N = reply.readInt();
2428 if (N >= 0) {
2429 list = new ArrayList();
2430 while (N > 0) {
2431 ActivityManager.RunningTaskInfo info =
2432 ActivityManager.RunningTaskInfo.CREATOR
2433 .createFromParcel(reply);
2434 list.add(info);
2435 N--;
2436 }
2437 }
2438 data.recycle();
2439 reply.recycle();
2440 return list;
2441 }
2442 public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum,
Amith Yamasani82644082012-08-03 13:09:11 -07002443 int flags, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002444 Parcel data = Parcel.obtain();
2445 Parcel reply = Parcel.obtain();
2446 data.writeInterfaceToken(IActivityManager.descriptor);
2447 data.writeInt(maxNum);
2448 data.writeInt(flags);
Amith Yamasani82644082012-08-03 13:09:11 -07002449 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002450 mRemote.transact(GET_RECENT_TASKS_TRANSACTION, data, reply, 0);
2451 reply.readException();
2452 ArrayList<ActivityManager.RecentTaskInfo> list
2453 = reply.createTypedArrayList(ActivityManager.RecentTaskInfo.CREATOR);
2454 data.recycle();
2455 reply.recycle();
2456 return list;
2457 }
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002458 public ActivityManager.TaskThumbnails getTaskThumbnails(int id) throws RemoteException {
Dianne Hackbornd94df452011-02-16 18:53:31 -08002459 Parcel data = Parcel.obtain();
2460 Parcel reply = Parcel.obtain();
2461 data.writeInterfaceToken(IActivityManager.descriptor);
2462 data.writeInt(id);
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002463 mRemote.transact(GET_TASK_THUMBNAILS_TRANSACTION, data, reply, 0);
Dianne Hackbornd94df452011-02-16 18:53:31 -08002464 reply.readException();
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002465 ActivityManager.TaskThumbnails bm = null;
Dianne Hackbornd94df452011-02-16 18:53:31 -08002466 if (reply.readInt() != 0) {
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002467 bm = ActivityManager.TaskThumbnails.CREATOR.createFromParcel(reply);
Dianne Hackbornd94df452011-02-16 18:53:31 -08002468 }
2469 data.recycle();
2470 reply.recycle();
2471 return bm;
2472 }
Dianne Hackborn15491c62012-09-19 10:59:14 -07002473 public Bitmap getTaskTopThumbnail(int id) throws RemoteException {
2474 Parcel data = Parcel.obtain();
2475 Parcel reply = Parcel.obtain();
2476 data.writeInterfaceToken(IActivityManager.descriptor);
2477 data.writeInt(id);
2478 mRemote.transact(GET_TASK_TOP_THUMBNAIL_TRANSACTION, data, reply, 0);
2479 reply.readException();
2480 Bitmap bm = null;
2481 if (reply.readInt() != 0) {
2482 bm = Bitmap.CREATOR.createFromParcel(reply);
2483 }
2484 data.recycle();
2485 reply.recycle();
2486 return bm;
2487 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002488 public List getServices(int maxNum, int flags) throws RemoteException {
2489 Parcel data = Parcel.obtain();
2490 Parcel reply = Parcel.obtain();
2491 data.writeInterfaceToken(IActivityManager.descriptor);
2492 data.writeInt(maxNum);
2493 data.writeInt(flags);
2494 mRemote.transact(GET_SERVICES_TRANSACTION, data, reply, 0);
2495 reply.readException();
2496 ArrayList list = null;
2497 int N = reply.readInt();
2498 if (N >= 0) {
2499 list = new ArrayList();
2500 while (N > 0) {
2501 ActivityManager.RunningServiceInfo info =
2502 ActivityManager.RunningServiceInfo.CREATOR
2503 .createFromParcel(reply);
2504 list.add(info);
2505 N--;
2506 }
2507 }
2508 data.recycle();
2509 reply.recycle();
2510 return list;
2511 }
2512 public List<ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState()
2513 throws RemoteException {
2514 Parcel data = Parcel.obtain();
2515 Parcel reply = Parcel.obtain();
2516 data.writeInterfaceToken(IActivityManager.descriptor);
2517 mRemote.transact(GET_PROCESSES_IN_ERROR_STATE_TRANSACTION, data, reply, 0);
2518 reply.readException();
2519 ArrayList<ActivityManager.ProcessErrorStateInfo> list
2520 = reply.createTypedArrayList(ActivityManager.ProcessErrorStateInfo.CREATOR);
2521 data.recycle();
2522 reply.recycle();
2523 return list;
2524 }
2525 public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses()
2526 throws RemoteException {
2527 Parcel data = Parcel.obtain();
2528 Parcel reply = Parcel.obtain();
2529 data.writeInterfaceToken(IActivityManager.descriptor);
2530 mRemote.transact(GET_RUNNING_APP_PROCESSES_TRANSACTION, data, reply, 0);
2531 reply.readException();
2532 ArrayList<ActivityManager.RunningAppProcessInfo> list
2533 = reply.createTypedArrayList(ActivityManager.RunningAppProcessInfo.CREATOR);
2534 data.recycle();
2535 reply.recycle();
2536 return list;
2537 }
Suchi Amalapurapuf7f5dda2010-03-23 10:34:28 -07002538 public List<ApplicationInfo> getRunningExternalApplications()
2539 throws RemoteException {
2540 Parcel data = Parcel.obtain();
2541 Parcel reply = Parcel.obtain();
2542 data.writeInterfaceToken(IActivityManager.descriptor);
2543 mRemote.transact(GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION, data, reply, 0);
2544 reply.readException();
2545 ArrayList<ApplicationInfo> list
2546 = reply.createTypedArrayList(ApplicationInfo.CREATOR);
2547 data.recycle();
2548 reply.recycle();
2549 return list;
2550 }
Dianne Hackborn8078d8c2012-03-20 11:11:26 -07002551 public void moveTaskToFront(int task, int flags, Bundle options) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002552 {
2553 Parcel data = Parcel.obtain();
2554 Parcel reply = Parcel.obtain();
2555 data.writeInterfaceToken(IActivityManager.descriptor);
2556 data.writeInt(task);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08002557 data.writeInt(flags);
Dianne Hackborn8078d8c2012-03-20 11:11:26 -07002558 if (options != null) {
2559 data.writeInt(1);
2560 options.writeToParcel(data, 0);
2561 } else {
2562 data.writeInt(0);
2563 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002564 mRemote.transact(MOVE_TASK_TO_FRONT_TRANSACTION, data, reply, 0);
2565 reply.readException();
2566 data.recycle();
2567 reply.recycle();
2568 }
2569 public void moveTaskToBack(int task) throws RemoteException
2570 {
2571 Parcel data = Parcel.obtain();
2572 Parcel reply = Parcel.obtain();
2573 data.writeInterfaceToken(IActivityManager.descriptor);
2574 data.writeInt(task);
2575 mRemote.transact(MOVE_TASK_TO_BACK_TRANSACTION, data, reply, 0);
2576 reply.readException();
2577 data.recycle();
2578 reply.recycle();
2579 }
2580 public boolean moveActivityTaskToBack(IBinder token, boolean nonRoot)
2581 throws RemoteException {
2582 Parcel data = Parcel.obtain();
2583 Parcel reply = Parcel.obtain();
2584 data.writeInterfaceToken(IActivityManager.descriptor);
2585 data.writeStrongBinder(token);
2586 data.writeInt(nonRoot ? 1 : 0);
2587 mRemote.transact(MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION, data, reply, 0);
2588 reply.readException();
2589 boolean res = reply.readInt() != 0;
2590 data.recycle();
2591 reply.recycle();
2592 return res;
2593 }
2594 public void moveTaskBackwards(int task) throws RemoteException
2595 {
2596 Parcel data = Parcel.obtain();
2597 Parcel reply = Parcel.obtain();
2598 data.writeInterfaceToken(IActivityManager.descriptor);
2599 data.writeInt(task);
2600 mRemote.transact(MOVE_TASK_BACKWARDS_TRANSACTION, data, reply, 0);
2601 reply.readException();
2602 data.recycle();
2603 reply.recycle();
2604 }
Craig Mautnerc00204b2013-03-05 15:02:14 -08002605 @Override
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07002606 public int createStack(int taskId, int relativeStackId, int position, float weight)
2607 throws RemoteException
Craig Mautnerc00204b2013-03-05 15:02:14 -08002608 {
2609 Parcel data = Parcel.obtain();
2610 Parcel reply = Parcel.obtain();
Craig Mautner967212c2013-04-13 21:10:58 -07002611 data.writeInterfaceToken(IActivityManager.descriptor);
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07002612 data.writeInt(taskId);
Craig Mautnerc00204b2013-03-05 15:02:14 -08002613 data.writeInt(relativeStackId);
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07002614 data.writeInt(position);
Craig Mautnerc00204b2013-03-05 15:02:14 -08002615 data.writeFloat(weight);
2616 mRemote.transact(CREATE_STACK_TRANSACTION, data, reply, 0);
2617 reply.readException();
2618 int res = reply.readInt();
2619 data.recycle();
2620 reply.recycle();
2621 return res;
2622 }
2623 @Override
2624 public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException
2625 {
2626 Parcel data = Parcel.obtain();
2627 Parcel reply = Parcel.obtain();
Craig Mautner967212c2013-04-13 21:10:58 -07002628 data.writeInterfaceToken(IActivityManager.descriptor);
Craig Mautnerc00204b2013-03-05 15:02:14 -08002629 data.writeInt(taskId);
2630 data.writeInt(stackId);
2631 data.writeInt(toTop ? 1 : 0);
2632 mRemote.transact(MOVE_TASK_TO_STACK_TRANSACTION, data, reply, 0);
2633 reply.readException();
2634 data.recycle();
2635 reply.recycle();
2636 }
2637 @Override
2638 public void resizeStack(int stackId, float weight) throws RemoteException
2639 {
2640 Parcel data = Parcel.obtain();
2641 Parcel reply = Parcel.obtain();
Craig Mautner967212c2013-04-13 21:10:58 -07002642 data.writeInterfaceToken(IActivityManager.descriptor);
Craig Mautnerc00204b2013-03-05 15:02:14 -08002643 data.writeInt(stackId);
2644 data.writeFloat(weight);
Craig Mautnercf910b02013-04-23 11:23:27 -07002645 mRemote.transact(RESIZE_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
Craig Mautnerc00204b2013-03-05 15:02:14 -08002646 reply.readException();
2647 data.recycle();
2648 reply.recycle();
2649 }
Craig Mautner967212c2013-04-13 21:10:58 -07002650 @Override
2651 public List<ActivityManager.StackInfo> getStacks() throws RemoteException
2652 {
2653 Parcel data = Parcel.obtain();
2654 Parcel reply = Parcel.obtain();
2655 data.writeInterfaceToken(IActivityManager.descriptor);
2656 mRemote.transact(GET_STACKS_TRANSACTION, data, reply, 0);
2657 reply.readException();
2658 ArrayList<ActivityManager.StackInfo> list
2659 = reply.createTypedArrayList(ActivityManager.StackInfo.CREATOR);
2660 data.recycle();
2661 reply.recycle();
2662 return list;
2663 }
Craig Mautnercf910b02013-04-23 11:23:27 -07002664 @Override
2665 public void setFocusedStack(int stackId) throws RemoteException
2666 {
2667 Parcel data = Parcel.obtain();
2668 Parcel reply = Parcel.obtain();
2669 data.writeInterfaceToken(IActivityManager.descriptor);
2670 data.writeInt(stackId);
2671 mRemote.transact(SET_FOCUSED_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2672 reply.readException();
2673 data.recycle();
2674 reply.recycle();
2675 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002676 public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException
2677 {
2678 Parcel data = Parcel.obtain();
2679 Parcel reply = Parcel.obtain();
2680 data.writeInterfaceToken(IActivityManager.descriptor);
2681 data.writeStrongBinder(token);
2682 data.writeInt(onlyRoot ? 1 : 0);
2683 mRemote.transact(GET_TASK_FOR_ACTIVITY_TRANSACTION, data, reply, 0);
2684 reply.readException();
2685 int res = reply.readInt();
2686 data.recycle();
2687 reply.recycle();
2688 return res;
2689 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002690 public void reportThumbnail(IBinder token,
2691 Bitmap thumbnail, CharSequence description) throws RemoteException
2692 {
2693 Parcel data = Parcel.obtain();
2694 Parcel reply = Parcel.obtain();
2695 data.writeInterfaceToken(IActivityManager.descriptor);
2696 data.writeStrongBinder(token);
2697 if (thumbnail != null) {
2698 data.writeInt(1);
2699 thumbnail.writeToParcel(data, 0);
2700 } else {
2701 data.writeInt(0);
2702 }
2703 TextUtils.writeToParcel(description, data, 0);
2704 mRemote.transact(REPORT_THUMBNAIL_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2705 reply.readException();
2706 data.recycle();
2707 reply.recycle();
2708 }
2709 public ContentProviderHolder getContentProvider(IApplicationThread caller,
Jeff Sharkey6d515712012-09-20 16:06:08 -07002710 String name, int userId, boolean stable) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002711 Parcel data = Parcel.obtain();
2712 Parcel reply = Parcel.obtain();
2713 data.writeInterfaceToken(IActivityManager.descriptor);
2714 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2715 data.writeString(name);
Jeff Sharkey6d515712012-09-20 16:06:08 -07002716 data.writeInt(userId);
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07002717 data.writeInt(stable ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002718 mRemote.transact(GET_CONTENT_PROVIDER_TRANSACTION, data, reply, 0);
2719 reply.readException();
2720 int res = reply.readInt();
2721 ContentProviderHolder cph = null;
2722 if (res != 0) {
2723 cph = ContentProviderHolder.CREATOR.createFromParcel(reply);
2724 }
2725 data.recycle();
2726 reply.recycle();
2727 return cph;
2728 }
Jeff Sharkey6d515712012-09-20 16:06:08 -07002729 public ContentProviderHolder getContentProviderExternal(String name, int userId, IBinder token)
2730 throws RemoteException {
Svetoslav Ganov25872aa2012-02-03 19:19:09 -08002731 Parcel data = Parcel.obtain();
2732 Parcel reply = Parcel.obtain();
2733 data.writeInterfaceToken(IActivityManager.descriptor);
2734 data.writeString(name);
Jeff Sharkey6d515712012-09-20 16:06:08 -07002735 data.writeInt(userId);
Svetoslav Ganov25872aa2012-02-03 19:19:09 -08002736 data.writeStrongBinder(token);
2737 mRemote.transact(GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0);
2738 reply.readException();
2739 int res = reply.readInt();
2740 ContentProviderHolder cph = null;
2741 if (res != 0) {
2742 cph = ContentProviderHolder.CREATOR.createFromParcel(reply);
2743 }
2744 data.recycle();
2745 reply.recycle();
2746 return cph;
2747 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002748 public void publishContentProviders(IApplicationThread caller,
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07002749 List<ContentProviderHolder> providers) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002750 {
2751 Parcel data = Parcel.obtain();
2752 Parcel reply = Parcel.obtain();
2753 data.writeInterfaceToken(IActivityManager.descriptor);
2754 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2755 data.writeTypedList(providers);
2756 mRemote.transact(PUBLISH_CONTENT_PROVIDERS_TRANSACTION, data, reply, 0);
2757 reply.readException();
2758 data.recycle();
2759 reply.recycle();
2760 }
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07002761 public boolean refContentProvider(IBinder connection, int stable, int unstable)
2762 throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002763 Parcel data = Parcel.obtain();
2764 Parcel reply = Parcel.obtain();
2765 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07002766 data.writeStrongBinder(connection);
2767 data.writeInt(stable);
2768 data.writeInt(unstable);
2769 mRemote.transact(REF_CONTENT_PROVIDER_TRANSACTION, data, reply, 0);
2770 reply.readException();
2771 boolean res = reply.readInt() != 0;
2772 data.recycle();
2773 reply.recycle();
2774 return res;
2775 }
2776 public void unstableProviderDied(IBinder connection) throws RemoteException {
2777 Parcel data = Parcel.obtain();
2778 Parcel reply = Parcel.obtain();
2779 data.writeInterfaceToken(IActivityManager.descriptor);
2780 data.writeStrongBinder(connection);
2781 mRemote.transact(UNSTABLE_PROVIDER_DIED_TRANSACTION, data, reply, 0);
2782 reply.readException();
2783 data.recycle();
2784 reply.recycle();
2785 }
2786
2787 public void removeContentProvider(IBinder connection, boolean stable) throws RemoteException {
2788 Parcel data = Parcel.obtain();
2789 Parcel reply = Parcel.obtain();
2790 data.writeInterfaceToken(IActivityManager.descriptor);
2791 data.writeStrongBinder(connection);
2792 data.writeInt(stable ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002793 mRemote.transact(REMOVE_CONTENT_PROVIDER_TRANSACTION, data, reply, 0);
2794 reply.readException();
2795 data.recycle();
2796 reply.recycle();
2797 }
Svetoslav Ganov25872aa2012-02-03 19:19:09 -08002798
2799 public void removeContentProviderExternal(String name, IBinder token) throws RemoteException {
2800 Parcel data = Parcel.obtain();
2801 Parcel reply = Parcel.obtain();
2802 data.writeInterfaceToken(IActivityManager.descriptor);
2803 data.writeString(name);
2804 data.writeStrongBinder(token);
2805 mRemote.transact(REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0);
2806 reply.readException();
2807 data.recycle();
2808 reply.recycle();
2809 }
2810
Dianne Hackborndd9b82c2009-09-03 00:18:47 -07002811 public PendingIntent getRunningServiceControlPanel(ComponentName service)
2812 throws RemoteException
2813 {
2814 Parcel data = Parcel.obtain();
2815 Parcel reply = Parcel.obtain();
2816 data.writeInterfaceToken(IActivityManager.descriptor);
2817 service.writeToParcel(data, 0);
2818 mRemote.transact(GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION, data, reply, 0);
2819 reply.readException();
2820 PendingIntent res = PendingIntent.readPendingIntentOrNullFromParcel(reply);
2821 data.recycle();
2822 reply.recycle();
2823 return res;
2824 }
2825
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002826 public ComponentName startService(IApplicationThread caller, Intent service,
Dianne Hackborn7767eac2012-08-23 18:25:40 -07002827 String resolvedType, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002828 {
2829 Parcel data = Parcel.obtain();
2830 Parcel reply = Parcel.obtain();
2831 data.writeInterfaceToken(IActivityManager.descriptor);
2832 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2833 service.writeToParcel(data, 0);
2834 data.writeString(resolvedType);
Dianne Hackborn7767eac2012-08-23 18:25:40 -07002835 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002836 mRemote.transact(START_SERVICE_TRANSACTION, data, reply, 0);
2837 reply.readException();
2838 ComponentName res = ComponentName.readFromParcel(reply);
2839 data.recycle();
2840 reply.recycle();
2841 return res;
2842 }
2843 public int stopService(IApplicationThread caller, Intent service,
Dianne Hackborn7767eac2012-08-23 18:25:40 -07002844 String resolvedType, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002845 {
2846 Parcel data = Parcel.obtain();
2847 Parcel reply = Parcel.obtain();
2848 data.writeInterfaceToken(IActivityManager.descriptor);
2849 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2850 service.writeToParcel(data, 0);
2851 data.writeString(resolvedType);
Dianne Hackborn7767eac2012-08-23 18:25:40 -07002852 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002853 mRemote.transact(STOP_SERVICE_TRANSACTION, data, reply, 0);
2854 reply.readException();
2855 int res = reply.readInt();
2856 reply.recycle();
2857 data.recycle();
2858 return res;
2859 }
2860 public boolean stopServiceToken(ComponentName className, IBinder token,
2861 int startId) throws RemoteException {
2862 Parcel data = Parcel.obtain();
2863 Parcel reply = Parcel.obtain();
2864 data.writeInterfaceToken(IActivityManager.descriptor);
2865 ComponentName.writeToParcel(className, data);
2866 data.writeStrongBinder(token);
2867 data.writeInt(startId);
2868 mRemote.transact(STOP_SERVICE_TOKEN_TRANSACTION, data, reply, 0);
2869 reply.readException();
2870 boolean res = reply.readInt() != 0;
2871 data.recycle();
2872 reply.recycle();
2873 return res;
2874 }
2875 public void setServiceForeground(ComponentName className, IBinder token,
Dianne Hackbornd8a43f62009-08-17 23:33:56 -07002876 int id, Notification notification, boolean removeNotification) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002877 Parcel data = Parcel.obtain();
2878 Parcel reply = Parcel.obtain();
2879 data.writeInterfaceToken(IActivityManager.descriptor);
2880 ComponentName.writeToParcel(className, data);
2881 data.writeStrongBinder(token);
Dianne Hackbornd8a43f62009-08-17 23:33:56 -07002882 data.writeInt(id);
2883 if (notification != null) {
2884 data.writeInt(1);
2885 notification.writeToParcel(data, 0);
2886 } else {
2887 data.writeInt(0);
2888 }
2889 data.writeInt(removeNotification ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002890 mRemote.transact(SET_SERVICE_FOREGROUND_TRANSACTION, data, reply, 0);
2891 reply.readException();
2892 data.recycle();
2893 reply.recycle();
2894 }
2895 public int bindService(IApplicationThread caller, IBinder token,
2896 Intent service, String resolvedType, IServiceConnection connection,
Amith Yamasani37ce3a82012-02-06 12:04:42 -08002897 int flags, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002898 Parcel data = Parcel.obtain();
2899 Parcel reply = Parcel.obtain();
2900 data.writeInterfaceToken(IActivityManager.descriptor);
2901 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2902 data.writeStrongBinder(token);
2903 service.writeToParcel(data, 0);
2904 data.writeString(resolvedType);
2905 data.writeStrongBinder(connection.asBinder());
2906 data.writeInt(flags);
Amith Yamasani37ce3a82012-02-06 12:04:42 -08002907 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002908 mRemote.transact(BIND_SERVICE_TRANSACTION, data, reply, 0);
2909 reply.readException();
2910 int res = reply.readInt();
2911 data.recycle();
2912 reply.recycle();
2913 return res;
2914 }
2915 public boolean unbindService(IServiceConnection connection) throws RemoteException
2916 {
2917 Parcel data = Parcel.obtain();
2918 Parcel reply = Parcel.obtain();
2919 data.writeInterfaceToken(IActivityManager.descriptor);
2920 data.writeStrongBinder(connection.asBinder());
2921 mRemote.transact(UNBIND_SERVICE_TRANSACTION, data, reply, 0);
2922 reply.readException();
2923 boolean res = reply.readInt() != 0;
2924 data.recycle();
2925 reply.recycle();
2926 return res;
2927 }
2928
2929 public void publishService(IBinder token,
2930 Intent intent, IBinder service) throws RemoteException {
2931 Parcel data = Parcel.obtain();
2932 Parcel reply = Parcel.obtain();
2933 data.writeInterfaceToken(IActivityManager.descriptor);
2934 data.writeStrongBinder(token);
2935 intent.writeToParcel(data, 0);
2936 data.writeStrongBinder(service);
2937 mRemote.transact(PUBLISH_SERVICE_TRANSACTION, data, reply, 0);
2938 reply.readException();
2939 data.recycle();
2940 reply.recycle();
2941 }
2942
2943 public void unbindFinished(IBinder token, Intent intent, boolean doRebind)
2944 throws RemoteException {
2945 Parcel data = Parcel.obtain();
2946 Parcel reply = Parcel.obtain();
2947 data.writeInterfaceToken(IActivityManager.descriptor);
2948 data.writeStrongBinder(token);
2949 intent.writeToParcel(data, 0);
2950 data.writeInt(doRebind ? 1 : 0);
2951 mRemote.transact(UNBIND_FINISHED_TRANSACTION, data, reply, 0);
2952 reply.readException();
2953 data.recycle();
2954 reply.recycle();
2955 }
2956
Dianne Hackbornf6f9f2d2009-08-21 16:26:03 -07002957 public void serviceDoneExecuting(IBinder token, int type, int startId,
2958 int res) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002959 Parcel data = Parcel.obtain();
2960 Parcel reply = Parcel.obtain();
2961 data.writeInterfaceToken(IActivityManager.descriptor);
2962 data.writeStrongBinder(token);
Dianne Hackbornf6f9f2d2009-08-21 16:26:03 -07002963 data.writeInt(type);
2964 data.writeInt(startId);
2965 data.writeInt(res);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002966 mRemote.transact(SERVICE_DONE_EXECUTING_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2967 reply.readException();
2968 data.recycle();
2969 reply.recycle();
2970 }
2971
2972 public IBinder peekService(Intent service, String resolvedType) throws RemoteException {
2973 Parcel data = Parcel.obtain();
2974 Parcel reply = Parcel.obtain();
2975 data.writeInterfaceToken(IActivityManager.descriptor);
2976 service.writeToParcel(data, 0);
2977 data.writeString(resolvedType);
2978 mRemote.transact(PEEK_SERVICE_TRANSACTION, data, reply, 0);
2979 reply.readException();
2980 IBinder binder = reply.readStrongBinder();
2981 reply.recycle();
2982 data.recycle();
2983 return binder;
2984 }
2985
Christopher Tate181fafa2009-05-14 11:12:14 -07002986 public boolean bindBackupAgent(ApplicationInfo app, int backupRestoreMode)
2987 throws RemoteException {
2988 Parcel data = Parcel.obtain();
2989 Parcel reply = Parcel.obtain();
2990 data.writeInterfaceToken(IActivityManager.descriptor);
2991 app.writeToParcel(data, 0);
2992 data.writeInt(backupRestoreMode);
2993 mRemote.transact(START_BACKUP_AGENT_TRANSACTION, data, reply, 0);
2994 reply.readException();
2995 boolean success = reply.readInt() != 0;
2996 reply.recycle();
2997 data.recycle();
2998 return success;
2999 }
3000
Christopher Tate346acb12012-10-15 19:20:25 -07003001 public void clearPendingBackup() throws RemoteException {
3002 Parcel data = Parcel.obtain();
3003 Parcel reply = Parcel.obtain();
3004 data.writeInterfaceToken(IActivityManager.descriptor);
3005 mRemote.transact(CLEAR_PENDING_BACKUP_TRANSACTION, data, reply, 0);
3006 reply.recycle();
3007 data.recycle();
3008 }
3009
Christopher Tate181fafa2009-05-14 11:12:14 -07003010 public void backupAgentCreated(String packageName, IBinder agent) throws RemoteException {
3011 Parcel data = Parcel.obtain();
3012 Parcel reply = Parcel.obtain();
3013 data.writeInterfaceToken(IActivityManager.descriptor);
3014 data.writeString(packageName);
3015 data.writeStrongBinder(agent);
3016 mRemote.transact(BACKUP_AGENT_CREATED_TRANSACTION, data, reply, 0);
3017 reply.recycle();
3018 data.recycle();
3019 }
3020
3021 public void unbindBackupAgent(ApplicationInfo app) throws RemoteException {
3022 Parcel data = Parcel.obtain();
3023 Parcel reply = Parcel.obtain();
3024 data.writeInterfaceToken(IActivityManager.descriptor);
3025 app.writeToParcel(data, 0);
3026 mRemote.transact(UNBIND_BACKUP_AGENT_TRANSACTION, data, reply, 0);
3027 reply.readException();
3028 reply.recycle();
3029 data.recycle();
3030 }
3031
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003032 public boolean startInstrumentation(ComponentName className, String profileFile,
Svetoslav Ganov80943d82013-01-02 10:25:37 -08003033 int flags, Bundle arguments, IInstrumentationWatcher watcher,
3034 IUiAutomationConnection connection, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003035 Parcel data = Parcel.obtain();
3036 Parcel reply = Parcel.obtain();
3037 data.writeInterfaceToken(IActivityManager.descriptor);
3038 ComponentName.writeToParcel(className, data);
3039 data.writeString(profileFile);
3040 data.writeInt(flags);
3041 data.writeBundle(arguments);
3042 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null);
Svetoslav Ganov80943d82013-01-02 10:25:37 -08003043 data.writeStrongBinder(connection != null ? connection.asBinder() : null);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003044 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003045 mRemote.transact(START_INSTRUMENTATION_TRANSACTION, data, reply, 0);
3046 reply.readException();
3047 boolean res = reply.readInt() != 0;
3048 reply.recycle();
3049 data.recycle();
3050 return res;
3051 }
3052
3053 public void finishInstrumentation(IApplicationThread target,
3054 int resultCode, Bundle results) throws RemoteException {
3055 Parcel data = Parcel.obtain();
3056 Parcel reply = Parcel.obtain();
3057 data.writeInterfaceToken(IActivityManager.descriptor);
3058 data.writeStrongBinder(target != null ? target.asBinder() : null);
3059 data.writeInt(resultCode);
3060 data.writeBundle(results);
3061 mRemote.transact(FINISH_INSTRUMENTATION_TRANSACTION, data, reply, 0);
3062 reply.readException();
3063 data.recycle();
3064 reply.recycle();
3065 }
3066 public Configuration getConfiguration() throws RemoteException
3067 {
3068 Parcel data = Parcel.obtain();
3069 Parcel reply = Parcel.obtain();
3070 data.writeInterfaceToken(IActivityManager.descriptor);
3071 mRemote.transact(GET_CONFIGURATION_TRANSACTION, data, reply, 0);
3072 reply.readException();
3073 Configuration res = Configuration.CREATOR.createFromParcel(reply);
3074 reply.recycle();
3075 data.recycle();
3076 return res;
3077 }
3078 public void updateConfiguration(Configuration values) throws RemoteException
3079 {
3080 Parcel data = Parcel.obtain();
3081 Parcel reply = Parcel.obtain();
3082 data.writeInterfaceToken(IActivityManager.descriptor);
3083 values.writeToParcel(data, 0);
3084 mRemote.transact(UPDATE_CONFIGURATION_TRANSACTION, data, reply, 0);
3085 reply.readException();
3086 data.recycle();
3087 reply.recycle();
3088 }
3089 public void setRequestedOrientation(IBinder token, int requestedOrientation)
3090 throws RemoteException {
3091 Parcel data = Parcel.obtain();
3092 Parcel reply = Parcel.obtain();
3093 data.writeInterfaceToken(IActivityManager.descriptor);
3094 data.writeStrongBinder(token);
3095 data.writeInt(requestedOrientation);
3096 mRemote.transact(SET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0);
3097 reply.readException();
3098 data.recycle();
3099 reply.recycle();
3100 }
3101 public int getRequestedOrientation(IBinder token) throws RemoteException {
3102 Parcel data = Parcel.obtain();
3103 Parcel reply = Parcel.obtain();
3104 data.writeInterfaceToken(IActivityManager.descriptor);
3105 data.writeStrongBinder(token);
3106 mRemote.transact(GET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0);
3107 reply.readException();
3108 int res = reply.readInt();
3109 data.recycle();
3110 reply.recycle();
3111 return res;
3112 }
3113 public ComponentName getActivityClassForToken(IBinder token)
3114 throws RemoteException {
3115 Parcel data = Parcel.obtain();
3116 Parcel reply = Parcel.obtain();
3117 data.writeInterfaceToken(IActivityManager.descriptor);
3118 data.writeStrongBinder(token);
3119 mRemote.transact(GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION, data, reply, 0);
3120 reply.readException();
3121 ComponentName res = ComponentName.readFromParcel(reply);
3122 data.recycle();
3123 reply.recycle();
3124 return res;
3125 }
3126 public String getPackageForToken(IBinder token) throws RemoteException
3127 {
3128 Parcel data = Parcel.obtain();
3129 Parcel reply = Parcel.obtain();
3130 data.writeInterfaceToken(IActivityManager.descriptor);
3131 data.writeStrongBinder(token);
3132 mRemote.transact(GET_PACKAGE_FOR_TOKEN_TRANSACTION, data, reply, 0);
3133 reply.readException();
3134 String res = reply.readString();
3135 data.recycle();
3136 reply.recycle();
3137 return res;
3138 }
3139 public IIntentSender getIntentSender(int type,
3140 String packageName, IBinder token, String resultWho,
Dianne Hackborn7a2195c2012-03-19 17:38:00 -07003141 int requestCode, Intent[] intents, String[] resolvedTypes, int flags,
Dianne Hackborn41203752012-08-31 14:05:51 -07003142 Bundle options, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003143 Parcel data = Parcel.obtain();
3144 Parcel reply = Parcel.obtain();
3145 data.writeInterfaceToken(IActivityManager.descriptor);
3146 data.writeInt(type);
3147 data.writeString(packageName);
3148 data.writeStrongBinder(token);
3149 data.writeString(resultWho);
3150 data.writeInt(requestCode);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08003151 if (intents != null) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003152 data.writeInt(1);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08003153 data.writeTypedArray(intents, 0);
3154 data.writeStringArray(resolvedTypes);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003155 } else {
3156 data.writeInt(0);
3157 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003158 data.writeInt(flags);
Dianne Hackborn7a2195c2012-03-19 17:38:00 -07003159 if (options != null) {
3160 data.writeInt(1);
3161 options.writeToParcel(data, 0);
3162 } else {
3163 data.writeInt(0);
3164 }
Dianne Hackborn41203752012-08-31 14:05:51 -07003165 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003166 mRemote.transact(GET_INTENT_SENDER_TRANSACTION, data, reply, 0);
3167 reply.readException();
3168 IIntentSender res = IIntentSender.Stub.asInterface(
3169 reply.readStrongBinder());
3170 data.recycle();
3171 reply.recycle();
3172 return res;
3173 }
3174 public void cancelIntentSender(IIntentSender sender) throws RemoteException {
3175 Parcel data = Parcel.obtain();
3176 Parcel reply = Parcel.obtain();
3177 data.writeInterfaceToken(IActivityManager.descriptor);
3178 data.writeStrongBinder(sender.asBinder());
3179 mRemote.transact(CANCEL_INTENT_SENDER_TRANSACTION, data, reply, 0);
3180 reply.readException();
3181 data.recycle();
3182 reply.recycle();
3183 }
3184 public String getPackageForIntentSender(IIntentSender sender) throws RemoteException {
3185 Parcel data = Parcel.obtain();
3186 Parcel reply = Parcel.obtain();
3187 data.writeInterfaceToken(IActivityManager.descriptor);
3188 data.writeStrongBinder(sender.asBinder());
3189 mRemote.transact(GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0);
3190 reply.readException();
3191 String res = reply.readString();
3192 data.recycle();
3193 reply.recycle();
3194 return res;
3195 }
Christopher Tatec4a07d12012-04-06 14:19:13 -07003196 public int getUidForIntentSender(IIntentSender sender) throws RemoteException {
3197 Parcel data = Parcel.obtain();
3198 Parcel reply = Parcel.obtain();
3199 data.writeInterfaceToken(IActivityManager.descriptor);
3200 data.writeStrongBinder(sender.asBinder());
3201 mRemote.transact(GET_UID_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0);
3202 reply.readException();
3203 int res = reply.readInt();
3204 data.recycle();
3205 reply.recycle();
3206 return res;
3207 }
Dianne Hackborn41203752012-08-31 14:05:51 -07003208 public int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll,
3209 boolean requireFull, String name, String callerPackage) throws RemoteException {
3210 Parcel data = Parcel.obtain();
3211 Parcel reply = Parcel.obtain();
3212 data.writeInterfaceToken(IActivityManager.descriptor);
3213 data.writeInt(callingPid);
3214 data.writeInt(callingUid);
3215 data.writeInt(userId);
3216 data.writeInt(allowAll ? 1 : 0);
3217 data.writeInt(requireFull ? 1 : 0);
3218 data.writeString(name);
3219 data.writeString(callerPackage);
3220 mRemote.transact(HANDLE_INCOMING_USER_TRANSACTION, data, reply, 0);
3221 reply.readException();
3222 int res = reply.readInt();
3223 data.recycle();
3224 reply.recycle();
3225 return res;
3226 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003227 public void setProcessLimit(int max) throws RemoteException
3228 {
3229 Parcel data = Parcel.obtain();
3230 Parcel reply = Parcel.obtain();
3231 data.writeInterfaceToken(IActivityManager.descriptor);
3232 data.writeInt(max);
3233 mRemote.transact(SET_PROCESS_LIMIT_TRANSACTION, data, reply, 0);
3234 reply.readException();
3235 data.recycle();
3236 reply.recycle();
3237 }
3238 public int getProcessLimit() throws RemoteException
3239 {
3240 Parcel data = Parcel.obtain();
3241 Parcel reply = Parcel.obtain();
3242 data.writeInterfaceToken(IActivityManager.descriptor);
3243 mRemote.transact(GET_PROCESS_LIMIT_TRANSACTION, data, reply, 0);
3244 reply.readException();
3245 int res = reply.readInt();
3246 data.recycle();
3247 reply.recycle();
3248 return res;
3249 }
3250 public void setProcessForeground(IBinder token, int pid,
3251 boolean isForeground) throws RemoteException {
3252 Parcel data = Parcel.obtain();
3253 Parcel reply = Parcel.obtain();
3254 data.writeInterfaceToken(IActivityManager.descriptor);
3255 data.writeStrongBinder(token);
3256 data.writeInt(pid);
3257 data.writeInt(isForeground ? 1 : 0);
3258 mRemote.transact(SET_PROCESS_FOREGROUND_TRANSACTION, data, reply, 0);
3259 reply.readException();
3260 data.recycle();
3261 reply.recycle();
3262 }
3263 public int checkPermission(String permission, int pid, int uid)
3264 throws RemoteException {
3265 Parcel data = Parcel.obtain();
3266 Parcel reply = Parcel.obtain();
3267 data.writeInterfaceToken(IActivityManager.descriptor);
3268 data.writeString(permission);
3269 data.writeInt(pid);
3270 data.writeInt(uid);
3271 mRemote.transact(CHECK_PERMISSION_TRANSACTION, data, reply, 0);
3272 reply.readException();
3273 int res = reply.readInt();
3274 data.recycle();
3275 reply.recycle();
3276 return res;
3277 }
3278 public boolean clearApplicationUserData(final String packageName,
Amith Yamasani742a6712011-05-04 14:49:28 -07003279 final IPackageDataObserver observer, final int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003280 Parcel data = Parcel.obtain();
3281 Parcel reply = Parcel.obtain();
3282 data.writeInterfaceToken(IActivityManager.descriptor);
3283 data.writeString(packageName);
3284 data.writeStrongBinder(observer.asBinder());
Amith Yamasani742a6712011-05-04 14:49:28 -07003285 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003286 mRemote.transact(CLEAR_APP_DATA_TRANSACTION, data, reply, 0);
3287 reply.readException();
3288 boolean res = reply.readInt() != 0;
3289 data.recycle();
3290 reply.recycle();
3291 return res;
3292 }
3293 public int checkUriPermission(Uri uri, int pid, int uid, int mode)
3294 throws RemoteException {
3295 Parcel data = Parcel.obtain();
3296 Parcel reply = Parcel.obtain();
3297 data.writeInterfaceToken(IActivityManager.descriptor);
3298 uri.writeToParcel(data, 0);
3299 data.writeInt(pid);
3300 data.writeInt(uid);
3301 data.writeInt(mode);
3302 mRemote.transact(CHECK_URI_PERMISSION_TRANSACTION, data, reply, 0);
3303 reply.readException();
3304 int res = reply.readInt();
3305 data.recycle();
3306 reply.recycle();
3307 return res;
3308 }
3309 public void grantUriPermission(IApplicationThread caller, String targetPkg,
3310 Uri uri, int mode) throws RemoteException {
3311 Parcel data = Parcel.obtain();
3312 Parcel reply = Parcel.obtain();
3313 data.writeInterfaceToken(IActivityManager.descriptor);
3314 data.writeStrongBinder(caller.asBinder());
3315 data.writeString(targetPkg);
3316 uri.writeToParcel(data, 0);
3317 data.writeInt(mode);
3318 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0);
3319 reply.readException();
3320 data.recycle();
3321 reply.recycle();
3322 }
3323 public void revokeUriPermission(IApplicationThread caller, Uri uri,
3324 int mode) throws RemoteException {
3325 Parcel data = Parcel.obtain();
3326 Parcel reply = Parcel.obtain();
3327 data.writeInterfaceToken(IActivityManager.descriptor);
3328 data.writeStrongBinder(caller.asBinder());
3329 uri.writeToParcel(data, 0);
3330 data.writeInt(mode);
3331 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0);
3332 reply.readException();
3333 data.recycle();
3334 reply.recycle();
3335 }
3336 public void showWaitingForDebugger(IApplicationThread who, boolean waiting)
3337 throws RemoteException {
3338 Parcel data = Parcel.obtain();
3339 Parcel reply = Parcel.obtain();
3340 data.writeInterfaceToken(IActivityManager.descriptor);
3341 data.writeStrongBinder(who.asBinder());
3342 data.writeInt(waiting ? 1 : 0);
3343 mRemote.transact(SHOW_WAITING_FOR_DEBUGGER_TRANSACTION, data, reply, 0);
3344 reply.readException();
3345 data.recycle();
3346 reply.recycle();
3347 }
3348 public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) throws RemoteException {
3349 Parcel data = Parcel.obtain();
3350 Parcel reply = Parcel.obtain();
3351 data.writeInterfaceToken(IActivityManager.descriptor);
3352 mRemote.transact(GET_MEMORY_INFO_TRANSACTION, data, reply, 0);
3353 reply.readException();
3354 outInfo.readFromParcel(reply);
3355 data.recycle();
3356 reply.recycle();
3357 }
3358 public void unhandledBack() throws RemoteException
3359 {
3360 Parcel data = Parcel.obtain();
3361 Parcel reply = Parcel.obtain();
3362 data.writeInterfaceToken(IActivityManager.descriptor);
3363 mRemote.transact(UNHANDLED_BACK_TRANSACTION, data, reply, 0);
3364 reply.readException();
3365 data.recycle();
3366 reply.recycle();
3367 }
3368 public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException
3369 {
3370 Parcel data = Parcel.obtain();
3371 Parcel reply = Parcel.obtain();
3372 data.writeInterfaceToken(IActivityManager.descriptor);
3373 mRemote.transact(OPEN_CONTENT_URI_TRANSACTION, data, reply, 0);
3374 reply.readException();
3375 ParcelFileDescriptor pfd = null;
3376 if (reply.readInt() != 0) {
3377 pfd = ParcelFileDescriptor.CREATOR.createFromParcel(reply);
3378 }
3379 data.recycle();
3380 reply.recycle();
3381 return pfd;
3382 }
3383 public void goingToSleep() throws RemoteException
3384 {
3385 Parcel data = Parcel.obtain();
3386 Parcel reply = Parcel.obtain();
3387 data.writeInterfaceToken(IActivityManager.descriptor);
3388 mRemote.transact(GOING_TO_SLEEP_TRANSACTION, data, reply, 0);
3389 reply.readException();
3390 data.recycle();
3391 reply.recycle();
3392 }
3393 public void wakingUp() throws RemoteException
3394 {
3395 Parcel data = Parcel.obtain();
3396 Parcel reply = Parcel.obtain();
3397 data.writeInterfaceToken(IActivityManager.descriptor);
3398 mRemote.transact(WAKING_UP_TRANSACTION, data, reply, 0);
3399 reply.readException();
3400 data.recycle();
3401 reply.recycle();
3402 }
Dianne Hackbornff5b1582012-04-12 17:24:07 -07003403 public void setLockScreenShown(boolean shown) throws RemoteException
3404 {
3405 Parcel data = Parcel.obtain();
3406 Parcel reply = Parcel.obtain();
3407 data.writeInterfaceToken(IActivityManager.descriptor);
3408 data.writeInt(shown ? 1 : 0);
3409 mRemote.transact(SET_LOCK_SCREEN_SHOWN_TRANSACTION, data, reply, 0);
3410 reply.readException();
3411 data.recycle();
3412 reply.recycle();
3413 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003414 public void setDebugApp(
3415 String packageName, boolean waitForDebugger, boolean persistent)
3416 throws RemoteException
3417 {
3418 Parcel data = Parcel.obtain();
3419 Parcel reply = Parcel.obtain();
3420 data.writeInterfaceToken(IActivityManager.descriptor);
3421 data.writeString(packageName);
3422 data.writeInt(waitForDebugger ? 1 : 0);
3423 data.writeInt(persistent ? 1 : 0);
3424 mRemote.transact(SET_DEBUG_APP_TRANSACTION, data, reply, 0);
3425 reply.readException();
3426 data.recycle();
3427 reply.recycle();
3428 }
3429 public void setAlwaysFinish(boolean enabled) throws RemoteException
3430 {
3431 Parcel data = Parcel.obtain();
3432 Parcel reply = Parcel.obtain();
3433 data.writeInterfaceToken(IActivityManager.descriptor);
3434 data.writeInt(enabled ? 1 : 0);
3435 mRemote.transact(SET_ALWAYS_FINISH_TRANSACTION, data, reply, 0);
3436 reply.readException();
3437 data.recycle();
3438 reply.recycle();
3439 }
Dianne Hackbornb06ea702009-07-13 13:07:51 -07003440 public void setActivityController(IActivityController watcher) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003441 {
3442 Parcel data = Parcel.obtain();
3443 Parcel reply = Parcel.obtain();
3444 data.writeInterfaceToken(IActivityManager.descriptor);
3445 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null);
Dianne Hackbornb06ea702009-07-13 13:07:51 -07003446 mRemote.transact(SET_ACTIVITY_CONTROLLER_TRANSACTION, data, reply, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003447 reply.readException();
3448 data.recycle();
3449 reply.recycle();
3450 }
3451 public void enterSafeMode() throws RemoteException {
3452 Parcel data = Parcel.obtain();
3453 data.writeInterfaceToken(IActivityManager.descriptor);
3454 mRemote.transact(ENTER_SAFE_MODE_TRANSACTION, data, null, 0);
3455 data.recycle();
3456 }
3457 public void noteWakeupAlarm(IIntentSender sender) throws RemoteException {
3458 Parcel data = Parcel.obtain();
3459 data.writeStrongBinder(sender.asBinder());
3460 data.writeInterfaceToken(IActivityManager.descriptor);
3461 mRemote.transact(NOTE_WAKEUP_ALARM_TRANSACTION, data, null, 0);
3462 data.recycle();
3463 }
Dianne Hackborn64825172011-03-02 21:32:58 -08003464 public boolean killPids(int[] pids, String reason, boolean secure) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003465 Parcel data = Parcel.obtain();
3466 Parcel reply = Parcel.obtain();
3467 data.writeInterfaceToken(IActivityManager.descriptor);
3468 data.writeIntArray(pids);
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07003469 data.writeString(reason);
Dianne Hackborn64825172011-03-02 21:32:58 -08003470 data.writeInt(secure ? 1 : 0);
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07003471 mRemote.transact(KILL_PIDS_TRANSACTION, data, reply, 0);
Dianne Hackbornf1b78242013-04-08 22:28:59 -07003472 reply.readException();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003473 boolean res = reply.readInt() != 0;
3474 data.recycle();
3475 reply.recycle();
3476 return res;
3477 }
Jeff Sharkeyb9a07012012-03-22 17:00:04 -07003478 @Override
3479 public boolean killProcessesBelowForeground(String reason) throws RemoteException {
3480 Parcel data = Parcel.obtain();
3481 Parcel reply = Parcel.obtain();
3482 data.writeInterfaceToken(IActivityManager.descriptor);
3483 data.writeString(reason);
3484 mRemote.transact(KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION, data, reply, 0);
3485 boolean res = reply.readInt() != 0;
3486 data.recycle();
3487 reply.recycle();
3488 return res;
3489 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003490 public void startRunning(String pkg, String cls, String action,
3491 String indata) throws RemoteException {
3492 Parcel data = Parcel.obtain();
3493 Parcel reply = Parcel.obtain();
3494 data.writeInterfaceToken(IActivityManager.descriptor);
3495 data.writeString(pkg);
3496 data.writeString(cls);
3497 data.writeString(action);
3498 data.writeString(indata);
3499 mRemote.transact(START_RUNNING_TRANSACTION, data, reply, 0);
3500 reply.readException();
3501 data.recycle();
3502 reply.recycle();
3503 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003504 public boolean testIsSystemReady()
3505 {
3506 /* this base class version is never called */
3507 return true;
3508 }
Dan Egnor60d87622009-12-16 16:32:58 -08003509 public void handleApplicationCrash(IBinder app,
3510 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException
3511 {
3512 Parcel data = Parcel.obtain();
3513 Parcel reply = Parcel.obtain();
3514 data.writeInterfaceToken(IActivityManager.descriptor);
3515 data.writeStrongBinder(app);
3516 crashInfo.writeToParcel(data, 0);
3517 mRemote.transact(HANDLE_APPLICATION_CRASH_TRANSACTION, data, reply, 0);
3518 reply.readException();
3519 reply.recycle();
3520 data.recycle();
3521 }
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003522
Dan Egnor60d87622009-12-16 16:32:58 -08003523 public boolean handleApplicationWtf(IBinder app, String tag,
Dan Egnorb7f03672009-12-09 16:22:32 -08003524 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003525 {
3526 Parcel data = Parcel.obtain();
3527 Parcel reply = Parcel.obtain();
3528 data.writeInterfaceToken(IActivityManager.descriptor);
3529 data.writeStrongBinder(app);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003530 data.writeString(tag);
Dan Egnorb7f03672009-12-09 16:22:32 -08003531 crashInfo.writeToParcel(data, 0);
Dan Egnor60d87622009-12-16 16:32:58 -08003532 mRemote.transact(HANDLE_APPLICATION_WTF_TRANSACTION, data, reply, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003533 reply.readException();
Dan Egnor60d87622009-12-16 16:32:58 -08003534 boolean res = reply.readInt() != 0;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003535 reply.recycle();
3536 data.recycle();
Dan Egnor60d87622009-12-16 16:32:58 -08003537 return res;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003538 }
Dan Egnorb7f03672009-12-09 16:22:32 -08003539
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003540 public void handleApplicationStrictModeViolation(IBinder app,
Brad Fitzpatrick46d42382010-06-11 13:57:58 -07003541 int violationMask,
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -07003542 StrictMode.ViolationInfo info) throws RemoteException
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003543 {
3544 Parcel data = Parcel.obtain();
3545 Parcel reply = Parcel.obtain();
3546 data.writeInterfaceToken(IActivityManager.descriptor);
3547 data.writeStrongBinder(app);
Brad Fitzpatrick46d42382010-06-11 13:57:58 -07003548 data.writeInt(violationMask);
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -07003549 info.writeToParcel(data, 0);
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003550 mRemote.transact(HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION, data, reply, 0);
3551 reply.readException();
3552 reply.recycle();
3553 data.recycle();
3554 }
3555
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003556 public void signalPersistentProcesses(int sig) throws RemoteException {
3557 Parcel data = Parcel.obtain();
3558 Parcel reply = Parcel.obtain();
3559 data.writeInterfaceToken(IActivityManager.descriptor);
3560 data.writeInt(sig);
3561 mRemote.transact(SIGNAL_PERSISTENT_PROCESSES_TRANSACTION, data, reply, 0);
3562 reply.readException();
3563 data.recycle();
3564 reply.recycle();
3565 }
Dianne Hackborne4d4fbc2011-11-08 11:53:28 -08003566
Dianne Hackborn1676c852012-09-10 14:52:30 -07003567 public void killBackgroundProcesses(String packageName, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003568 Parcel data = Parcel.obtain();
3569 Parcel reply = Parcel.obtain();
3570 data.writeInterfaceToken(IActivityManager.descriptor);
3571 data.writeString(packageName);
Dianne Hackborn1676c852012-09-10 14:52:30 -07003572 data.writeInt(userId);
Dianne Hackborn03abb812010-01-04 18:43:19 -08003573 mRemote.transact(KILL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0);
3574 reply.readException();
3575 data.recycle();
3576 reply.recycle();
3577 }
Dianne Hackborne4d4fbc2011-11-08 11:53:28 -08003578
3579 public void killAllBackgroundProcesses() throws RemoteException {
3580 Parcel data = Parcel.obtain();
3581 Parcel reply = Parcel.obtain();
3582 data.writeInterfaceToken(IActivityManager.descriptor);
3583 mRemote.transact(KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0);
3584 reply.readException();
3585 data.recycle();
3586 reply.recycle();
3587 }
3588
Dianne Hackborn1676c852012-09-10 14:52:30 -07003589 public void forceStopPackage(String packageName, int userId) throws RemoteException {
Dianne Hackborn03abb812010-01-04 18:43:19 -08003590 Parcel data = Parcel.obtain();
3591 Parcel reply = Parcel.obtain();
3592 data.writeInterfaceToken(IActivityManager.descriptor);
3593 data.writeString(packageName);
Dianne Hackborn1676c852012-09-10 14:52:30 -07003594 data.writeInt(userId);
Dianne Hackborn03abb812010-01-04 18:43:19 -08003595 mRemote.transact(FORCE_STOP_PACKAGE_TRANSACTION, data, reply, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003596 reply.readException();
3597 data.recycle();
3598 reply.recycle();
3599 }
3600
Dianne Hackborn27ff9132012-03-06 14:57:58 -08003601 public void getMyMemoryState(ActivityManager.RunningAppProcessInfo outInfo)
3602 throws RemoteException
3603 {
3604 Parcel data = Parcel.obtain();
3605 Parcel reply = Parcel.obtain();
3606 data.writeInterfaceToken(IActivityManager.descriptor);
3607 mRemote.transact(GET_MY_MEMORY_STATE_TRANSACTION, data, reply, 0);
3608 reply.readException();
3609 outInfo.readFromParcel(reply);
3610 reply.recycle();
3611 data.recycle();
3612 }
3613
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003614 public ConfigurationInfo getDeviceConfigurationInfo() throws RemoteException
3615 {
3616 Parcel data = Parcel.obtain();
3617 Parcel reply = Parcel.obtain();
3618 data.writeInterfaceToken(IActivityManager.descriptor);
3619 mRemote.transact(GET_DEVICE_CONFIGURATION_TRANSACTION, data, reply, 0);
3620 reply.readException();
3621 ConfigurationInfo res = ConfigurationInfo.CREATOR.createFromParcel(reply);
3622 reply.recycle();
3623 data.recycle();
3624 return res;
3625 }
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003626
Dianne Hackborn1676c852012-09-10 14:52:30 -07003627 public boolean profileControl(String process, int userId, boolean start,
Romain Guy7eabe552011-07-21 14:56:34 -07003628 String path, ParcelFileDescriptor fd, int profileType) throws RemoteException
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003629 {
3630 Parcel data = Parcel.obtain();
3631 Parcel reply = Parcel.obtain();
3632 data.writeInterfaceToken(IActivityManager.descriptor);
3633 data.writeString(process);
Dianne Hackborn1676c852012-09-10 14:52:30 -07003634 data.writeInt(userId);
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003635 data.writeInt(start ? 1 : 0);
Romain Guy9a8c5ce2011-07-21 18:04:29 -07003636 data.writeInt(profileType);
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003637 data.writeString(path);
Dianne Hackborn9c8dd552009-06-23 19:22:52 -07003638 if (fd != null) {
3639 data.writeInt(1);
3640 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
3641 } else {
3642 data.writeInt(0);
3643 }
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003644 mRemote.transact(PROFILE_CONTROL_TRANSACTION, data, reply, 0);
3645 reply.readException();
3646 boolean res = reply.readInt() != 0;
3647 reply.recycle();
3648 data.recycle();
3649 return res;
3650 }
3651
Dianne Hackborn55280a92009-05-07 15:53:46 -07003652 public boolean shutdown(int timeout) throws RemoteException
3653 {
3654 Parcel data = Parcel.obtain();
3655 Parcel reply = Parcel.obtain();
3656 data.writeInterfaceToken(IActivityManager.descriptor);
3657 data.writeInt(timeout);
3658 mRemote.transact(SHUTDOWN_TRANSACTION, data, reply, 0);
3659 reply.readException();
3660 boolean res = reply.readInt() != 0;
3661 reply.recycle();
3662 data.recycle();
3663 return res;
3664 }
3665
Dianne Hackborn95fc68f2009-05-19 18:37:45 -07003666 public void stopAppSwitches() throws RemoteException {
3667 Parcel data = Parcel.obtain();
3668 Parcel reply = Parcel.obtain();
3669 data.writeInterfaceToken(IActivityManager.descriptor);
3670 mRemote.transact(STOP_APP_SWITCHES_TRANSACTION, data, reply, 0);
3671 reply.readException();
3672 reply.recycle();
3673 data.recycle();
3674 }
3675
3676 public void resumeAppSwitches() throws RemoteException {
3677 Parcel data = Parcel.obtain();
3678 Parcel reply = Parcel.obtain();
3679 data.writeInterfaceToken(IActivityManager.descriptor);
3680 mRemote.transact(RESUME_APP_SWITCHES_TRANSACTION, data, reply, 0);
3681 reply.readException();
3682 reply.recycle();
3683 data.recycle();
3684 }
3685
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003686 public void killApplicationWithAppId(String pkg, int appid) throws RemoteException {
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07003687 Parcel data = Parcel.obtain();
3688 Parcel reply = Parcel.obtain();
3689 data.writeInterfaceToken(IActivityManager.descriptor);
3690 data.writeString(pkg);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003691 data.writeInt(appid);
3692 mRemote.transact(KILL_APPLICATION_WITH_APPID_TRANSACTION, data, reply, 0);
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07003693 reply.readException();
3694 data.recycle();
3695 reply.recycle();
3696 }
Dianne Hackborna6ddc8a2009-07-28 17:49:55 -07003697
3698 public void closeSystemDialogs(String reason) throws RemoteException {
3699 Parcel data = Parcel.obtain();
3700 Parcel reply = Parcel.obtain();
3701 data.writeInterfaceToken(IActivityManager.descriptor);
3702 data.writeString(reason);
3703 mRemote.transact(CLOSE_SYSTEM_DIALOGS_TRANSACTION, data, reply, 0);
3704 reply.readException();
3705 data.recycle();
3706 reply.recycle();
3707 }
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003708
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07003709 public Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids)
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003710 throws RemoteException {
3711 Parcel data = Parcel.obtain();
3712 Parcel reply = Parcel.obtain();
3713 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07003714 data.writeIntArray(pids);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003715 mRemote.transact(GET_PROCESS_MEMORY_INFO_TRANSACTION, data, reply, 0);
3716 reply.readException();
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07003717 Debug.MemoryInfo[] res = reply.createTypedArray(Debug.MemoryInfo.CREATOR);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003718 data.recycle();
3719 reply.recycle();
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07003720 return res;
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003721 }
Christopher Tate5e1ab332009-09-01 20:32:49 -07003722
3723 public void killApplicationProcess(String processName, int uid) throws RemoteException {
3724 Parcel data = Parcel.obtain();
3725 Parcel reply = Parcel.obtain();
3726 data.writeInterfaceToken(IActivityManager.descriptor);
3727 data.writeString(processName);
3728 data.writeInt(uid);
3729 mRemote.transact(KILL_APPLICATION_PROCESS_TRANSACTION, data, reply, 0);
3730 reply.readException();
3731 data.recycle();
3732 reply.recycle();
3733 }
3734
Dianne Hackborn3b3e1452009-09-24 19:22:12 -07003735 public void overridePendingTransition(IBinder token, String packageName,
3736 int enterAnim, int exitAnim) throws RemoteException {
3737 Parcel data = Parcel.obtain();
3738 Parcel reply = Parcel.obtain();
3739 data.writeInterfaceToken(IActivityManager.descriptor);
3740 data.writeStrongBinder(token);
3741 data.writeString(packageName);
3742 data.writeInt(enterAnim);
3743 data.writeInt(exitAnim);
3744 mRemote.transact(OVERRIDE_PENDING_TRANSITION_TRANSACTION, data, reply, 0);
3745 reply.readException();
3746 data.recycle();
3747 reply.recycle();
3748 }
3749
Dianne Hackborn9327f4f2010-01-29 10:38:29 -08003750 public boolean isUserAMonkey() throws RemoteException {
3751 Parcel data = Parcel.obtain();
3752 Parcel reply = Parcel.obtain();
3753 data.writeInterfaceToken(IActivityManager.descriptor);
3754 mRemote.transact(IS_USER_A_MONKEY_TRANSACTION, data, reply, 0);
3755 reply.readException();
3756 boolean res = reply.readInt() != 0;
3757 data.recycle();
3758 reply.recycle();
3759 return res;
3760 }
Adam Momtaz8f6f1f42013-04-10 12:42:58 -07003761
3762 public void setUserIsMonkey(boolean monkey) throws RemoteException {
3763 Parcel data = Parcel.obtain();
3764 Parcel reply = Parcel.obtain();
3765 data.writeInterfaceToken(IActivityManager.descriptor);
3766 data.writeInt(monkey ? 1 : 0);
3767 mRemote.transact(SET_USER_IS_MONKEY_TRANSACTION, data, reply, 0);
3768 reply.readException();
3769 data.recycle();
3770 reply.recycle();
3771 }
3772
Dianne Hackborn860755f2010-06-03 18:47:52 -07003773 public void finishHeavyWeightApp() throws RemoteException {
3774 Parcel data = Parcel.obtain();
3775 Parcel reply = Parcel.obtain();
3776 data.writeInterfaceToken(IActivityManager.descriptor);
3777 mRemote.transact(FINISH_HEAVY_WEIGHT_APP_TRANSACTION, data, reply, 0);
3778 reply.readException();
3779 data.recycle();
3780 reply.recycle();
3781 }
3782
Daniel Sandler69a48172010-06-23 16:29:36 -04003783 public void setImmersive(IBinder token, boolean immersive)
3784 throws RemoteException {
3785 Parcel data = Parcel.obtain();
3786 Parcel reply = Parcel.obtain();
3787 data.writeInterfaceToken(IActivityManager.descriptor);
3788 data.writeStrongBinder(token);
3789 data.writeInt(immersive ? 1 : 0);
3790 mRemote.transact(SET_IMMERSIVE_TRANSACTION, data, reply, 0);
3791 reply.readException();
3792 data.recycle();
3793 reply.recycle();
3794 }
3795
3796 public boolean isImmersive(IBinder token)
3797 throws RemoteException {
3798 Parcel data = Parcel.obtain();
3799 Parcel reply = Parcel.obtain();
3800 data.writeInterfaceToken(IActivityManager.descriptor);
3801 data.writeStrongBinder(token);
3802 mRemote.transact(IS_IMMERSIVE_TRANSACTION, data, reply, 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04003803 reply.readException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07003804 boolean res = reply.readInt() == 1;
Daniel Sandler69a48172010-06-23 16:29:36 -04003805 data.recycle();
3806 reply.recycle();
3807 return res;
3808 }
3809
3810 public boolean isTopActivityImmersive()
3811 throws RemoteException {
3812 Parcel data = Parcel.obtain();
3813 Parcel reply = Parcel.obtain();
3814 data.writeInterfaceToken(IActivityManager.descriptor);
3815 mRemote.transact(IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION, data, reply, 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04003816 reply.readException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07003817 boolean res = reply.readInt() == 1;
Daniel Sandler69a48172010-06-23 16:29:36 -04003818 data.recycle();
3819 reply.recycle();
3820 return res;
3821 }
3822
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07003823 public void crashApplication(int uid, int initialPid, String packageName,
3824 String message) throws RemoteException {
3825 Parcel data = Parcel.obtain();
3826 Parcel reply = Parcel.obtain();
3827 data.writeInterfaceToken(IActivityManager.descriptor);
3828 data.writeInt(uid);
3829 data.writeInt(initialPid);
3830 data.writeString(packageName);
3831 data.writeString(message);
3832 mRemote.transact(CRASH_APPLICATION_TRANSACTION, data, reply, 0);
3833 reply.readException();
3834 data.recycle();
3835 reply.recycle();
3836 }
Andy McFadden824c5102010-07-09 16:26:57 -07003837
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003838 public String getProviderMimeType(Uri uri, int userId) throws RemoteException {
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07003839 Parcel data = Parcel.obtain();
3840 Parcel reply = Parcel.obtain();
3841 data.writeInterfaceToken(IActivityManager.descriptor);
3842 uri.writeToParcel(data, 0);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003843 data.writeInt(userId);
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07003844 mRemote.transact(GET_PROVIDER_MIME_TYPE_TRANSACTION, data, reply, 0);
3845 reply.readException();
3846 String res = reply.readString();
3847 data.recycle();
3848 reply.recycle();
3849 return res;
3850 }
3851
Dianne Hackborn7e269642010-08-25 19:50:20 -07003852 public IBinder newUriPermissionOwner(String name)
3853 throws RemoteException {
3854 Parcel data = Parcel.obtain();
3855 Parcel reply = Parcel.obtain();
3856 data.writeInterfaceToken(IActivityManager.descriptor);
3857 data.writeString(name);
3858 mRemote.transact(NEW_URI_PERMISSION_OWNER_TRANSACTION, data, reply, 0);
3859 reply.readException();
3860 IBinder res = reply.readStrongBinder();
3861 data.recycle();
3862 reply.recycle();
3863 return res;
3864 }
3865
3866 public void grantUriPermissionFromOwner(IBinder owner, int fromUid, String targetPkg,
3867 Uri uri, int mode) throws RemoteException {
3868 Parcel data = Parcel.obtain();
3869 Parcel reply = Parcel.obtain();
3870 data.writeInterfaceToken(IActivityManager.descriptor);
3871 data.writeStrongBinder(owner);
3872 data.writeInt(fromUid);
3873 data.writeString(targetPkg);
3874 uri.writeToParcel(data, 0);
3875 data.writeInt(mode);
3876 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0);
3877 reply.readException();
3878 data.recycle();
3879 reply.recycle();
3880 }
3881
3882 public void revokeUriPermissionFromOwner(IBinder owner, Uri uri,
3883 int mode) throws RemoteException {
3884 Parcel data = Parcel.obtain();
3885 Parcel reply = Parcel.obtain();
3886 data.writeInterfaceToken(IActivityManager.descriptor);
3887 data.writeStrongBinder(owner);
3888 if (uri != null) {
3889 data.writeInt(1);
3890 uri.writeToParcel(data, 0);
3891 } else {
3892 data.writeInt(0);
3893 }
3894 data.writeInt(mode);
3895 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0);
3896 reply.readException();
3897 data.recycle();
3898 reply.recycle();
3899 }
Dianne Hackbornc8f84972010-08-25 23:14:44 -07003900
Dianne Hackborn90f4aaf2010-09-27 14:58:44 -07003901 public int checkGrantUriPermission(int callingUid, String targetPkg,
3902 Uri uri, int modeFlags) throws RemoteException {
3903 Parcel data = Parcel.obtain();
3904 Parcel reply = Parcel.obtain();
3905 data.writeInterfaceToken(IActivityManager.descriptor);
3906 data.writeInt(callingUid);
3907 data.writeString(targetPkg);
3908 uri.writeToParcel(data, 0);
3909 data.writeInt(modeFlags);
3910 mRemote.transact(CHECK_GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0);
3911 reply.readException();
3912 int res = reply.readInt();
3913 data.recycle();
3914 reply.recycle();
3915 return res;
3916 }
3917
Dianne Hackborn1676c852012-09-10 14:52:30 -07003918 public boolean dumpHeap(String process, int userId, boolean managed,
Andy McFadden824c5102010-07-09 16:26:57 -07003919 String path, ParcelFileDescriptor fd) throws RemoteException {
3920 Parcel data = Parcel.obtain();
3921 Parcel reply = Parcel.obtain();
3922 data.writeInterfaceToken(IActivityManager.descriptor);
3923 data.writeString(process);
Dianne Hackborn1676c852012-09-10 14:52:30 -07003924 data.writeInt(userId);
Andy McFadden824c5102010-07-09 16:26:57 -07003925 data.writeInt(managed ? 1 : 0);
3926 data.writeString(path);
3927 if (fd != null) {
3928 data.writeInt(1);
3929 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
3930 } else {
3931 data.writeInt(0);
3932 }
3933 mRemote.transact(DUMP_HEAP_TRANSACTION, data, reply, 0);
3934 reply.readException();
3935 boolean res = reply.readInt() != 0;
3936 reply.recycle();
3937 data.recycle();
3938 return res;
3939 }
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07003940
Dianne Hackbornf265ea92013-01-31 15:00:51 -08003941 public int startActivities(IApplicationThread caller, String callingPackage,
Dianne Hackborna4972e92012-03-14 10:38:05 -07003942 Intent[] intents, String[] resolvedTypes, IBinder resultTo,
Amith Yamasaniea7e9152012-09-24 16:11:18 -07003943 Bundle options, int userId) throws RemoteException {
Dianne Hackborn621e17d2010-11-22 15:59:56 -08003944 Parcel data = Parcel.obtain();
3945 Parcel reply = Parcel.obtain();
3946 data.writeInterfaceToken(IActivityManager.descriptor);
3947 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08003948 data.writeString(callingPackage);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08003949 data.writeTypedArray(intents, 0);
3950 data.writeStringArray(resolvedTypes);
3951 data.writeStrongBinder(resultTo);
Dianne Hackborna4972e92012-03-14 10:38:05 -07003952 if (options != null) {
3953 data.writeInt(1);
3954 options.writeToParcel(data, 0);
3955 } else {
3956 data.writeInt(0);
3957 }
Amith Yamasaniea7e9152012-09-24 16:11:18 -07003958 data.writeInt(userId);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08003959 mRemote.transact(START_ACTIVITIES_TRANSACTION, data, reply, 0);
3960 reply.readException();
3961 int result = reply.readInt();
3962 reply.recycle();
3963 data.recycle();
3964 return result;
3965 }
3966
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07003967 public int getFrontActivityScreenCompatMode() throws RemoteException {
3968 Parcel data = Parcel.obtain();
3969 Parcel reply = Parcel.obtain();
3970 data.writeInterfaceToken(IActivityManager.descriptor);
3971 mRemote.transact(GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
3972 reply.readException();
3973 int mode = reply.readInt();
3974 reply.recycle();
3975 data.recycle();
3976 return mode;
3977 }
3978
3979 public void setFrontActivityScreenCompatMode(int mode) throws RemoteException {
3980 Parcel data = Parcel.obtain();
3981 Parcel reply = Parcel.obtain();
3982 data.writeInterfaceToken(IActivityManager.descriptor);
3983 data.writeInt(mode);
3984 mRemote.transact(SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
3985 reply.readException();
3986 reply.recycle();
3987 data.recycle();
3988 }
3989
3990 public int getPackageScreenCompatMode(String packageName) throws RemoteException {
3991 Parcel data = Parcel.obtain();
3992 Parcel reply = Parcel.obtain();
3993 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn36cd41f2011-05-25 21:00:46 -07003994 data.writeString(packageName);
3995 mRemote.transact(GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07003996 reply.readException();
3997 int mode = reply.readInt();
3998 reply.recycle();
3999 data.recycle();
4000 return mode;
4001 }
4002
4003 public void setPackageScreenCompatMode(String packageName, int mode)
Dianne Hackborne2515ee2011-04-27 18:52:56 -04004004 throws RemoteException {
4005 Parcel data = Parcel.obtain();
4006 Parcel reply = Parcel.obtain();
4007 data.writeInterfaceToken(IActivityManager.descriptor);
4008 data.writeString(packageName);
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07004009 data.writeInt(mode);
Dianne Hackborne2515ee2011-04-27 18:52:56 -04004010 mRemote.transact(SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
4011 reply.readException();
4012 reply.recycle();
4013 data.recycle();
4014 }
4015
Dianne Hackborn36cd41f2011-05-25 21:00:46 -07004016 public boolean getPackageAskScreenCompat(String packageName) throws RemoteException {
4017 Parcel data = Parcel.obtain();
4018 Parcel reply = Parcel.obtain();
4019 data.writeInterfaceToken(IActivityManager.descriptor);
4020 data.writeString(packageName);
4021 mRemote.transact(GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0);
4022 reply.readException();
4023 boolean ask = reply.readInt() != 0;
4024 reply.recycle();
4025 data.recycle();
4026 return ask;
4027 }
4028
4029 public void setPackageAskScreenCompat(String packageName, boolean ask)
4030 throws RemoteException {
4031 Parcel data = Parcel.obtain();
4032 Parcel reply = Parcel.obtain();
4033 data.writeInterfaceToken(IActivityManager.descriptor);
4034 data.writeString(packageName);
4035 data.writeInt(ask ? 1 : 0);
4036 mRemote.transact(SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0);
4037 reply.readException();
4038 reply.recycle();
4039 data.recycle();
4040 }
4041
Amith Yamasani4b2e9342011-03-31 12:38:53 -07004042 public boolean switchUser(int userid) throws RemoteException {
4043 Parcel data = Parcel.obtain();
4044 Parcel reply = Parcel.obtain();
4045 data.writeInterfaceToken(IActivityManager.descriptor);
4046 data.writeInt(userid);
4047 mRemote.transact(SWITCH_USER_TRANSACTION, data, reply, 0);
4048 reply.readException();
4049 boolean result = reply.readInt() != 0;
4050 reply.recycle();
4051 data.recycle();
4052 return result;
4053 }
Amith Yamasani52f1d752012-03-28 18:19:29 -07004054
Dianne Hackborn80a4af22012-08-27 19:18:31 -07004055 public int stopUser(int userid, IStopUserCallback callback) throws RemoteException {
4056 Parcel data = Parcel.obtain();
4057 Parcel reply = Parcel.obtain();
4058 data.writeInterfaceToken(IActivityManager.descriptor);
4059 data.writeInt(userid);
4060 data.writeStrongInterface(callback);
4061 mRemote.transact(STOP_USER_TRANSACTION, data, reply, 0);
4062 reply.readException();
4063 int result = reply.readInt();
4064 reply.recycle();
4065 data.recycle();
4066 return result;
4067 }
4068
Amith Yamasani52f1d752012-03-28 18:19:29 -07004069 public UserInfo getCurrentUser() throws RemoteException {
4070 Parcel data = Parcel.obtain();
4071 Parcel reply = Parcel.obtain();
4072 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn80a4af22012-08-27 19:18:31 -07004073 mRemote.transact(GET_CURRENT_USER_TRANSACTION, data, reply, 0);
Amith Yamasani52f1d752012-03-28 18:19:29 -07004074 reply.readException();
4075 UserInfo userInfo = UserInfo.CREATOR.createFromParcel(reply);
4076 reply.recycle();
4077 data.recycle();
4078 return userInfo;
4079 }
4080
Dianne Hackborna8a9bd62012-10-09 15:36:59 -07004081 public boolean isUserRunning(int userid, boolean orStopping) throws RemoteException {
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07004082 Parcel data = Parcel.obtain();
4083 Parcel reply = Parcel.obtain();
4084 data.writeInterfaceToken(IActivityManager.descriptor);
4085 data.writeInt(userid);
Dianne Hackborna8a9bd62012-10-09 15:36:59 -07004086 data.writeInt(orStopping ? 1 : 0);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07004087 mRemote.transact(IS_USER_RUNNING_TRANSACTION, data, reply, 0);
4088 reply.readException();
4089 boolean result = reply.readInt() != 0;
4090 reply.recycle();
4091 data.recycle();
4092 return result;
4093 }
4094
Dianne Hackbornc72fc672012-09-20 13:12:03 -07004095 public int[] getRunningUserIds() throws RemoteException {
4096 Parcel data = Parcel.obtain();
4097 Parcel reply = Parcel.obtain();
4098 data.writeInterfaceToken(IActivityManager.descriptor);
4099 mRemote.transact(GET_RUNNING_USER_IDS_TRANSACTION, data, reply, 0);
4100 reply.readException();
4101 int[] result = reply.createIntArray();
4102 reply.recycle();
4103 data.recycle();
4104 return result;
4105 }
4106
Dianne Hackborn0c5001d2011-04-12 18:16:08 -07004107 public boolean removeSubTask(int taskId, int subTaskIndex) throws RemoteException {
4108 Parcel data = Parcel.obtain();
4109 Parcel reply = Parcel.obtain();
4110 data.writeInterfaceToken(IActivityManager.descriptor);
4111 data.writeInt(taskId);
4112 data.writeInt(subTaskIndex);
4113 mRemote.transact(REMOVE_SUB_TASK_TRANSACTION, data, reply, 0);
4114 reply.readException();
4115 boolean result = reply.readInt() != 0;
4116 reply.recycle();
4117 data.recycle();
4118 return result;
4119 }
4120
4121 public boolean removeTask(int taskId, int flags) throws RemoteException {
4122 Parcel data = Parcel.obtain();
4123 Parcel reply = Parcel.obtain();
4124 data.writeInterfaceToken(IActivityManager.descriptor);
4125 data.writeInt(taskId);
4126 data.writeInt(flags);
4127 mRemote.transact(REMOVE_TASK_TRANSACTION, data, reply, 0);
4128 reply.readException();
4129 boolean result = reply.readInt() != 0;
4130 reply.recycle();
4131 data.recycle();
4132 return result;
4133 }
Amith Yamasani4b2e9342011-03-31 12:38:53 -07004134
Jeff Sharkeya4620792011-05-20 15:29:23 -07004135 public void registerProcessObserver(IProcessObserver observer) throws RemoteException {
4136 Parcel data = Parcel.obtain();
4137 Parcel reply = Parcel.obtain();
4138 data.writeInterfaceToken(IActivityManager.descriptor);
4139 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
4140 mRemote.transact(REGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0);
4141 reply.readException();
4142 data.recycle();
4143 reply.recycle();
4144 }
4145
4146 public void unregisterProcessObserver(IProcessObserver observer) throws RemoteException {
4147 Parcel data = Parcel.obtain();
4148 Parcel reply = Parcel.obtain();
4149 data.writeInterfaceToken(IActivityManager.descriptor);
4150 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
4151 mRemote.transact(UNREGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0);
4152 reply.readException();
4153 data.recycle();
4154 reply.recycle();
4155 }
4156
Dianne Hackborn6c418d52011-06-29 14:05:33 -07004157 public boolean isIntentSenderTargetedToPackage(IIntentSender sender) throws RemoteException {
4158 Parcel data = Parcel.obtain();
4159 Parcel reply = Parcel.obtain();
4160 data.writeInterfaceToken(IActivityManager.descriptor);
4161 data.writeStrongBinder(sender.asBinder());
4162 mRemote.transact(IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION, data, reply, 0);
4163 reply.readException();
4164 boolean res = reply.readInt() != 0;
4165 data.recycle();
4166 reply.recycle();
4167 return res;
4168 }
4169
Dianne Hackborn1927ae82012-06-22 15:21:36 -07004170 public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException {
4171 Parcel data = Parcel.obtain();
4172 Parcel reply = Parcel.obtain();
4173 data.writeInterfaceToken(IActivityManager.descriptor);
4174 data.writeStrongBinder(sender.asBinder());
4175 mRemote.transact(IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION, data, reply, 0);
4176 reply.readException();
4177 boolean res = reply.readInt() != 0;
4178 data.recycle();
4179 reply.recycle();
4180 return res;
4181 }
4182
Dianne Hackborn81038902012-11-26 17:04:09 -08004183 public Intent getIntentForIntentSender(IIntentSender sender) throws RemoteException {
4184 Parcel data = Parcel.obtain();
4185 Parcel reply = Parcel.obtain();
4186 data.writeInterfaceToken(IActivityManager.descriptor);
4187 data.writeStrongBinder(sender.asBinder());
4188 mRemote.transact(GET_INTENT_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0);
4189 reply.readException();
4190 Intent res = reply.readInt() != 0
4191 ? Intent.CREATOR.createFromParcel(reply) : null;
4192 data.recycle();
4193 reply.recycle();
4194 return res;
4195 }
4196
Dianne Hackborn31ca8542011-07-19 14:58:28 -07004197 public void updatePersistentConfiguration(Configuration values) throws RemoteException
4198 {
4199 Parcel data = Parcel.obtain();
4200 Parcel reply = Parcel.obtain();
4201 data.writeInterfaceToken(IActivityManager.descriptor);
4202 values.writeToParcel(data, 0);
4203 mRemote.transact(UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION, data, reply, 0);
4204 reply.readException();
4205 data.recycle();
4206 reply.recycle();
4207 }
4208
Dianne Hackbornb437e092011-08-05 17:50:29 -07004209 public long[] getProcessPss(int[] pids) throws RemoteException {
4210 Parcel data = Parcel.obtain();
4211 Parcel reply = Parcel.obtain();
4212 data.writeInterfaceToken(IActivityManager.descriptor);
4213 data.writeIntArray(pids);
4214 mRemote.transact(GET_PROCESS_PSS_TRANSACTION, data, reply, 0);
4215 reply.readException();
4216 long[] res = reply.createLongArray();
4217 data.recycle();
4218 reply.recycle();
4219 return res;
4220 }
4221
Dianne Hackborn661cd522011-08-22 00:26:20 -07004222 public void showBootMessage(CharSequence msg, boolean always) throws RemoteException {
4223 Parcel data = Parcel.obtain();
4224 Parcel reply = Parcel.obtain();
4225 data.writeInterfaceToken(IActivityManager.descriptor);
4226 TextUtils.writeToParcel(msg, data, 0);
4227 data.writeInt(always ? 1 : 0);
4228 mRemote.transact(SHOW_BOOT_MESSAGE_TRANSACTION, data, reply, 0);
4229 reply.readException();
4230 data.recycle();
4231 reply.recycle();
4232 }
4233
Dianne Hackborn90c52de2011-09-23 12:57:44 -07004234 public void dismissKeyguardOnNextActivity() throws RemoteException {
4235 Parcel data = Parcel.obtain();
4236 Parcel reply = Parcel.obtain();
4237 data.writeInterfaceToken(IActivityManager.descriptor);
4238 mRemote.transact(DISMISS_KEYGUARD_ON_NEXT_ACTIVITY_TRANSACTION, data, reply, 0);
4239 reply.readException();
4240 data.recycle();
4241 reply.recycle();
4242 }
4243
Adam Powelldd8fab22012-03-22 17:47:27 -07004244 public boolean targetTaskAffinityMatchesActivity(IBinder token, String destAffinity)
4245 throws RemoteException {
4246 Parcel data = Parcel.obtain();
4247 Parcel reply = Parcel.obtain();
4248 data.writeInterfaceToken(IActivityManager.descriptor);
4249 data.writeStrongBinder(token);
4250 data.writeString(destAffinity);
4251 mRemote.transact(TARGET_TASK_AFFINITY_MATCHES_ACTIVITY_TRANSACTION, data, reply, 0);
4252 reply.readException();
4253 boolean result = reply.readInt() != 0;
4254 data.recycle();
4255 reply.recycle();
4256 return result;
4257 }
4258
4259 public boolean navigateUpTo(IBinder token, Intent target, int resultCode, Intent resultData)
4260 throws RemoteException {
4261 Parcel data = Parcel.obtain();
4262 Parcel reply = Parcel.obtain();
4263 data.writeInterfaceToken(IActivityManager.descriptor);
4264 data.writeStrongBinder(token);
4265 target.writeToParcel(data, 0);
4266 data.writeInt(resultCode);
4267 if (resultData != null) {
4268 data.writeInt(1);
4269 resultData.writeToParcel(data, 0);
4270 } else {
4271 data.writeInt(0);
4272 }
4273 mRemote.transact(NAVIGATE_UP_TO_TRANSACTION, data, reply, 0);
4274 reply.readException();
4275 boolean result = reply.readInt() != 0;
4276 data.recycle();
4277 reply.recycle();
4278 return result;
4279 }
4280
Dianne Hackborn5320eb82012-05-18 12:05:04 -07004281 public int getLaunchedFromUid(IBinder activityToken) throws RemoteException {
4282 Parcel data = Parcel.obtain();
4283 Parcel reply = Parcel.obtain();
4284 data.writeInterfaceToken(IActivityManager.descriptor);
4285 data.writeStrongBinder(activityToken);
4286 mRemote.transact(GET_LAUNCHED_FROM_UID_TRANSACTION, data, reply, 0);
4287 reply.readException();
4288 int result = reply.readInt();
4289 data.recycle();
4290 reply.recycle();
4291 return result;
4292 }
4293
Dianne Hackbornf265ea92013-01-31 15:00:51 -08004294 public String getLaunchedFromPackage(IBinder activityToken) throws RemoteException {
4295 Parcel data = Parcel.obtain();
4296 Parcel reply = Parcel.obtain();
4297 data.writeInterfaceToken(IActivityManager.descriptor);
4298 data.writeStrongBinder(activityToken);
4299 mRemote.transact(GET_LAUNCHED_FROM_PACKAGE_TRANSACTION, data, reply, 0);
4300 reply.readException();
4301 String result = reply.readString();
4302 data.recycle();
4303 reply.recycle();
4304 return result;
4305 }
4306
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07004307 public void registerUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException {
4308 Parcel data = Parcel.obtain();
4309 Parcel reply = Parcel.obtain();
4310 data.writeInterfaceToken(IActivityManager.descriptor);
4311 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
4312 mRemote.transact(REGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0);
4313 reply.readException();
4314 data.recycle();
4315 reply.recycle();
4316 }
4317
4318 public void unregisterUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException {
4319 Parcel data = Parcel.obtain();
4320 Parcel reply = Parcel.obtain();
4321 data.writeInterfaceToken(IActivityManager.descriptor);
4322 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
4323 mRemote.transact(UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0);
4324 reply.readException();
4325 data.recycle();
4326 reply.recycle();
4327 }
4328
Dianne Hackbornd4ac8d72012-09-27 23:20:10 -07004329 public void requestBugReport() throws RemoteException {
4330 Parcel data = Parcel.obtain();
4331 Parcel reply = Parcel.obtain();
4332 data.writeInterfaceToken(IActivityManager.descriptor);
4333 mRemote.transact(REQUEST_BUG_REPORT_TRANSACTION, data, reply, 0);
4334 reply.readException();
4335 data.recycle();
4336 reply.recycle();
4337 }
4338
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07004339 public long inputDispatchingTimedOut(int pid, boolean aboveSystem) throws RemoteException {
4340 Parcel data = Parcel.obtain();
4341 Parcel reply = Parcel.obtain();
4342 data.writeInterfaceToken(IActivityManager.descriptor);
4343 data.writeInt(pid);
4344 data.writeInt(aboveSystem ? 1 : 0);
4345 mRemote.transact(INPUT_DISPATCHING_TIMED_OUT_TRANSACTION, data, reply, 0);
4346 reply.readException();
4347 long res = reply.readInt();
4348 data.recycle();
4349 reply.recycle();
4350 return res;
4351 }
4352
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08004353 public Bundle getTopActivityExtras(int requestType) throws RemoteException {
4354 Parcel data = Parcel.obtain();
4355 Parcel reply = Parcel.obtain();
4356 data.writeInterfaceToken(IActivityManager.descriptor);
4357 data.writeInt(requestType);
4358 mRemote.transact(GET_TOP_ACTIVITY_EXTRAS_TRANSACTION, data, reply, 0);
4359 reply.readException();
4360 Bundle res = reply.readBundle();
4361 data.recycle();
4362 reply.recycle();
4363 return res;
4364 }
4365
4366 public void reportTopActivityExtras(IBinder token, Bundle extras) throws RemoteException {
4367 Parcel data = Parcel.obtain();
4368 Parcel reply = Parcel.obtain();
4369 data.writeInterfaceToken(IActivityManager.descriptor);
4370 data.writeStrongBinder(token);
4371 data.writeBundle(extras);
4372 mRemote.transact(REPORT_TOP_ACTIVITY_EXTRAS_TRANSACTION, data, reply, 0);
4373 reply.readException();
4374 data.recycle();
4375 reply.recycle();
4376 }
4377
Dianne Hackbornf1b78242013-04-08 22:28:59 -07004378 public void killUid(int uid, String reason) throws RemoteException {
4379 Parcel data = Parcel.obtain();
4380 Parcel reply = Parcel.obtain();
4381 data.writeInterfaceToken(IActivityManager.descriptor);
4382 data.writeInt(uid);
4383 data.writeString(reason);
4384 mRemote.transact(KILL_UID_TRANSACTION, data, reply, 0);
4385 reply.readException();
4386 data.recycle();
4387 reply.recycle();
4388 }
4389
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004390 private IBinder mRemote;
4391}