blob: 57da21e770cb4f6f636c0c3ecf54244495f2d9b7 [file] [log] [blame]
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001/*
2 * Copyright (C) 2006 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.app;
18
Craig Mautnerbdc748af2013-12-02 14:08:25 -080019import android.app.ActivityManager.StackInfo;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080020import android.content.ComponentName;
Adam Powelldd8fab22012-03-22 17:47:27 -070021import android.content.IIntentReceiver;
22import android.content.IIntentSender;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080023import android.content.Intent;
24import android.content.IntentFilter;
Dianne Hackbornfa82f222009-09-17 15:14:12 -070025import android.content.IntentSender;
Jeff Sharkeye66c1772013-09-20 14:30:59 -070026import android.content.UriPermission;
Christopher Tate181fafa2009-05-14 11:12:14 -070027import android.content.pm.ApplicationInfo;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080028import android.content.pm.ConfigurationInfo;
29import android.content.pm.IPackageDataObserver;
Jeff Sharkeye66c1772013-09-20 14:30:59 -070030import android.content.pm.ParceledListSlice;
Amith Yamasani52f1d752012-03-28 18:19:29 -070031import android.content.pm.UserInfo;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080032import android.content.res.Configuration;
33import android.graphics.Bitmap;
Craig Mautnerbdc748af2013-12-02 14:08:25 -080034import android.graphics.Rect;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080035import android.net.Uri;
36import android.os.Binder;
37import android.os.Bundle;
Dianne Hackborn3025ef32009-08-31 21:31:47 -070038import android.os.Debug;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080039import android.os.IBinder;
40import android.os.Parcel;
Adam Powelldd8fab22012-03-22 17:47:27 -070041import android.os.ParcelFileDescriptor;
42import android.os.Parcelable;
43import android.os.RemoteException;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080044import android.os.ServiceManager;
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -070045import android.os.StrictMode;
Dianne Hackborn91097de2014-04-04 18:02:06 -070046import android.service.voice.IVoiceInteractionSession;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080047import android.text.TextUtils;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080048import android.util.Log;
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080049import android.util.Singleton;
Dianne Hackborn91097de2014-04-04 18:02:06 -070050import com.android.internal.app.IVoiceInteractor;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080051
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080052import java.util.ArrayList;
53import java.util.List;
54
55/** {@hide} */
56public abstract class ActivityManagerNative extends Binder implements IActivityManager
57{
58 /**
59 * Cast a Binder object into an activity manager interface, generating
60 * a proxy if needed.
61 */
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080062 static public IActivityManager asInterface(IBinder obj) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080063 if (obj == null) {
64 return null;
65 }
66 IActivityManager in =
67 (IActivityManager)obj.queryLocalInterface(descriptor);
68 if (in != null) {
69 return in;
70 }
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080071
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080072 return new ActivityManagerProxy(obj);
73 }
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080074
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080075 /**
76 * Retrieve the system's default/global activity manager.
77 */
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080078 static public IActivityManager getDefault() {
79 return gDefault.get();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080080 }
81
82 /**
83 * Convenience for checking whether the system is ready. For internal use only.
84 */
85 static public boolean isSystemReady() {
86 if (!sSystemReady) {
87 sSystemReady = getDefault().testIsSystemReady();
88 }
89 return sSystemReady;
90 }
91 static boolean sSystemReady = false;
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -080092
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080093 /**
94 * Convenience for sending a sticky broadcast. For internal use only.
95 * If you don't care about permission, use null.
96 */
Dianne Hackborn5ac72a22012-08-29 18:32:08 -070097 static public void broadcastStickyIntent(Intent intent, String permission, int userId) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080098 try {
99 getDefault().broadcastIntent(
100 null, intent, null, null, Activity.RESULT_OK, null, null,
Dianne Hackbornf51f6122013-02-04 18:23:34 -0800101 null /*permission*/, AppOpsManager.OP_NONE, false, true, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800102 } catch (RemoteException ex) {
103 }
104 }
105
Dianne Hackborn099bc622014-01-22 13:39:16 -0800106 static public void noteWakeupAlarm(PendingIntent ps, int sourceUid, String sourcePkg) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800107 try {
Dianne Hackborn099bc622014-01-22 13:39:16 -0800108 getDefault().noteWakeupAlarm(ps.getTarget(), sourceUid, sourcePkg);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800109 } catch (RemoteException ex) {
110 }
111 }
112
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -0800113 public ActivityManagerNative() {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800114 attachInterface(this, descriptor);
115 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700116
117 @Override
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800118 public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
119 throws RemoteException {
120 switch (code) {
121 case START_ACTIVITY_TRANSACTION:
122 {
123 data.enforceInterface(IActivityManager.descriptor);
124 IBinder b = data.readStrongBinder();
125 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800126 String callingPackage = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800127 Intent intent = Intent.CREATOR.createFromParcel(data);
128 String resolvedType = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800129 IBinder resultTo = data.readStrongBinder();
Siva Velusamy92a8b222012-03-09 16:24:04 -0800130 String resultWho = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800131 int requestCode = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700132 int startFlags = data.readInt();
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700133 String profileFile = data.readString();
134 ParcelFileDescriptor profileFd = data.readInt() != 0
135 ? data.readFileDescriptor() : null;
Dianne Hackborna4972e92012-03-14 10:38:05 -0700136 Bundle options = data.readInt() != 0
137 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800138 int result = startActivity(app, callingPackage, intent, resolvedType,
Dianne Hackborna4972e92012-03-14 10:38:05 -0700139 resultTo, resultWho, requestCode, startFlags,
140 profileFile, profileFd, options);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800141 reply.writeNoException();
142 reply.writeInt(result);
143 return true;
144 }
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700145
Amith Yamasani82644082012-08-03 13:09:11 -0700146 case START_ACTIVITY_AS_USER_TRANSACTION:
147 {
148 data.enforceInterface(IActivityManager.descriptor);
149 IBinder b = data.readStrongBinder();
150 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800151 String callingPackage = data.readString();
Amith Yamasani82644082012-08-03 13:09:11 -0700152 Intent intent = Intent.CREATOR.createFromParcel(data);
153 String resolvedType = data.readString();
154 IBinder resultTo = data.readStrongBinder();
155 String resultWho = data.readString();
156 int requestCode = data.readInt();
157 int startFlags = data.readInt();
158 String profileFile = data.readString();
159 ParcelFileDescriptor profileFd = data.readInt() != 0
Amith Yamasanic2be0d62013-09-23 11:16:28 -0700160 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null;
Amith Yamasani82644082012-08-03 13:09:11 -0700161 Bundle options = data.readInt() != 0
162 ? Bundle.CREATOR.createFromParcel(data) : null;
163 int userId = data.readInt();
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800164 int result = startActivityAsUser(app, callingPackage, intent, resolvedType,
Amith Yamasani82644082012-08-03 13:09:11 -0700165 resultTo, resultWho, requestCode, startFlags,
166 profileFile, profileFd, options, userId);
167 reply.writeNoException();
168 reply.writeInt(result);
169 return true;
170 }
171
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800172 case START_ACTIVITY_AND_WAIT_TRANSACTION:
173 {
174 data.enforceInterface(IActivityManager.descriptor);
175 IBinder b = data.readStrongBinder();
176 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800177 String callingPackage = data.readString();
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800178 Intent intent = Intent.CREATOR.createFromParcel(data);
179 String resolvedType = data.readString();
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800180 IBinder resultTo = data.readStrongBinder();
Siva Velusamy92a8b222012-03-09 16:24:04 -0800181 String resultWho = data.readString();
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800182 int requestCode = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700183 int startFlags = data.readInt();
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700184 String profileFile = data.readString();
185 ParcelFileDescriptor profileFd = data.readInt() != 0
Amith Yamasanic2be0d62013-09-23 11:16:28 -0700186 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null;
Dianne Hackborna4972e92012-03-14 10:38:05 -0700187 Bundle options = data.readInt() != 0
188 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -0700189 int userId = data.readInt();
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800190 WaitResult result = startActivityAndWait(app, callingPackage, intent, resolvedType,
Dianne Hackborna4972e92012-03-14 10:38:05 -0700191 resultTo, resultWho, requestCode, startFlags,
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -0700192 profileFile, profileFd, options, userId);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -0800193 reply.writeNoException();
194 result.writeToParcel(reply, 0);
195 return true;
196 }
197
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700198 case START_ACTIVITY_WITH_CONFIG_TRANSACTION:
199 {
200 data.enforceInterface(IActivityManager.descriptor);
201 IBinder b = data.readStrongBinder();
202 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800203 String callingPackage = data.readString();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700204 Intent intent = Intent.CREATOR.createFromParcel(data);
205 String resolvedType = data.readString();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700206 IBinder resultTo = data.readStrongBinder();
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700207 String resultWho = data.readString();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700208 int requestCode = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700209 int startFlags = data.readInt();
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700210 Configuration config = Configuration.CREATOR.createFromParcel(data);
Dianne Hackborna4972e92012-03-14 10:38:05 -0700211 Bundle options = data.readInt() != 0
212 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackborn41203752012-08-31 14:05:51 -0700213 int userId = data.readInt();
Dianne Hackbornf265ea92013-01-31 15:00:51 -0800214 int result = startActivityWithConfig(app, callingPackage, intent, resolvedType,
Dianne Hackborn41203752012-08-31 14:05:51 -0700215 resultTo, resultWho, requestCode, startFlags, config, options, userId);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -0700216 reply.writeNoException();
217 reply.writeInt(result);
218 return true;
219 }
220
Dianne Hackbornfa82f222009-09-17 15:14:12 -0700221 case START_ACTIVITY_INTENT_SENDER_TRANSACTION:
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700222 {
223 data.enforceInterface(IActivityManager.descriptor);
224 IBinder b = data.readStrongBinder();
225 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornfa82f222009-09-17 15:14:12 -0700226 IntentSender intent = IntentSender.CREATOR.createFromParcel(data);
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700227 Intent fillInIntent = null;
228 if (data.readInt() != 0) {
229 fillInIntent = Intent.CREATOR.createFromParcel(data);
230 }
231 String resolvedType = data.readString();
232 IBinder resultTo = data.readStrongBinder();
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700233 String resultWho = data.readString();
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700234 int requestCode = data.readInt();
235 int flagsMask = data.readInt();
236 int flagsValues = data.readInt();
Dianne Hackborna4972e92012-03-14 10:38:05 -0700237 Bundle options = data.readInt() != 0
238 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackbornfa82f222009-09-17 15:14:12 -0700239 int result = startActivityIntentSender(app, intent,
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700240 fillInIntent, resolvedType, resultTo, resultWho,
Dianne Hackborna4972e92012-03-14 10:38:05 -0700241 requestCode, flagsMask, flagsValues, options);
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -0700242 reply.writeNoException();
243 reply.writeInt(result);
244 return true;
245 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700246
Dianne Hackborn91097de2014-04-04 18:02:06 -0700247 case START_VOICE_ACTIVITY_TRANSACTION:
248 {
249 data.enforceInterface(IActivityManager.descriptor);
250 String callingPackage = data.readString();
251 int callingPid = data.readInt();
252 int callingUid = data.readInt();
253 Intent intent = Intent.CREATOR.createFromParcel(data);
254 String resolvedType = data.readString();
255 IVoiceInteractionSession session = IVoiceInteractionSession.Stub.asInterface(
256 data.readStrongBinder());
257 IVoiceInteractor interactor = IVoiceInteractor.Stub.asInterface(
258 data.readStrongBinder());
259 int startFlags = data.readInt();
260 String profileFile = data.readString();
261 ParcelFileDescriptor profileFd = data.readInt() != 0
262 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null;
263 Bundle options = data.readInt() != 0
264 ? Bundle.CREATOR.createFromParcel(data) : null;
265 int userId = data.readInt();
266 int result = startVoiceActivity(callingPackage, callingPid, callingUid,
267 intent, resolvedType, session, interactor, startFlags,
268 profileFile, profileFd, options, userId);
269 reply.writeNoException();
270 reply.writeInt(result);
271 return true;
272 }
273
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800274 case START_NEXT_MATCHING_ACTIVITY_TRANSACTION:
275 {
276 data.enforceInterface(IActivityManager.descriptor);
277 IBinder callingActivity = data.readStrongBinder();
278 Intent intent = Intent.CREATOR.createFromParcel(data);
Dianne Hackborna4972e92012-03-14 10:38:05 -0700279 Bundle options = data.readInt() != 0
280 ? Bundle.CREATOR.createFromParcel(data) : null;
281 boolean result = startNextMatchingActivity(callingActivity, intent, options);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800282 reply.writeNoException();
283 reply.writeInt(result ? 1 : 0);
284 return true;
285 }
Dianne Hackbornecc5a9c2012-04-26 18:56:09 -0700286
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800287 case FINISH_ACTIVITY_TRANSACTION: {
288 data.enforceInterface(IActivityManager.descriptor);
289 IBinder token = data.readStrongBinder();
290 Intent resultData = null;
291 int resultCode = data.readInt();
292 if (data.readInt() != 0) {
293 resultData = Intent.CREATOR.createFromParcel(data);
294 }
Winson Chung3b3f4642014-04-22 10:08:18 -0700295 boolean finishTask = (data.readInt() != 0);
296 boolean res = finishActivity(token, resultCode, resultData, finishTask);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800297 reply.writeNoException();
298 reply.writeInt(res ? 1 : 0);
299 return true;
300 }
301
302 case FINISH_SUB_ACTIVITY_TRANSACTION: {
303 data.enforceInterface(IActivityManager.descriptor);
304 IBinder token = data.readStrongBinder();
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700305 String resultWho = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800306 int requestCode = data.readInt();
307 finishSubActivity(token, resultWho, requestCode);
308 reply.writeNoException();
309 return true;
310 }
311
Dianne Hackbornecc5a9c2012-04-26 18:56:09 -0700312 case FINISH_ACTIVITY_AFFINITY_TRANSACTION: {
313 data.enforceInterface(IActivityManager.descriptor);
314 IBinder token = data.readStrongBinder();
315 boolean res = finishActivityAffinity(token);
316 reply.writeNoException();
317 reply.writeInt(res ? 1 : 0);
318 return true;
319 }
320
Dianne Hackborn061d58a2010-03-12 15:07:06 -0800321 case WILL_ACTIVITY_BE_VISIBLE_TRANSACTION: {
322 data.enforceInterface(IActivityManager.descriptor);
323 IBinder token = data.readStrongBinder();
324 boolean res = willActivityBeVisible(token);
325 reply.writeNoException();
326 reply.writeInt(res ? 1 : 0);
327 return true;
328 }
329
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800330 case REGISTER_RECEIVER_TRANSACTION:
331 {
332 data.enforceInterface(IActivityManager.descriptor);
333 IBinder b = data.readStrongBinder();
334 IApplicationThread app =
335 b != null ? ApplicationThreadNative.asInterface(b) : null;
Dianne Hackborn6c418d52011-06-29 14:05:33 -0700336 String packageName = data.readString();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800337 b = data.readStrongBinder();
338 IIntentReceiver rec
339 = b != null ? IIntentReceiver.Stub.asInterface(b) : null;
340 IntentFilter filter = IntentFilter.CREATOR.createFromParcel(data);
341 String perm = data.readString();
Dianne Hackborn20e80982012-08-31 19:00:44 -0700342 int userId = data.readInt();
343 Intent intent = registerReceiver(app, packageName, rec, filter, perm, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800344 reply.writeNoException();
345 if (intent != null) {
346 reply.writeInt(1);
347 intent.writeToParcel(reply, 0);
348 } else {
349 reply.writeInt(0);
350 }
351 return true;
352 }
353
354 case UNREGISTER_RECEIVER_TRANSACTION:
355 {
356 data.enforceInterface(IActivityManager.descriptor);
357 IBinder b = data.readStrongBinder();
358 if (b == null) {
359 return true;
360 }
361 IIntentReceiver rec = IIntentReceiver.Stub.asInterface(b);
362 unregisterReceiver(rec);
363 reply.writeNoException();
364 return true;
365 }
366
367 case BROADCAST_INTENT_TRANSACTION:
368 {
369 data.enforceInterface(IActivityManager.descriptor);
370 IBinder b = data.readStrongBinder();
371 IApplicationThread app =
372 b != null ? ApplicationThreadNative.asInterface(b) : null;
373 Intent intent = Intent.CREATOR.createFromParcel(data);
374 String resolvedType = data.readString();
375 b = data.readStrongBinder();
376 IIntentReceiver resultTo =
377 b != null ? IIntentReceiver.Stub.asInterface(b) : null;
378 int resultCode = data.readInt();
379 String resultData = data.readString();
380 Bundle resultExtras = data.readBundle();
381 String perm = data.readString();
Dianne Hackbornf51f6122013-02-04 18:23:34 -0800382 int appOp = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800383 boolean serialized = data.readInt() != 0;
384 boolean sticky = data.readInt() != 0;
Amith Yamasani742a6712011-05-04 14:49:28 -0700385 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800386 int res = broadcastIntent(app, intent, resolvedType, resultTo,
Dianne Hackbornf51f6122013-02-04 18:23:34 -0800387 resultCode, resultData, resultExtras, perm, appOp,
Amith Yamasani742a6712011-05-04 14:49:28 -0700388 serialized, sticky, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800389 reply.writeNoException();
390 reply.writeInt(res);
391 return true;
392 }
393
394 case UNBROADCAST_INTENT_TRANSACTION:
395 {
396 data.enforceInterface(IActivityManager.descriptor);
397 IBinder b = data.readStrongBinder();
398 IApplicationThread app = b != null ? ApplicationThreadNative.asInterface(b) : null;
399 Intent intent = Intent.CREATOR.createFromParcel(data);
Amith Yamasani742a6712011-05-04 14:49:28 -0700400 int userId = data.readInt();
401 unbroadcastIntent(app, intent, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800402 reply.writeNoException();
403 return true;
404 }
405
406 case FINISH_RECEIVER_TRANSACTION: {
407 data.enforceInterface(IActivityManager.descriptor);
408 IBinder who = data.readStrongBinder();
409 int resultCode = data.readInt();
410 String resultData = data.readString();
411 Bundle resultExtras = data.readBundle();
412 boolean resultAbort = data.readInt() != 0;
413 if (who != null) {
414 finishReceiver(who, resultCode, resultData, resultExtras, resultAbort);
415 }
416 reply.writeNoException();
417 return true;
418 }
419
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800420 case ATTACH_APPLICATION_TRANSACTION: {
421 data.enforceInterface(IActivityManager.descriptor);
422 IApplicationThread app = ApplicationThreadNative.asInterface(
423 data.readStrongBinder());
424 if (app != null) {
425 attachApplication(app);
426 }
427 reply.writeNoException();
428 return true;
429 }
430
431 case ACTIVITY_IDLE_TRANSACTION: {
432 data.enforceInterface(IActivityManager.descriptor);
433 IBinder token = data.readStrongBinder();
Dianne Hackborne88846e2009-09-30 21:34:25 -0700434 Configuration config = null;
435 if (data.readInt() != 0) {
436 config = Configuration.CREATOR.createFromParcel(data);
437 }
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700438 boolean stopProfiling = data.readInt() != 0;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800439 if (token != null) {
Dianne Hackborn62f20ec2011-08-15 17:40:28 -0700440 activityIdle(token, config, stopProfiling);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800441 }
442 reply.writeNoException();
443 return true;
444 }
445
Dianne Hackbornad9b32112012-09-17 15:35:01 -0700446 case ACTIVITY_RESUMED_TRANSACTION: {
447 data.enforceInterface(IActivityManager.descriptor);
448 IBinder token = data.readStrongBinder();
449 activityResumed(token);
450 reply.writeNoException();
451 return true;
452 }
453
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800454 case ACTIVITY_PAUSED_TRANSACTION: {
455 data.enforceInterface(IActivityManager.descriptor);
456 IBinder token = data.readStrongBinder();
Dianne Hackborn0aae2d42010-12-07 23:51:29 -0800457 activityPaused(token);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800458 reply.writeNoException();
459 return true;
460 }
461
462 case ACTIVITY_STOPPED_TRANSACTION: {
463 data.enforceInterface(IActivityManager.descriptor);
464 IBinder token = data.readStrongBinder();
Dianne Hackborn0aae2d42010-12-07 23:51:29 -0800465 Bundle map = data.readBundle();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800466 Bitmap thumbnail = data.readInt() != 0
467 ? Bitmap.CREATOR.createFromParcel(data) : null;
468 CharSequence description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data);
Dianne Hackborn0aae2d42010-12-07 23:51:29 -0800469 activityStopped(token, map, thumbnail, description);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800470 reply.writeNoException();
471 return true;
472 }
473
Dianne Hackborn4eba96b2011-01-21 13:34:36 -0800474 case ACTIVITY_SLEPT_TRANSACTION: {
475 data.enforceInterface(IActivityManager.descriptor);
476 IBinder token = data.readStrongBinder();
477 activitySlept(token);
478 reply.writeNoException();
479 return true;
480 }
481
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800482 case ACTIVITY_DESTROYED_TRANSACTION: {
483 data.enforceInterface(IActivityManager.descriptor);
484 IBinder token = data.readStrongBinder();
485 activityDestroyed(token);
486 reply.writeNoException();
487 return true;
488 }
489
490 case GET_CALLING_PACKAGE_TRANSACTION: {
491 data.enforceInterface(IActivityManager.descriptor);
492 IBinder token = data.readStrongBinder();
493 String res = token != null ? getCallingPackage(token) : null;
494 reply.writeNoException();
495 reply.writeString(res);
496 return true;
497 }
498
499 case GET_CALLING_ACTIVITY_TRANSACTION: {
500 data.enforceInterface(IActivityManager.descriptor);
501 IBinder token = data.readStrongBinder();
502 ComponentName cn = getCallingActivity(token);
503 reply.writeNoException();
504 ComponentName.writeToParcel(cn, reply);
505 return true;
506 }
507
508 case GET_TASKS_TRANSACTION: {
509 data.enforceInterface(IActivityManager.descriptor);
510 int maxNum = data.readInt();
511 int fl = data.readInt();
Dianne Hackborn09233282014-04-30 11:33:59 -0700512 List<ActivityManager.RunningTaskInfo> list = getTasks(maxNum, fl);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800513 reply.writeNoException();
514 int N = list != null ? list.size() : -1;
515 reply.writeInt(N);
516 int i;
517 for (i=0; i<N; i++) {
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700518 ActivityManager.RunningTaskInfo info = list.get(i);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800519 info.writeToParcel(reply, 0);
520 }
521 return true;
522 }
523
524 case GET_RECENT_TASKS_TRANSACTION: {
525 data.enforceInterface(IActivityManager.descriptor);
526 int maxNum = data.readInt();
527 int fl = data.readInt();
Amith Yamasani82644082012-08-03 13:09:11 -0700528 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800529 List<ActivityManager.RecentTaskInfo> list = getRecentTasks(maxNum,
Amith Yamasani82644082012-08-03 13:09:11 -0700530 fl, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800531 reply.writeNoException();
532 reply.writeTypedList(list);
533 return true;
534 }
Dianne Hackborn15491c62012-09-19 10:59:14 -0700535
Dianne Hackbornf26fd992011-04-08 18:14:09 -0700536 case GET_TASK_THUMBNAILS_TRANSACTION: {
Dianne Hackbornd94df452011-02-16 18:53:31 -0800537 data.enforceInterface(IActivityManager.descriptor);
538 int id = data.readInt();
Dianne Hackbornf26fd992011-04-08 18:14:09 -0700539 ActivityManager.TaskThumbnails bm = getTaskThumbnails(id);
Dianne Hackbornd94df452011-02-16 18:53:31 -0800540 reply.writeNoException();
541 if (bm != null) {
542 reply.writeInt(1);
543 bm.writeToParcel(reply, 0);
544 } else {
545 reply.writeInt(0);
546 }
547 return true;
548 }
Dianne Hackborn15491c62012-09-19 10:59:14 -0700549
550 case GET_TASK_TOP_THUMBNAIL_TRANSACTION: {
551 data.enforceInterface(IActivityManager.descriptor);
552 int id = data.readInt();
553 Bitmap bm = getTaskTopThumbnail(id);
554 reply.writeNoException();
555 if (bm != null) {
556 reply.writeInt(1);
557 bm.writeToParcel(reply, 0);
558 } else {
559 reply.writeInt(0);
560 }
561 return true;
562 }
563
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800564 case GET_SERVICES_TRANSACTION: {
565 data.enforceInterface(IActivityManager.descriptor);
566 int maxNum = data.readInt();
567 int fl = data.readInt();
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700568 List<ActivityManager.RunningServiceInfo> list = getServices(maxNum, fl);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800569 reply.writeNoException();
570 int N = list != null ? list.size() : -1;
571 reply.writeInt(N);
572 int i;
573 for (i=0; i<N; i++) {
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700574 ActivityManager.RunningServiceInfo info = list.get(i);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800575 info.writeToParcel(reply, 0);
576 }
577 return true;
578 }
579
580 case GET_PROCESSES_IN_ERROR_STATE_TRANSACTION: {
581 data.enforceInterface(IActivityManager.descriptor);
582 List<ActivityManager.ProcessErrorStateInfo> list = getProcessesInErrorState();
583 reply.writeNoException();
584 reply.writeTypedList(list);
585 return true;
586 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -0700587
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800588 case GET_RUNNING_APP_PROCESSES_TRANSACTION: {
589 data.enforceInterface(IActivityManager.descriptor);
590 List<ActivityManager.RunningAppProcessInfo> list = getRunningAppProcesses();
591 reply.writeNoException();
592 reply.writeTypedList(list);
593 return true;
594 }
595
Suchi Amalapurapuf7f5dda2010-03-23 10:34:28 -0700596 case GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION: {
597 data.enforceInterface(IActivityManager.descriptor);
598 List<ApplicationInfo> list = getRunningExternalApplications();
599 reply.writeNoException();
600 reply.writeTypedList(list);
601 return true;
602 }
603
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800604 case MOVE_TASK_TO_FRONT_TRANSACTION: {
605 data.enforceInterface(IActivityManager.descriptor);
606 int task = data.readInt();
Dianne Hackborn621e17d2010-11-22 15:59:56 -0800607 int fl = data.readInt();
Dianne Hackborn8078d8c2012-03-20 11:11:26 -0700608 Bundle options = data.readInt() != 0
609 ? Bundle.CREATOR.createFromParcel(data) : null;
610 moveTaskToFront(task, fl, options);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800611 reply.writeNoException();
612 return true;
613 }
614
615 case MOVE_TASK_TO_BACK_TRANSACTION: {
616 data.enforceInterface(IActivityManager.descriptor);
617 int task = data.readInt();
618 moveTaskToBack(task);
619 reply.writeNoException();
620 return true;
621 }
622
623 case MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION: {
624 data.enforceInterface(IActivityManager.descriptor);
625 IBinder token = data.readStrongBinder();
626 boolean nonRoot = data.readInt() != 0;
627 boolean res = moveActivityTaskToBack(token, nonRoot);
628 reply.writeNoException();
629 reply.writeInt(res ? 1 : 0);
630 return true;
631 }
632
633 case MOVE_TASK_BACKWARDS_TRANSACTION: {
634 data.enforceInterface(IActivityManager.descriptor);
635 int task = data.readInt();
636 moveTaskBackwards(task);
637 reply.writeNoException();
638 return true;
639 }
640
Craig Mautnerc00204b2013-03-05 15:02:14 -0800641 case MOVE_TASK_TO_STACK_TRANSACTION: {
642 data.enforceInterface(IActivityManager.descriptor);
643 int taskId = data.readInt();
644 int stackId = data.readInt();
645 boolean toTop = data.readInt() != 0;
646 moveTaskToStack(taskId, stackId, toTop);
647 reply.writeNoException();
648 return true;
649 }
650
651 case RESIZE_STACK_TRANSACTION: {
652 data.enforceInterface(IActivityManager.descriptor);
Craig Mautnerbdc748af2013-12-02 14:08:25 -0800653 int stackId = data.readInt();
Craig Mautnerc00204b2013-03-05 15:02:14 -0800654 float weight = data.readFloat();
Craig Mautnerbdc748af2013-12-02 14:08:25 -0800655 Rect r = Rect.CREATOR.createFromParcel(data);
656 resizeStack(stackId, r);
Craig Mautnerc00204b2013-03-05 15:02:14 -0800657 reply.writeNoException();
658 return true;
659 }
660
Craig Mautnerbdc748af2013-12-02 14:08:25 -0800661 case GET_ALL_STACK_INFOS_TRANSACTION: {
Craig Mautner5ff12102013-05-24 12:50:15 -0700662 data.enforceInterface(IActivityManager.descriptor);
Craig Mautnerbdc748af2013-12-02 14:08:25 -0800663 List<StackInfo> list = getAllStackInfos();
Craig Mautner5ff12102013-05-24 12:50:15 -0700664 reply.writeNoException();
665 reply.writeTypedList(list);
666 return true;
667 }
668
Craig Mautnerbdc748af2013-12-02 14:08:25 -0800669 case GET_STACK_INFO_TRANSACTION: {
Craig Mautnerfd1ce8d2013-06-17 16:15:42 -0700670 data.enforceInterface(IActivityManager.descriptor);
Craig Mautnerbdc748af2013-12-02 14:08:25 -0800671 int stackId = data.readInt();
672 StackInfo info = getStackInfo(stackId);
Craig Mautnerfd1ce8d2013-06-17 16:15:42 -0700673 reply.writeNoException();
674 if (info != null) {
675 reply.writeInt(1);
676 info.writeToParcel(reply, 0);
677 } else {
678 reply.writeInt(0);
679 }
680 return true;
681 }
682
Winson Chung303e1ff2014-03-07 15:06:19 -0800683 case IS_IN_HOME_STACK_TRANSACTION: {
684 data.enforceInterface(IActivityManager.descriptor);
685 int taskId = data.readInt();
686 boolean isInHomeStack = isInHomeStack(taskId);
687 reply.writeNoException();
688 reply.writeInt(isInHomeStack ? 1 : 0);
689 return true;
690 }
691
Craig Mautnercf910b02013-04-23 11:23:27 -0700692 case SET_FOCUSED_STACK_TRANSACTION: {
693 data.enforceInterface(IActivityManager.descriptor);
694 int stackId = data.readInt();
695 setFocusedStack(stackId);
696 reply.writeNoException();
697 return true;
698 }
699
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800700 case GET_TASK_FOR_ACTIVITY_TRANSACTION: {
701 data.enforceInterface(IActivityManager.descriptor);
702 IBinder token = data.readStrongBinder();
703 boolean onlyRoot = data.readInt() != 0;
704 int res = token != null
705 ? getTaskForActivity(token, onlyRoot) : -1;
706 reply.writeNoException();
707 reply.writeInt(res);
708 return true;
709 }
710
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800711 case GET_CONTENT_PROVIDER_TRANSACTION: {
712 data.enforceInterface(IActivityManager.descriptor);
713 IBinder b = data.readStrongBinder();
714 IApplicationThread app = ApplicationThreadNative.asInterface(b);
715 String name = data.readString();
Jeff Sharkey6d515712012-09-20 16:06:08 -0700716 int userId = data.readInt();
Dianne Hackborn6ae8d182012-05-23 13:12:42 -0700717 boolean stable = data.readInt() != 0;
Jeff Sharkey6d515712012-09-20 16:06:08 -0700718 ContentProviderHolder cph = getContentProvider(app, name, userId, stable);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800719 reply.writeNoException();
720 if (cph != null) {
721 reply.writeInt(1);
722 cph.writeToParcel(reply, 0);
723 } else {
724 reply.writeInt(0);
725 }
726 return true;
727 }
728
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800729 case GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION: {
730 data.enforceInterface(IActivityManager.descriptor);
731 String name = data.readString();
Jeff Sharkey6d515712012-09-20 16:06:08 -0700732 int userId = data.readInt();
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800733 IBinder token = data.readStrongBinder();
Jeff Sharkey6d515712012-09-20 16:06:08 -0700734 ContentProviderHolder cph = getContentProviderExternal(name, userId, token);
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800735 reply.writeNoException();
736 if (cph != null) {
737 reply.writeInt(1);
738 cph.writeToParcel(reply, 0);
739 } else {
740 reply.writeInt(0);
741 }
742 return true;
743 }
744
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800745 case PUBLISH_CONTENT_PROVIDERS_TRANSACTION: {
746 data.enforceInterface(IActivityManager.descriptor);
747 IBinder b = data.readStrongBinder();
748 IApplicationThread app = ApplicationThreadNative.asInterface(b);
749 ArrayList<ContentProviderHolder> providers =
750 data.createTypedArrayList(ContentProviderHolder.CREATOR);
751 publishContentProviders(app, providers);
752 reply.writeNoException();
753 return true;
754 }
755
Dianne Hackborn6ae8d182012-05-23 13:12:42 -0700756 case REF_CONTENT_PROVIDER_TRANSACTION: {
757 data.enforceInterface(IActivityManager.descriptor);
758 IBinder b = data.readStrongBinder();
759 int stable = data.readInt();
760 int unstable = data.readInt();
761 boolean res = refContentProvider(b, stable, unstable);
762 reply.writeNoException();
763 reply.writeInt(res ? 1 : 0);
764 return true;
765 }
766
767 case UNSTABLE_PROVIDER_DIED_TRANSACTION: {
768 data.enforceInterface(IActivityManager.descriptor);
769 IBinder b = data.readStrongBinder();
770 unstableProviderDied(b);
771 reply.writeNoException();
772 return true;
773 }
774
Jeff Sharkey7aa76012013-09-30 14:26:27 -0700775 case APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION: {
776 data.enforceInterface(IActivityManager.descriptor);
777 IBinder b = data.readStrongBinder();
778 appNotRespondingViaProvider(b);
779 reply.writeNoException();
780 return true;
781 }
782
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800783 case REMOVE_CONTENT_PROVIDER_TRANSACTION: {
784 data.enforceInterface(IActivityManager.descriptor);
785 IBinder b = data.readStrongBinder();
Dianne Hackborn6ae8d182012-05-23 13:12:42 -0700786 boolean stable = data.readInt() != 0;
787 removeContentProvider(b, stable);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800788 reply.writeNoException();
789 return true;
790 }
Svetoslav Ganov25872aa2012-02-03 19:19:09 -0800791
792 case REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION: {
793 data.enforceInterface(IActivityManager.descriptor);
794 String name = data.readString();
795 IBinder token = data.readStrongBinder();
796 removeContentProviderExternal(name, token);
797 reply.writeNoException();
798 return true;
799 }
800
Dianne Hackborndd9b82c2009-09-03 00:18:47 -0700801 case GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION: {
802 data.enforceInterface(IActivityManager.descriptor);
803 ComponentName comp = ComponentName.CREATOR.createFromParcel(data);
804 PendingIntent pi = getRunningServiceControlPanel(comp);
805 reply.writeNoException();
806 PendingIntent.writePendingIntentOrNullToParcel(pi, reply);
807 return true;
808 }
809
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800810 case START_SERVICE_TRANSACTION: {
811 data.enforceInterface(IActivityManager.descriptor);
812 IBinder b = data.readStrongBinder();
813 IApplicationThread app = ApplicationThreadNative.asInterface(b);
814 Intent service = Intent.CREATOR.createFromParcel(data);
815 String resolvedType = data.readString();
Dianne Hackborn7767eac2012-08-23 18:25:40 -0700816 int userId = data.readInt();
817 ComponentName cn = startService(app, service, resolvedType, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800818 reply.writeNoException();
819 ComponentName.writeToParcel(cn, reply);
820 return true;
821 }
822
823 case STOP_SERVICE_TRANSACTION: {
824 data.enforceInterface(IActivityManager.descriptor);
825 IBinder b = data.readStrongBinder();
826 IApplicationThread app = ApplicationThreadNative.asInterface(b);
827 Intent service = Intent.CREATOR.createFromParcel(data);
828 String resolvedType = data.readString();
Dianne Hackborn7767eac2012-08-23 18:25:40 -0700829 int userId = data.readInt();
830 int res = stopService(app, service, resolvedType, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800831 reply.writeNoException();
832 reply.writeInt(res);
833 return true;
834 }
835
836 case STOP_SERVICE_TOKEN_TRANSACTION: {
837 data.enforceInterface(IActivityManager.descriptor);
838 ComponentName className = ComponentName.readFromParcel(data);
839 IBinder token = data.readStrongBinder();
840 int startId = data.readInt();
841 boolean res = stopServiceToken(className, token, startId);
842 reply.writeNoException();
843 reply.writeInt(res ? 1 : 0);
844 return true;
845 }
846
847 case SET_SERVICE_FOREGROUND_TRANSACTION: {
848 data.enforceInterface(IActivityManager.descriptor);
849 ComponentName className = ComponentName.readFromParcel(data);
850 IBinder token = data.readStrongBinder();
Dianne Hackbornd8a43f62009-08-17 23:33:56 -0700851 int id = data.readInt();
852 Notification notification = null;
853 if (data.readInt() != 0) {
854 notification = Notification.CREATOR.createFromParcel(data);
855 }
856 boolean removeNotification = data.readInt() != 0;
857 setServiceForeground(className, token, id, notification, removeNotification);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800858 reply.writeNoException();
859 return true;
860 }
861
862 case BIND_SERVICE_TRANSACTION: {
863 data.enforceInterface(IActivityManager.descriptor);
864 IBinder b = data.readStrongBinder();
865 IApplicationThread app = ApplicationThreadNative.asInterface(b);
866 IBinder token = data.readStrongBinder();
867 Intent service = Intent.CREATOR.createFromParcel(data);
868 String resolvedType = data.readString();
869 b = data.readStrongBinder();
870 int fl = data.readInt();
Amith Yamasani37ce3a82012-02-06 12:04:42 -0800871 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800872 IServiceConnection conn = IServiceConnection.Stub.asInterface(b);
Amith Yamasani37ce3a82012-02-06 12:04:42 -0800873 int res = bindService(app, token, service, resolvedType, conn, fl, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800874 reply.writeNoException();
875 reply.writeInt(res);
876 return true;
877 }
878
879 case UNBIND_SERVICE_TRANSACTION: {
880 data.enforceInterface(IActivityManager.descriptor);
881 IBinder b = data.readStrongBinder();
882 IServiceConnection conn = IServiceConnection.Stub.asInterface(b);
883 boolean res = unbindService(conn);
884 reply.writeNoException();
885 reply.writeInt(res ? 1 : 0);
886 return true;
887 }
888
889 case PUBLISH_SERVICE_TRANSACTION: {
890 data.enforceInterface(IActivityManager.descriptor);
891 IBinder token = data.readStrongBinder();
892 Intent intent = Intent.CREATOR.createFromParcel(data);
893 IBinder service = data.readStrongBinder();
894 publishService(token, intent, service);
895 reply.writeNoException();
896 return true;
897 }
898
899 case UNBIND_FINISHED_TRANSACTION: {
900 data.enforceInterface(IActivityManager.descriptor);
901 IBinder token = data.readStrongBinder();
902 Intent intent = Intent.CREATOR.createFromParcel(data);
903 boolean doRebind = data.readInt() != 0;
904 unbindFinished(token, intent, doRebind);
905 reply.writeNoException();
906 return true;
907 }
908
909 case SERVICE_DONE_EXECUTING_TRANSACTION: {
910 data.enforceInterface(IActivityManager.descriptor);
911 IBinder token = data.readStrongBinder();
Dianne Hackbornf6f9f2d2009-08-21 16:26:03 -0700912 int type = data.readInt();
913 int startId = data.readInt();
914 int res = data.readInt();
915 serviceDoneExecuting(token, type, startId, res);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800916 reply.writeNoException();
917 return true;
918 }
919
920 case START_INSTRUMENTATION_TRANSACTION: {
921 data.enforceInterface(IActivityManager.descriptor);
922 ComponentName className = ComponentName.readFromParcel(data);
923 String profileFile = data.readString();
924 int fl = data.readInt();
925 Bundle arguments = data.readBundle();
926 IBinder b = data.readStrongBinder();
927 IInstrumentationWatcher w = IInstrumentationWatcher.Stub.asInterface(b);
Svetoslav Ganov80943d82013-01-02 10:25:37 -0800928 b = data.readStrongBinder();
929 IUiAutomationConnection c = IUiAutomationConnection.Stub.asInterface(b);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -0700930 int userId = data.readInt();
Svetoslav Ganov80943d82013-01-02 10:25:37 -0800931 boolean res = startInstrumentation(className, profileFile, fl, arguments, w, c, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800932 reply.writeNoException();
933 reply.writeInt(res ? 1 : 0);
934 return true;
935 }
936
937
938 case FINISH_INSTRUMENTATION_TRANSACTION: {
939 data.enforceInterface(IActivityManager.descriptor);
940 IBinder b = data.readStrongBinder();
941 IApplicationThread app = ApplicationThreadNative.asInterface(b);
942 int resultCode = data.readInt();
943 Bundle results = data.readBundle();
944 finishInstrumentation(app, resultCode, results);
945 reply.writeNoException();
946 return true;
947 }
948
949 case GET_CONFIGURATION_TRANSACTION: {
950 data.enforceInterface(IActivityManager.descriptor);
951 Configuration config = getConfiguration();
952 reply.writeNoException();
953 config.writeToParcel(reply, 0);
954 return true;
955 }
956
957 case UPDATE_CONFIGURATION_TRANSACTION: {
958 data.enforceInterface(IActivityManager.descriptor);
959 Configuration config = Configuration.CREATOR.createFromParcel(data);
960 updateConfiguration(config);
961 reply.writeNoException();
962 return true;
963 }
964
965 case SET_REQUESTED_ORIENTATION_TRANSACTION: {
966 data.enforceInterface(IActivityManager.descriptor);
967 IBinder token = data.readStrongBinder();
968 int requestedOrientation = data.readInt();
969 setRequestedOrientation(token, requestedOrientation);
970 reply.writeNoException();
971 return true;
972 }
973
974 case GET_REQUESTED_ORIENTATION_TRANSACTION: {
975 data.enforceInterface(IActivityManager.descriptor);
976 IBinder token = data.readStrongBinder();
977 int req = getRequestedOrientation(token);
978 reply.writeNoException();
979 reply.writeInt(req);
980 return true;
981 }
982
983 case GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION: {
984 data.enforceInterface(IActivityManager.descriptor);
985 IBinder token = data.readStrongBinder();
986 ComponentName cn = getActivityClassForToken(token);
987 reply.writeNoException();
988 ComponentName.writeToParcel(cn, reply);
989 return true;
990 }
991
992 case GET_PACKAGE_FOR_TOKEN_TRANSACTION: {
993 data.enforceInterface(IActivityManager.descriptor);
994 IBinder token = data.readStrongBinder();
995 reply.writeNoException();
996 reply.writeString(getPackageForToken(token));
997 return true;
998 }
999
1000 case GET_INTENT_SENDER_TRANSACTION: {
1001 data.enforceInterface(IActivityManager.descriptor);
1002 int type = data.readInt();
1003 String packageName = data.readString();
1004 IBinder token = data.readStrongBinder();
1005 String resultWho = data.readString();
1006 int requestCode = data.readInt();
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001007 Intent[] requestIntents;
1008 String[] requestResolvedTypes;
1009 if (data.readInt() != 0) {
1010 requestIntents = data.createTypedArray(Intent.CREATOR);
1011 requestResolvedTypes = data.createStringArray();
1012 } else {
1013 requestIntents = null;
1014 requestResolvedTypes = null;
1015 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001016 int fl = data.readInt();
Dianne Hackborn7a2195c2012-03-19 17:38:00 -07001017 Bundle options = data.readInt() != 0
1018 ? Bundle.CREATOR.createFromParcel(data) : null;
Dianne Hackborn41203752012-08-31 14:05:51 -07001019 int userId = data.readInt();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001020 IIntentSender res = getIntentSender(type, packageName, token,
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001021 resultWho, requestCode, requestIntents,
Dianne Hackborn41203752012-08-31 14:05:51 -07001022 requestResolvedTypes, fl, options, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001023 reply.writeNoException();
1024 reply.writeStrongBinder(res != null ? res.asBinder() : null);
1025 return true;
1026 }
1027
1028 case CANCEL_INTENT_SENDER_TRANSACTION: {
1029 data.enforceInterface(IActivityManager.descriptor);
1030 IIntentSender r = IIntentSender.Stub.asInterface(
1031 data.readStrongBinder());
1032 cancelIntentSender(r);
1033 reply.writeNoException();
1034 return true;
1035 }
1036
1037 case GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION: {
1038 data.enforceInterface(IActivityManager.descriptor);
1039 IIntentSender r = IIntentSender.Stub.asInterface(
1040 data.readStrongBinder());
1041 String res = getPackageForIntentSender(r);
1042 reply.writeNoException();
1043 reply.writeString(res);
1044 return true;
1045 }
1046
Christopher Tatec4a07d12012-04-06 14:19:13 -07001047 case GET_UID_FOR_INTENT_SENDER_TRANSACTION: {
1048 data.enforceInterface(IActivityManager.descriptor);
1049 IIntentSender r = IIntentSender.Stub.asInterface(
1050 data.readStrongBinder());
1051 int res = getUidForIntentSender(r);
1052 reply.writeNoException();
1053 reply.writeInt(res);
1054 return true;
1055 }
1056
Dianne Hackborn41203752012-08-31 14:05:51 -07001057 case HANDLE_INCOMING_USER_TRANSACTION: {
1058 data.enforceInterface(IActivityManager.descriptor);
1059 int callingPid = data.readInt();
1060 int callingUid = data.readInt();
1061 int userId = data.readInt();
1062 boolean allowAll = data.readInt() != 0 ;
1063 boolean requireFull = data.readInt() != 0;
1064 String name = data.readString();
1065 String callerPackage = data.readString();
1066 int res = handleIncomingUser(callingPid, callingUid, userId, allowAll,
1067 requireFull, name, callerPackage);
1068 reply.writeNoException();
1069 reply.writeInt(res);
1070 return true;
1071 }
1072
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001073 case SET_PROCESS_LIMIT_TRANSACTION: {
1074 data.enforceInterface(IActivityManager.descriptor);
1075 int max = data.readInt();
1076 setProcessLimit(max);
1077 reply.writeNoException();
1078 return true;
1079 }
1080
1081 case GET_PROCESS_LIMIT_TRANSACTION: {
1082 data.enforceInterface(IActivityManager.descriptor);
1083 int limit = getProcessLimit();
1084 reply.writeNoException();
1085 reply.writeInt(limit);
1086 return true;
1087 }
1088
1089 case SET_PROCESS_FOREGROUND_TRANSACTION: {
1090 data.enforceInterface(IActivityManager.descriptor);
1091 IBinder token = data.readStrongBinder();
1092 int pid = data.readInt();
1093 boolean isForeground = data.readInt() != 0;
1094 setProcessForeground(token, pid, isForeground);
1095 reply.writeNoException();
1096 return true;
1097 }
1098
1099 case CHECK_PERMISSION_TRANSACTION: {
1100 data.enforceInterface(IActivityManager.descriptor);
1101 String perm = data.readString();
1102 int pid = data.readInt();
1103 int uid = data.readInt();
1104 int res = checkPermission(perm, pid, uid);
1105 reply.writeNoException();
1106 reply.writeInt(res);
1107 return true;
1108 }
1109
1110 case CHECK_URI_PERMISSION_TRANSACTION: {
1111 data.enforceInterface(IActivityManager.descriptor);
1112 Uri uri = Uri.CREATOR.createFromParcel(data);
1113 int pid = data.readInt();
1114 int uid = data.readInt();
1115 int mode = data.readInt();
1116 int res = checkUriPermission(uri, pid, uid, mode);
1117 reply.writeNoException();
1118 reply.writeInt(res);
1119 return true;
1120 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001121
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001122 case CLEAR_APP_DATA_TRANSACTION: {
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001123 data.enforceInterface(IActivityManager.descriptor);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001124 String packageName = data.readString();
1125 IPackageDataObserver observer = IPackageDataObserver.Stub.asInterface(
1126 data.readStrongBinder());
Amith Yamasani742a6712011-05-04 14:49:28 -07001127 int userId = data.readInt();
1128 boolean res = clearApplicationUserData(packageName, observer, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001129 reply.writeNoException();
1130 reply.writeInt(res ? 1 : 0);
1131 return true;
1132 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001133
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001134 case GRANT_URI_PERMISSION_TRANSACTION: {
1135 data.enforceInterface(IActivityManager.descriptor);
1136 IBinder b = data.readStrongBinder();
1137 IApplicationThread app = ApplicationThreadNative.asInterface(b);
1138 String targetPkg = data.readString();
1139 Uri uri = Uri.CREATOR.createFromParcel(data);
1140 int mode = data.readInt();
1141 grantUriPermission(app, targetPkg, uri, mode);
1142 reply.writeNoException();
1143 return true;
1144 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001145
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001146 case REVOKE_URI_PERMISSION_TRANSACTION: {
1147 data.enforceInterface(IActivityManager.descriptor);
1148 IBinder b = data.readStrongBinder();
1149 IApplicationThread app = ApplicationThreadNative.asInterface(b);
1150 Uri uri = Uri.CREATOR.createFromParcel(data);
1151 int mode = data.readInt();
1152 revokeUriPermission(app, uri, mode);
1153 reply.writeNoException();
1154 return true;
1155 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001156
Jeff Sharkeye66c1772013-09-20 14:30:59 -07001157 case TAKE_PERSISTABLE_URI_PERMISSION_TRANSACTION: {
1158 data.enforceInterface(IActivityManager.descriptor);
1159 Uri uri = Uri.CREATOR.createFromParcel(data);
1160 int mode = data.readInt();
1161 takePersistableUriPermission(uri, mode);
1162 reply.writeNoException();
1163 return true;
1164 }
1165
1166 case RELEASE_PERSISTABLE_URI_PERMISSION_TRANSACTION: {
1167 data.enforceInterface(IActivityManager.descriptor);
1168 Uri uri = Uri.CREATOR.createFromParcel(data);
1169 int mode = data.readInt();
1170 releasePersistableUriPermission(uri, mode);
1171 reply.writeNoException();
1172 return true;
1173 }
1174
1175 case GET_PERSISTED_URI_PERMISSIONS_TRANSACTION: {
1176 data.enforceInterface(IActivityManager.descriptor);
Jeff Sharkeybcaac0a2013-10-09 14:21:08 -07001177 final String packageName = data.readString();
1178 final boolean incoming = data.readInt() != 0;
1179 final ParceledListSlice<UriPermission> perms = getPersistedUriPermissions(
1180 packageName, incoming);
Jeff Sharkeye66c1772013-09-20 14:30:59 -07001181 reply.writeNoException();
1182 perms.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
1183 return true;
1184 }
1185
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001186 case SHOW_WAITING_FOR_DEBUGGER_TRANSACTION: {
1187 data.enforceInterface(IActivityManager.descriptor);
1188 IBinder b = data.readStrongBinder();
1189 IApplicationThread app = ApplicationThreadNative.asInterface(b);
1190 boolean waiting = data.readInt() != 0;
1191 showWaitingForDebugger(app, waiting);
1192 reply.writeNoException();
1193 return true;
1194 }
1195
1196 case GET_MEMORY_INFO_TRANSACTION: {
1197 data.enforceInterface(IActivityManager.descriptor);
1198 ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
1199 getMemoryInfo(mi);
1200 reply.writeNoException();
1201 mi.writeToParcel(reply, 0);
1202 return true;
1203 }
1204
1205 case UNHANDLED_BACK_TRANSACTION: {
1206 data.enforceInterface(IActivityManager.descriptor);
1207 unhandledBack();
1208 reply.writeNoException();
1209 return true;
1210 }
1211
1212 case OPEN_CONTENT_URI_TRANSACTION: {
1213 data.enforceInterface(IActivityManager.descriptor);
1214 Uri uri = Uri.parse(data.readString());
1215 ParcelFileDescriptor pfd = openContentUri(uri);
1216 reply.writeNoException();
1217 if (pfd != null) {
1218 reply.writeInt(1);
1219 pfd.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
1220 } else {
1221 reply.writeInt(0);
1222 }
1223 return true;
1224 }
Dianne Hackbornff5b1582012-04-12 17:24:07 -07001225
Dianne Hackbornff5b1582012-04-12 17:24:07 -07001226 case SET_LOCK_SCREEN_SHOWN_TRANSACTION: {
1227 data.enforceInterface(IActivityManager.descriptor);
1228 setLockScreenShown(data.readInt() != 0);
1229 reply.writeNoException();
1230 return true;
1231 }
1232
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001233 case SET_DEBUG_APP_TRANSACTION: {
1234 data.enforceInterface(IActivityManager.descriptor);
1235 String pn = data.readString();
1236 boolean wfd = data.readInt() != 0;
1237 boolean per = data.readInt() != 0;
1238 setDebugApp(pn, wfd, per);
1239 reply.writeNoException();
1240 return true;
1241 }
1242
1243 case SET_ALWAYS_FINISH_TRANSACTION: {
1244 data.enforceInterface(IActivityManager.descriptor);
1245 boolean enabled = data.readInt() != 0;
1246 setAlwaysFinish(enabled);
1247 reply.writeNoException();
1248 return true;
1249 }
1250
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001251 case SET_ACTIVITY_CONTROLLER_TRANSACTION: {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001252 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001253 IActivityController watcher = IActivityController.Stub.asInterface(
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001254 data.readStrongBinder());
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001255 setActivityController(watcher);
Sungmin Choicdb86bb2012-12-20 14:08:59 +09001256 reply.writeNoException();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001257 return true;
1258 }
1259
1260 case ENTER_SAFE_MODE_TRANSACTION: {
1261 data.enforceInterface(IActivityManager.descriptor);
1262 enterSafeMode();
1263 reply.writeNoException();
1264 return true;
1265 }
1266
1267 case NOTE_WAKEUP_ALARM_TRANSACTION: {
1268 data.enforceInterface(IActivityManager.descriptor);
1269 IIntentSender is = IIntentSender.Stub.asInterface(
1270 data.readStrongBinder());
Dianne Hackborn099bc622014-01-22 13:39:16 -08001271 int sourceUid = data.readInt();
1272 String sourcePkg = data.readString();
1273 noteWakeupAlarm(is, sourceUid, sourcePkg);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001274 reply.writeNoException();
1275 return true;
1276 }
1277
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07001278 case KILL_PIDS_TRANSACTION: {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001279 data.enforceInterface(IActivityManager.descriptor);
1280 int[] pids = data.createIntArray();
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07001281 String reason = data.readString();
Dianne Hackborn64825172011-03-02 21:32:58 -08001282 boolean secure = data.readInt() != 0;
1283 boolean res = killPids(pids, reason, secure);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001284 reply.writeNoException();
1285 reply.writeInt(res ? 1 : 0);
1286 return true;
1287 }
1288
Jeff Sharkeyb9a07012012-03-22 17:00:04 -07001289 case KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION: {
1290 data.enforceInterface(IActivityManager.descriptor);
1291 String reason = data.readString();
1292 boolean res = killProcessesBelowForeground(reason);
1293 reply.writeNoException();
1294 reply.writeInt(res ? 1 : 0);
1295 return true;
1296 }
1297
Dan Egnor60d87622009-12-16 16:32:58 -08001298 case HANDLE_APPLICATION_CRASH_TRANSACTION: {
1299 data.enforceInterface(IActivityManager.descriptor);
1300 IBinder app = data.readStrongBinder();
1301 ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data);
1302 handleApplicationCrash(app, ci);
1303 reply.writeNoException();
1304 return true;
1305 }
1306
1307 case HANDLE_APPLICATION_WTF_TRANSACTION: {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001308 data.enforceInterface(IActivityManager.descriptor);
1309 IBinder app = data.readStrongBinder();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001310 String tag = data.readString();
Dan Egnorb7f03672009-12-09 16:22:32 -08001311 ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data);
Dan Egnor60d87622009-12-16 16:32:58 -08001312 boolean res = handleApplicationWtf(app, tag, ci);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001313 reply.writeNoException();
Dan Egnor60d87622009-12-16 16:32:58 -08001314 reply.writeInt(res ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001315 return true;
1316 }
Dan Egnorb7f03672009-12-09 16:22:32 -08001317
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07001318 case HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION: {
1319 data.enforceInterface(IActivityManager.descriptor);
1320 IBinder app = data.readStrongBinder();
Brad Fitzpatrick46d42382010-06-11 13:57:58 -07001321 int violationMask = data.readInt();
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -07001322 StrictMode.ViolationInfo info = new StrictMode.ViolationInfo(data);
1323 handleApplicationStrictModeViolation(app, violationMask, info);
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07001324 reply.writeNoException();
1325 return true;
1326 }
1327
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001328 case SIGNAL_PERSISTENT_PROCESSES_TRANSACTION: {
1329 data.enforceInterface(IActivityManager.descriptor);
1330 int sig = data.readInt();
1331 signalPersistentProcesses(sig);
1332 reply.writeNoException();
1333 return true;
1334 }
1335
Dianne Hackborn03abb812010-01-04 18:43:19 -08001336 case KILL_BACKGROUND_PROCESSES_TRANSACTION: {
1337 data.enforceInterface(IActivityManager.descriptor);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001338 String packageName = data.readString();
Dianne Hackborn1676c852012-09-10 14:52:30 -07001339 int userId = data.readInt();
1340 killBackgroundProcesses(packageName, userId);
Dianne Hackborn03abb812010-01-04 18:43:19 -08001341 reply.writeNoException();
1342 return true;
1343 }
Dianne Hackborne4d4fbc2011-11-08 11:53:28 -08001344
1345 case KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION: {
1346 data.enforceInterface(IActivityManager.descriptor);
1347 killAllBackgroundProcesses();
1348 reply.writeNoException();
1349 return true;
1350 }
Craig Mautner4cd0c13f2013-04-16 15:55:52 -07001351
Dianne Hackborn03abb812010-01-04 18:43:19 -08001352 case FORCE_STOP_PACKAGE_TRANSACTION: {
1353 data.enforceInterface(IActivityManager.descriptor);
1354 String packageName = data.readString();
Dianne Hackborn1676c852012-09-10 14:52:30 -07001355 int userId = data.readInt();
1356 forceStopPackage(packageName, userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001357 reply.writeNoException();
1358 return true;
1359 }
Dianne Hackborn27ff9132012-03-06 14:57:58 -08001360
1361 case GET_MY_MEMORY_STATE_TRANSACTION: {
1362 data.enforceInterface(IActivityManager.descriptor);
1363 ActivityManager.RunningAppProcessInfo info =
1364 new ActivityManager.RunningAppProcessInfo();
1365 getMyMemoryState(info);
1366 reply.writeNoException();
1367 info.writeToParcel(reply, 0);
1368 return true;
1369 }
1370
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001371 case GET_DEVICE_CONFIGURATION_TRANSACTION: {
1372 data.enforceInterface(IActivityManager.descriptor);
1373 ConfigurationInfo config = getDeviceConfigurationInfo();
1374 reply.writeNoException();
1375 config.writeToParcel(reply, 0);
1376 return true;
1377 }
1378
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001379 case PROFILE_CONTROL_TRANSACTION: {
1380 data.enforceInterface(IActivityManager.descriptor);
1381 String process = data.readString();
Dianne Hackborn1676c852012-09-10 14:52:30 -07001382 int userId = data.readInt();
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001383 boolean start = data.readInt() != 0;
Romain Guy9a8c5ce2011-07-21 18:04:29 -07001384 int profileType = data.readInt();
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001385 String path = data.readString();
Dianne Hackborn9c8dd552009-06-23 19:22:52 -07001386 ParcelFileDescriptor fd = data.readInt() != 0
Amith Yamasanic2be0d62013-09-23 11:16:28 -07001387 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null;
Dianne Hackborn1676c852012-09-10 14:52:30 -07001388 boolean res = profileControl(process, userId, start, path, fd, profileType);
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08001389 reply.writeNoException();
1390 reply.writeInt(res ? 1 : 0);
1391 return true;
1392 }
1393
Dianne Hackborn55280a92009-05-07 15:53:46 -07001394 case SHUTDOWN_TRANSACTION: {
1395 data.enforceInterface(IActivityManager.descriptor);
1396 boolean res = shutdown(data.readInt());
1397 reply.writeNoException();
1398 reply.writeInt(res ? 1 : 0);
1399 return true;
1400 }
1401
Dianne Hackborn95fc68f2009-05-19 18:37:45 -07001402 case STOP_APP_SWITCHES_TRANSACTION: {
1403 data.enforceInterface(IActivityManager.descriptor);
1404 stopAppSwitches();
1405 reply.writeNoException();
1406 return true;
1407 }
1408
1409 case RESUME_APP_SWITCHES_TRANSACTION: {
1410 data.enforceInterface(IActivityManager.descriptor);
1411 resumeAppSwitches();
1412 reply.writeNoException();
1413 return true;
1414 }
1415
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001416 case PEEK_SERVICE_TRANSACTION: {
1417 data.enforceInterface(IActivityManager.descriptor);
1418 Intent service = Intent.CREATOR.createFromParcel(data);
1419 String resolvedType = data.readString();
1420 IBinder binder = peekService(service, resolvedType);
1421 reply.writeNoException();
1422 reply.writeStrongBinder(binder);
1423 return true;
1424 }
Christopher Tate181fafa2009-05-14 11:12:14 -07001425
1426 case START_BACKUP_AGENT_TRANSACTION: {
1427 data.enforceInterface(IActivityManager.descriptor);
1428 ApplicationInfo info = ApplicationInfo.CREATOR.createFromParcel(data);
1429 int backupRestoreMode = data.readInt();
1430 boolean success = bindBackupAgent(info, backupRestoreMode);
1431 reply.writeNoException();
1432 reply.writeInt(success ? 1 : 0);
1433 return true;
1434 }
1435
1436 case BACKUP_AGENT_CREATED_TRANSACTION: {
1437 data.enforceInterface(IActivityManager.descriptor);
1438 String packageName = data.readString();
1439 IBinder agent = data.readStrongBinder();
1440 backupAgentCreated(packageName, agent);
1441 reply.writeNoException();
1442 return true;
1443 }
1444
1445 case UNBIND_BACKUP_AGENT_TRANSACTION: {
1446 data.enforceInterface(IActivityManager.descriptor);
1447 ApplicationInfo info = ApplicationInfo.CREATOR.createFromParcel(data);
1448 unbindBackupAgent(info);
1449 reply.writeNoException();
1450 return true;
1451 }
Dianne Hackbornb06ea702009-07-13 13:07:51 -07001452
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001453 case KILL_APPLICATION_WITH_APPID_TRANSACTION: {
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07001454 data.enforceInterface(IActivityManager.descriptor);
1455 String pkg = data.readString();
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001456 int appid = data.readInt();
Dianne Hackborn21d9b562013-05-28 17:46:59 -07001457 String reason = data.readString();
1458 killApplicationWithAppId(pkg, appid, reason);
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07001459 reply.writeNoException();
1460 return true;
1461 }
Dianne Hackborna6ddc8a2009-07-28 17:49:55 -07001462
1463 case CLOSE_SYSTEM_DIALOGS_TRANSACTION: {
1464 data.enforceInterface(IActivityManager.descriptor);
1465 String reason = data.readString();
1466 closeSystemDialogs(reason);
1467 reply.writeNoException();
1468 return true;
1469 }
Dianne Hackborn3025ef32009-08-31 21:31:47 -07001470
1471 case GET_PROCESS_MEMORY_INFO_TRANSACTION: {
1472 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07001473 int[] pids = data.createIntArray();
1474 Debug.MemoryInfo[] res = getProcessMemoryInfo(pids);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07001475 reply.writeNoException();
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07001476 reply.writeTypedArray(res, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07001477 return true;
1478 }
Christopher Tate5e1ab332009-09-01 20:32:49 -07001479
1480 case KILL_APPLICATION_PROCESS_TRANSACTION: {
1481 data.enforceInterface(IActivityManager.descriptor);
1482 String processName = data.readString();
1483 int uid = data.readInt();
1484 killApplicationProcess(processName, uid);
1485 reply.writeNoException();
1486 return true;
1487 }
Dianne Hackborn3b3e1452009-09-24 19:22:12 -07001488
1489 case OVERRIDE_PENDING_TRANSITION_TRANSACTION: {
1490 data.enforceInterface(IActivityManager.descriptor);
1491 IBinder token = data.readStrongBinder();
1492 String packageName = data.readString();
1493 int enterAnim = data.readInt();
1494 int exitAnim = data.readInt();
1495 overridePendingTransition(token, packageName, enterAnim, exitAnim);
Dianne Hackborn9327f4f2010-01-29 10:38:29 -08001496 reply.writeNoException();
1497 return true;
1498 }
1499
1500 case IS_USER_A_MONKEY_TRANSACTION: {
1501 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackborn7e269642010-08-25 19:50:20 -07001502 boolean areThey = isUserAMonkey();
Dianne Hackborn9327f4f2010-01-29 10:38:29 -08001503 reply.writeNoException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001504 reply.writeInt(areThey ? 1 : 0);
Dianne Hackborn3b3e1452009-09-24 19:22:12 -07001505 return true;
1506 }
Dianne Hackborn860755f2010-06-03 18:47:52 -07001507
Adam Momtaz8f6f1f42013-04-10 12:42:58 -07001508 case SET_USER_IS_MONKEY_TRANSACTION: {
1509 data.enforceInterface(IActivityManager.descriptor);
1510 final boolean monkey = (data.readInt() == 1);
1511 setUserIsMonkey(monkey);
1512 reply.writeNoException();
1513 return true;
1514 }
1515
Dianne Hackborn860755f2010-06-03 18:47:52 -07001516 case FINISH_HEAVY_WEIGHT_APP_TRANSACTION: {
1517 data.enforceInterface(IActivityManager.descriptor);
1518 finishHeavyWeightApp();
1519 reply.writeNoException();
1520 return true;
1521 }
Daniel Sandler69a48172010-06-23 16:29:36 -04001522
1523 case IS_IMMERSIVE_TRANSACTION: {
1524 data.enforceInterface(IActivityManager.descriptor);
1525 IBinder token = data.readStrongBinder();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001526 boolean isit = isImmersive(token);
Daniel Sandler69a48172010-06-23 16:29:36 -04001527 reply.writeNoException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001528 reply.writeInt(isit ? 1 : 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04001529 return true;
1530 }
1531
Craig Mautner5eda9b32013-07-02 11:58:16 -07001532 case CONVERT_FROM_TRANSLUCENT_TRANSACTION: {
Craig Mautner4addfc52013-06-25 08:05:45 -07001533 data.enforceInterface(IActivityManager.descriptor);
1534 IBinder token = data.readStrongBinder();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07001535 boolean converted = convertFromTranslucent(token);
Craig Mautner5eda9b32013-07-02 11:58:16 -07001536 reply.writeNoException();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07001537 reply.writeInt(converted ? 1 : 0);
Craig Mautner5eda9b32013-07-02 11:58:16 -07001538 return true;
1539 }
1540
1541 case CONVERT_TO_TRANSLUCENT_TRANSACTION: {
1542 data.enforceInterface(IActivityManager.descriptor);
1543 IBinder token = data.readStrongBinder();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07001544 boolean converted = convertToTranslucent(token);
Craig Mautner4addfc52013-06-25 08:05:45 -07001545 reply.writeNoException();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07001546 reply.writeInt(converted ? 1 : 0);
Craig Mautner4addfc52013-06-25 08:05:45 -07001547 return true;
1548 }
1549
Daniel Sandler69a48172010-06-23 16:29:36 -04001550 case SET_IMMERSIVE_TRANSACTION: {
1551 data.enforceInterface(IActivityManager.descriptor);
1552 IBinder token = data.readStrongBinder();
1553 boolean imm = data.readInt() == 1;
1554 setImmersive(token, imm);
1555 reply.writeNoException();
1556 return true;
1557 }
1558
1559 case IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION: {
1560 data.enforceInterface(IActivityManager.descriptor);
Dianne Hackborn7e269642010-08-25 19:50:20 -07001561 boolean isit = isTopActivityImmersive();
Daniel Sandler69a48172010-06-23 16:29:36 -04001562 reply.writeNoException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07001563 reply.writeInt(isit ? 1 : 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04001564 return true;
1565 }
1566
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07001567 case CRASH_APPLICATION_TRANSACTION: {
1568 data.enforceInterface(IActivityManager.descriptor);
1569 int uid = data.readInt();
1570 int initialPid = data.readInt();
1571 String packageName = data.readString();
1572 String message = data.readString();
1573 crashApplication(uid, initialPid, packageName, message);
1574 reply.writeNoException();
1575 return true;
1576 }
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07001577
1578 case GET_PROVIDER_MIME_TYPE_TRANSACTION: {
1579 data.enforceInterface(IActivityManager.descriptor);
1580 Uri uri = Uri.CREATOR.createFromParcel(data);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001581 int userId = data.readInt();
1582 String type = getProviderMimeType(uri, userId);
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07001583 reply.writeNoException();
1584 reply.writeString(type);
1585 return true;
1586 }
1587
Dianne Hackborn7e269642010-08-25 19:50:20 -07001588 case NEW_URI_PERMISSION_OWNER_TRANSACTION: {
1589 data.enforceInterface(IActivityManager.descriptor);
1590 String name = data.readString();
1591 IBinder perm = newUriPermissionOwner(name);
1592 reply.writeNoException();
1593 reply.writeStrongBinder(perm);
1594 return true;
1595 }
1596
1597 case GRANT_URI_PERMISSION_FROM_OWNER_TRANSACTION: {
1598 data.enforceInterface(IActivityManager.descriptor);
1599 IBinder owner = data.readStrongBinder();
1600 int fromUid = data.readInt();
1601 String targetPkg = data.readString();
1602 Uri uri = Uri.CREATOR.createFromParcel(data);
1603 int mode = data.readInt();
1604 grantUriPermissionFromOwner(owner, fromUid, targetPkg, uri, mode);
1605 reply.writeNoException();
1606 return true;
1607 }
1608
1609 case REVOKE_URI_PERMISSION_FROM_OWNER_TRANSACTION: {
1610 data.enforceInterface(IActivityManager.descriptor);
1611 IBinder owner = data.readStrongBinder();
1612 Uri uri = null;
1613 if (data.readInt() != 0) {
1614 Uri.CREATOR.createFromParcel(data);
1615 }
1616 int mode = data.readInt();
1617 revokeUriPermissionFromOwner(owner, uri, mode);
1618 reply.writeNoException();
1619 return true;
1620 }
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07001621
Dianne Hackborn90f4aaf2010-09-27 14:58:44 -07001622 case CHECK_GRANT_URI_PERMISSION_TRANSACTION: {
1623 data.enforceInterface(IActivityManager.descriptor);
1624 int callingUid = data.readInt();
1625 String targetPkg = data.readString();
1626 Uri uri = Uri.CREATOR.createFromParcel(data);
1627 int modeFlags = data.readInt();
1628 int res = checkGrantUriPermission(callingUid, targetPkg, uri, modeFlags);
1629 reply.writeNoException();
1630 reply.writeInt(res);
1631 return true;
1632 }
1633
Andy McFadden824c5102010-07-09 16:26:57 -07001634 case DUMP_HEAP_TRANSACTION: {
1635 data.enforceInterface(IActivityManager.descriptor);
1636 String process = data.readString();
Dianne Hackbornb12e1352012-09-26 11:39:20 -07001637 int userId = data.readInt();
Andy McFadden824c5102010-07-09 16:26:57 -07001638 boolean managed = data.readInt() != 0;
1639 String path = data.readString();
1640 ParcelFileDescriptor fd = data.readInt() != 0
Amith Yamasanic2be0d62013-09-23 11:16:28 -07001641 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null;
Dianne Hackborn1676c852012-09-10 14:52:30 -07001642 boolean res = dumpHeap(process, userId, managed, path, fd);
Andy McFadden824c5102010-07-09 16:26:57 -07001643 reply.writeNoException();
1644 reply.writeInt(res ? 1 : 0);
1645 return true;
1646 }
1647
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001648 case START_ACTIVITIES_TRANSACTION:
1649 {
1650 data.enforceInterface(IActivityManager.descriptor);
1651 IBinder b = data.readStrongBinder();
1652 IApplicationThread app = ApplicationThreadNative.asInterface(b);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08001653 String callingPackage = data.readString();
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001654 Intent[] intents = data.createTypedArray(Intent.CREATOR);
1655 String[] resolvedTypes = data.createStringArray();
1656 IBinder resultTo = data.readStrongBinder();
Dianne Hackborna4972e92012-03-14 10:38:05 -07001657 Bundle options = data.readInt() != 0
1658 ? Bundle.CREATOR.createFromParcel(data) : null;
Amith Yamasaniea7e9152012-09-24 16:11:18 -07001659 int userId = data.readInt();
Dianne Hackbornf265ea92013-01-31 15:00:51 -08001660 int result = startActivities(app, callingPackage, intents, resolvedTypes, resultTo,
Amith Yamasaniea7e9152012-09-24 16:11:18 -07001661 options, userId);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08001662 reply.writeNoException();
1663 reply.writeInt(result);
1664 return true;
1665 }
1666
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07001667 case GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION:
1668 {
1669 data.enforceInterface(IActivityManager.descriptor);
1670 int mode = getFrontActivityScreenCompatMode();
1671 reply.writeNoException();
1672 reply.writeInt(mode);
1673 return true;
1674 }
1675
1676 case SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION:
1677 {
1678 data.enforceInterface(IActivityManager.descriptor);
1679 int mode = data.readInt();
1680 setFrontActivityScreenCompatMode(mode);
1681 reply.writeNoException();
1682 reply.writeInt(mode);
1683 return true;
1684 }
1685
1686 case GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION:
1687 {
1688 data.enforceInterface(IActivityManager.descriptor);
1689 String pkg = data.readString();
1690 int mode = getPackageScreenCompatMode(pkg);
1691 reply.writeNoException();
1692 reply.writeInt(mode);
1693 return true;
1694 }
1695
Dianne Hackborne2515ee2011-04-27 18:52:56 -04001696 case SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION:
1697 {
1698 data.enforceInterface(IActivityManager.descriptor);
1699 String pkg = data.readString();
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07001700 int mode = data.readInt();
1701 setPackageScreenCompatMode(pkg, mode);
Dianne Hackborne2515ee2011-04-27 18:52:56 -04001702 reply.writeNoException();
1703 return true;
1704 }
Dianne Hackbornaa9d84c2011-05-09 19:00:59 -07001705
Amith Yamasani4b2e9342011-03-31 12:38:53 -07001706 case SWITCH_USER_TRANSACTION: {
1707 data.enforceInterface(IActivityManager.descriptor);
1708 int userid = data.readInt();
1709 boolean result = switchUser(userid);
1710 reply.writeNoException();
1711 reply.writeInt(result ? 1 : 0);
1712 return true;
1713 }
Amith Yamasani52f1d752012-03-28 18:19:29 -07001714
Kenny Guy08488bf2014-02-21 17:40:37 +00001715 case START_USER_IN_BACKGROUND_TRANSACTION: {
1716 data.enforceInterface(IActivityManager.descriptor);
1717 int userid = data.readInt();
1718 boolean result = startUserInBackground(userid);
1719 reply.writeNoException();
1720 reply.writeInt(result ? 1 : 0);
1721 return true;
1722 }
1723
Dianne Hackborn80a4af22012-08-27 19:18:31 -07001724 case STOP_USER_TRANSACTION: {
1725 data.enforceInterface(IActivityManager.descriptor);
1726 int userid = data.readInt();
1727 IStopUserCallback callback = IStopUserCallback.Stub.asInterface(
1728 data.readStrongBinder());
1729 int result = stopUser(userid, callback);
1730 reply.writeNoException();
1731 reply.writeInt(result);
1732 return true;
1733 }
1734
Amith Yamasani52f1d752012-03-28 18:19:29 -07001735 case GET_CURRENT_USER_TRANSACTION: {
1736 data.enforceInterface(IActivityManager.descriptor);
1737 UserInfo userInfo = getCurrentUser();
1738 reply.writeNoException();
1739 userInfo.writeToParcel(reply, 0);
1740 return true;
1741 }
1742
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001743 case IS_USER_RUNNING_TRANSACTION: {
1744 data.enforceInterface(IActivityManager.descriptor);
1745 int userid = data.readInt();
Dianne Hackborna8a9bd62012-10-09 15:36:59 -07001746 boolean orStopping = data.readInt() != 0;
1747 boolean result = isUserRunning(userid, orStopping);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07001748 reply.writeNoException();
1749 reply.writeInt(result ? 1 : 0);
1750 return true;
1751 }
1752
Dianne Hackbornc72fc672012-09-20 13:12:03 -07001753 case GET_RUNNING_USER_IDS_TRANSACTION: {
1754 data.enforceInterface(IActivityManager.descriptor);
1755 int[] result = getRunningUserIds();
1756 reply.writeNoException();
1757 reply.writeIntArray(result);
1758 return true;
1759 }
1760
Dianne Hackborn0c5001d2011-04-12 18:16:08 -07001761 case REMOVE_SUB_TASK_TRANSACTION:
1762 {
1763 data.enforceInterface(IActivityManager.descriptor);
1764 int taskId = data.readInt();
1765 int subTaskIndex = data.readInt();
1766 boolean result = removeSubTask(taskId, subTaskIndex);
1767 reply.writeNoException();
1768 reply.writeInt(result ? 1 : 0);
1769 return true;
1770 }
1771
1772 case REMOVE_TASK_TRANSACTION:
1773 {
1774 data.enforceInterface(IActivityManager.descriptor);
1775 int taskId = data.readInt();
1776 int fl = data.readInt();
1777 boolean result = removeTask(taskId, fl);
1778 reply.writeNoException();
1779 reply.writeInt(result ? 1 : 0);
1780 return true;
1781 }
Amith Yamasani4b2e9342011-03-31 12:38:53 -07001782
Jeff Sharkeya4620792011-05-20 15:29:23 -07001783 case REGISTER_PROCESS_OBSERVER_TRANSACTION: {
1784 data.enforceInterface(IActivityManager.descriptor);
1785 IProcessObserver observer = IProcessObserver.Stub.asInterface(
1786 data.readStrongBinder());
1787 registerProcessObserver(observer);
1788 return true;
1789 }
1790
1791 case UNREGISTER_PROCESS_OBSERVER_TRANSACTION: {
1792 data.enforceInterface(IActivityManager.descriptor);
1793 IProcessObserver observer = IProcessObserver.Stub.asInterface(
1794 data.readStrongBinder());
1795 unregisterProcessObserver(observer);
1796 return true;
1797 }
1798
Dianne Hackborn36cd41f2011-05-25 21:00:46 -07001799 case GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION:
1800 {
1801 data.enforceInterface(IActivityManager.descriptor);
1802 String pkg = data.readString();
1803 boolean ask = getPackageAskScreenCompat(pkg);
1804 reply.writeNoException();
1805 reply.writeInt(ask ? 1 : 0);
1806 return true;
1807 }
1808
1809 case SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION:
1810 {
1811 data.enforceInterface(IActivityManager.descriptor);
1812 String pkg = data.readString();
1813 boolean ask = data.readInt() != 0;
1814 setPackageAskScreenCompat(pkg, ask);
1815 reply.writeNoException();
1816 return true;
1817 }
1818
Dianne Hackborn6c418d52011-06-29 14:05:33 -07001819 case IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION: {
1820 data.enforceInterface(IActivityManager.descriptor);
1821 IIntentSender r = IIntentSender.Stub.asInterface(
1822 data.readStrongBinder());
1823 boolean res = isIntentSenderTargetedToPackage(r);
1824 reply.writeNoException();
1825 reply.writeInt(res ? 1 : 0);
1826 return true;
1827 }
1828
Dianne Hackborn1927ae82012-06-22 15:21:36 -07001829 case IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION: {
1830 data.enforceInterface(IActivityManager.descriptor);
1831 IIntentSender r = IIntentSender.Stub.asInterface(
1832 data.readStrongBinder());
1833 boolean res = isIntentSenderAnActivity(r);
1834 reply.writeNoException();
1835 reply.writeInt(res ? 1 : 0);
1836 return true;
1837 }
1838
Dianne Hackborn81038902012-11-26 17:04:09 -08001839 case GET_INTENT_FOR_INTENT_SENDER_TRANSACTION: {
1840 data.enforceInterface(IActivityManager.descriptor);
1841 IIntentSender r = IIntentSender.Stub.asInterface(
1842 data.readStrongBinder());
1843 Intent intent = getIntentForIntentSender(r);
1844 reply.writeNoException();
1845 if (intent != null) {
1846 reply.writeInt(1);
1847 intent.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
1848 } else {
1849 reply.writeInt(0);
1850 }
1851 return true;
1852 }
1853
Dianne Hackborna1f1a3c2014-02-24 18:12:28 -08001854 case GET_TAG_FOR_INTENT_SENDER_TRANSACTION: {
1855 data.enforceInterface(IActivityManager.descriptor);
1856 IIntentSender r = IIntentSender.Stub.asInterface(
1857 data.readStrongBinder());
1858 String prefix = data.readString();
1859 String tag = getTagForIntentSender(r, prefix);
1860 reply.writeNoException();
1861 reply.writeString(tag);
1862 return true;
1863 }
1864
Dianne Hackborn31ca8542011-07-19 14:58:28 -07001865 case UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION: {
1866 data.enforceInterface(IActivityManager.descriptor);
1867 Configuration config = Configuration.CREATOR.createFromParcel(data);
1868 updatePersistentConfiguration(config);
1869 reply.writeNoException();
1870 return true;
1871 }
1872
Dianne Hackbornb437e092011-08-05 17:50:29 -07001873 case GET_PROCESS_PSS_TRANSACTION: {
1874 data.enforceInterface(IActivityManager.descriptor);
1875 int[] pids = data.createIntArray();
1876 long[] pss = getProcessPss(pids);
1877 reply.writeNoException();
1878 reply.writeLongArray(pss);
1879 return true;
1880 }
1881
Dianne Hackborn661cd522011-08-22 00:26:20 -07001882 case SHOW_BOOT_MESSAGE_TRANSACTION: {
1883 data.enforceInterface(IActivityManager.descriptor);
1884 CharSequence msg = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data);
1885 boolean always = data.readInt() != 0;
1886 showBootMessage(msg, always);
1887 reply.writeNoException();
1888 return true;
1889 }
1890
Dianne Hackborn90c52de2011-09-23 12:57:44 -07001891 case DISMISS_KEYGUARD_ON_NEXT_ACTIVITY_TRANSACTION: {
1892 data.enforceInterface(IActivityManager.descriptor);
1893 dismissKeyguardOnNextActivity();
1894 reply.writeNoException();
1895 return true;
1896 }
1897
Adam Powelldd8fab22012-03-22 17:47:27 -07001898 case TARGET_TASK_AFFINITY_MATCHES_ACTIVITY_TRANSACTION: {
1899 data.enforceInterface(IActivityManager.descriptor);
1900 IBinder token = data.readStrongBinder();
1901 String destAffinity = data.readString();
1902 boolean res = targetTaskAffinityMatchesActivity(token, destAffinity);
1903 reply.writeNoException();
1904 reply.writeInt(res ? 1 : 0);
1905 return true;
1906 }
1907
1908 case NAVIGATE_UP_TO_TRANSACTION: {
1909 data.enforceInterface(IActivityManager.descriptor);
1910 IBinder token = data.readStrongBinder();
1911 Intent target = Intent.CREATOR.createFromParcel(data);
1912 int resultCode = data.readInt();
1913 Intent resultData = null;
1914 if (data.readInt() != 0) {
1915 resultData = Intent.CREATOR.createFromParcel(data);
1916 }
1917 boolean res = navigateUpTo(token, target, resultCode, resultData);
1918 reply.writeNoException();
1919 reply.writeInt(res ? 1 : 0);
1920 return true;
1921 }
1922
Dianne Hackborn5320eb82012-05-18 12:05:04 -07001923 case GET_LAUNCHED_FROM_UID_TRANSACTION: {
1924 data.enforceInterface(IActivityManager.descriptor);
1925 IBinder token = data.readStrongBinder();
1926 int res = getLaunchedFromUid(token);
1927 reply.writeNoException();
1928 reply.writeInt(res);
1929 return true;
1930 }
1931
Dianne Hackbornf265ea92013-01-31 15:00:51 -08001932 case GET_LAUNCHED_FROM_PACKAGE_TRANSACTION: {
1933 data.enforceInterface(IActivityManager.descriptor);
1934 IBinder token = data.readStrongBinder();
1935 String res = getLaunchedFromPackage(token);
1936 reply.writeNoException();
1937 reply.writeString(res);
1938 return true;
1939 }
1940
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07001941 case REGISTER_USER_SWITCH_OBSERVER_TRANSACTION: {
1942 data.enforceInterface(IActivityManager.descriptor);
1943 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface(
1944 data.readStrongBinder());
1945 registerUserSwitchObserver(observer);
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07001946 reply.writeNoException();
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07001947 return true;
1948 }
1949
1950 case UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION: {
1951 data.enforceInterface(IActivityManager.descriptor);
1952 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface(
1953 data.readStrongBinder());
1954 unregisterUserSwitchObserver(observer);
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07001955 reply.writeNoException();
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07001956 return true;
1957 }
1958
Dianne Hackbornd4ac8d72012-09-27 23:20:10 -07001959 case REQUEST_BUG_REPORT_TRANSACTION: {
1960 data.enforceInterface(IActivityManager.descriptor);
1961 requestBugReport();
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07001962 reply.writeNoException();
1963 return true;
1964 }
1965
1966 case INPUT_DISPATCHING_TIMED_OUT_TRANSACTION: {
1967 data.enforceInterface(IActivityManager.descriptor);
1968 int pid = data.readInt();
1969 boolean aboveSystem = data.readInt() != 0;
Jeff Brownbd181bb2013-09-10 16:44:24 -07001970 String reason = data.readString();
1971 long res = inputDispatchingTimedOut(pid, aboveSystem, reason);
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07001972 reply.writeNoException();
1973 reply.writeLong(res);
Dianne Hackbornd4ac8d72012-09-27 23:20:10 -07001974 return true;
1975 }
1976
Adam Skorydfc7fd72013-08-05 19:23:41 -07001977 case GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION: {
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08001978 data.enforceInterface(IActivityManager.descriptor);
1979 int requestType = data.readInt();
Adam Skorydfc7fd72013-08-05 19:23:41 -07001980 Bundle res = getAssistContextExtras(requestType);
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08001981 reply.writeNoException();
1982 reply.writeBundle(res);
1983 return true;
1984 }
1985
Adam Skorydfc7fd72013-08-05 19:23:41 -07001986 case REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION: {
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08001987 data.enforceInterface(IActivityManager.descriptor);
1988 IBinder token = data.readStrongBinder();
1989 Bundle extras = data.readBundle();
Adam Skory7140a252013-09-11 12:04:58 +01001990 reportAssistContextExtras(token, extras);
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08001991 reply.writeNoException();
1992 return true;
1993 }
1994
Dianne Hackbornf1b78242013-04-08 22:28:59 -07001995 case KILL_UID_TRANSACTION: {
1996 data.enforceInterface(IActivityManager.descriptor);
1997 int uid = data.readInt();
1998 String reason = data.readString();
1999 killUid(uid, reason);
2000 reply.writeNoException();
2001 return true;
2002 }
2003
Dianne Hackborn8bd64df2013-05-06 16:07:26 -07002004 case HANG_TRANSACTION: {
2005 data.enforceInterface(IActivityManager.descriptor);
2006 IBinder who = data.readStrongBinder();
2007 boolean allowRestart = data.readInt() != 0;
2008 hang(who, allowRestart);
2009 reply.writeNoException();
2010 return true;
2011 }
2012
Dianne Hackborn2286cdc2013-07-01 19:10:06 -07002013 case REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION: {
2014 data.enforceInterface(IActivityManager.descriptor);
2015 IBinder token = data.readStrongBinder();
2016 reportActivityFullyDrawn(token);
2017 reply.writeNoException();
2018 return true;
2019 }
2020
Craig Mautner5eda9b32013-07-02 11:58:16 -07002021 case NOTIFY_ACTIVITY_DRAWN_TRANSACTION: {
2022 data.enforceInterface(IActivityManager.descriptor);
2023 IBinder token = data.readStrongBinder();
2024 notifyActivityDrawn(token);
2025 reply.writeNoException();
2026 return true;
2027 }
Dianne Hackborn57a7f592013-07-22 18:21:32 -07002028
2029 case RESTART_TRANSACTION: {
2030 data.enforceInterface(IActivityManager.descriptor);
2031 restart();
2032 reply.writeNoException();
2033 return true;
2034 }
Jeff Sharkey08da7a12013-08-11 20:53:18 -07002035
Dianne Hackborn35f72be2013-09-16 10:57:39 -07002036 case PERFORM_IDLE_MAINTENANCE_TRANSACTION: {
2037 data.enforceInterface(IActivityManager.descriptor);
2038 performIdleMaintenance();
2039 reply.writeNoException();
2040 return true;
2041 }
Craig Mautner4a1cb222013-12-04 16:14:06 -08002042
2043 case CREATE_ACTIVITY_CONTAINER_TRANSACTION: {
2044 data.enforceInterface(IActivityManager.descriptor);
2045 IBinder parentActivityToken = data.readStrongBinder();
2046 IActivityContainerCallback callback =
Craig Mautnere3a00d72014-04-16 08:31:19 -07002047 IActivityContainerCallback.Stub.asInterface(data.readStrongBinder());
Craig Mautner4a1cb222013-12-04 16:14:06 -08002048 IActivityContainer activityContainer =
2049 createActivityContainer(parentActivityToken, callback);
2050 reply.writeNoException();
Craig Mautnerbd503a42014-01-10 10:16:43 -08002051 if (activityContainer != null) {
2052 reply.writeInt(1);
2053 reply.writeStrongBinder(activityContainer.asBinder());
2054 } else {
2055 reply.writeInt(0);
2056 }
Craig Mautner4a1cb222013-12-04 16:14:06 -08002057 return true;
2058 }
2059
Craig Mautner95da1082014-02-24 17:54:35 -08002060 case DELETE_ACTIVITY_CONTAINER_TRANSACTION: {
2061 data.enforceInterface(IActivityManager.descriptor);
2062 IActivityContainer activityContainer =
2063 IActivityContainer.Stub.asInterface(data.readStrongBinder());
2064 deleteActivityContainer(activityContainer);
2065 reply.writeNoException();
2066 return true;
2067 }
2068
Craig Mautnere0a38842013-12-16 16:14:02 -08002069 case GET_ACTIVITY_CONTAINER_TRANSACTION: {
2070 data.enforceInterface(IActivityManager.descriptor);
2071 IBinder activityToken = data.readStrongBinder();
2072 IActivityContainer activityContainer = getEnclosingActivityContainer(activityToken);
2073 reply.writeNoException();
Craig Mautnerbd503a42014-01-10 10:16:43 -08002074 if (activityContainer != null) {
2075 reply.writeInt(1);
2076 reply.writeStrongBinder(activityContainer.asBinder());
2077 } else {
2078 reply.writeInt(0);
2079 }
Craig Mautnere0a38842013-12-16 16:14:02 -08002080 return true;
2081 }
2082
Craig Mautner4a1cb222013-12-04 16:14:06 -08002083 case GET_HOME_ACTIVITY_TOKEN_TRANSACTION: {
2084 data.enforceInterface(IActivityManager.descriptor);
2085 IBinder homeActivityToken = getHomeActivityToken();
2086 reply.writeNoException();
2087 reply.writeStrongBinder(homeActivityToken);
2088 return true;
2089 }
Craig Mautneraea74a52014-03-08 14:23:10 -08002090
2091 case START_LOCK_TASK_BY_TASK_ID_TRANSACTION: {
2092 data.enforceInterface(IActivityManager.descriptor);
2093 final int taskId = data.readInt();
2094 startLockTaskMode(taskId);
2095 reply.writeNoException();
2096 return true;
2097 }
2098
2099 case START_LOCK_TASK_BY_TOKEN_TRANSACTION: {
2100 data.enforceInterface(IActivityManager.descriptor);
2101 IBinder token = data.readStrongBinder();
2102 startLockTaskMode(token);
2103 reply.writeNoException();
2104 return true;
2105 }
2106
2107 case STOP_LOCK_TASK_MODE_TRANSACTION: {
2108 data.enforceInterface(IActivityManager.descriptor);
2109 stopLockTaskMode();
2110 reply.writeNoException();
2111 return true;
2112 }
2113
2114 case IS_IN_LOCK_TASK_MODE_TRANSACTION: {
2115 data.enforceInterface(IActivityManager.descriptor);
2116 final boolean isInLockTaskMode = isInLockTaskMode();
2117 reply.writeNoException();
2118 reply.writeInt(isInLockTaskMode ? 1 : 0);
2119 return true;
2120 }
Craig Mautner2fbd7542014-03-21 09:34:07 -07002121
Winson Chung03a9bae2014-05-02 09:56:12 -07002122 case SET_RECENTS_ACTIVITY_VALUES_TRANSACTION: {
Craig Mautner2fbd7542014-03-21 09:34:07 -07002123 data.enforceInterface(IActivityManager.descriptor);
2124 IBinder token = data.readStrongBinder();
Winson Chung03a9bae2014-05-02 09:56:12 -07002125 ActivityManager.RecentsActivityValues values =
2126 ActivityManager.RecentsActivityValues.CREATOR.createFromParcel(data);
2127 setRecentsActivityValues(token, values);
Craig Mautner2fbd7542014-03-21 09:34:07 -07002128 reply.writeNoException();
2129 return true;
2130 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002131 }
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08002132
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002133 return super.onTransact(code, data, reply, flags);
2134 }
2135
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08002136 public IBinder asBinder() {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002137 return this;
2138 }
2139
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08002140 private static final Singleton<IActivityManager> gDefault = new Singleton<IActivityManager>() {
2141 protected IActivityManager create() {
2142 IBinder b = ServiceManager.getService("activity");
Joe Onorato43a17652011-04-06 19:22:23 -07002143 if (false) {
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08002144 Log.v("ActivityManager", "default service binder = " + b);
2145 }
2146 IActivityManager am = asInterface(b);
Joe Onorato43a17652011-04-06 19:22:23 -07002147 if (false) {
Brad Fitzpatrick663f4f32010-11-23 19:15:24 -08002148 Log.v("ActivityManager", "default service = " + am);
2149 }
2150 return am;
2151 }
2152 };
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002153}
2154
2155class ActivityManagerProxy implements IActivityManager
2156{
2157 public ActivityManagerProxy(IBinder remote)
2158 {
2159 mRemote = remote;
2160 }
Siva Velusamy92a8b222012-03-09 16:24:04 -08002161
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002162 public IBinder asBinder()
2163 {
2164 return mRemote;
2165 }
Siva Velusamy92a8b222012-03-09 16:24:04 -08002166
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002167 public int startActivity(IApplicationThread caller, String callingPackage, Intent intent,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002168 String resolvedType, IBinder resultTo, String resultWho, int requestCode,
2169 int startFlags, String profileFile,
2170 ParcelFileDescriptor profileFd, Bundle options) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002171 Parcel data = Parcel.obtain();
2172 Parcel reply = Parcel.obtain();
2173 data.writeInterfaceToken(IActivityManager.descriptor);
2174 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002175 data.writeString(callingPackage);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002176 intent.writeToParcel(data, 0);
2177 data.writeString(resolvedType);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002178 data.writeStrongBinder(resultTo);
2179 data.writeString(resultWho);
2180 data.writeInt(requestCode);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002181 data.writeInt(startFlags);
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07002182 data.writeString(profileFile);
2183 if (profileFd != null) {
2184 data.writeInt(1);
2185 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
2186 } else {
2187 data.writeInt(0);
2188 }
Dianne Hackborna4972e92012-03-14 10:38:05 -07002189 if (options != null) {
2190 data.writeInt(1);
2191 options.writeToParcel(data, 0);
2192 } else {
2193 data.writeInt(0);
2194 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002195 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0);
2196 reply.readException();
2197 int result = reply.readInt();
2198 reply.recycle();
2199 data.recycle();
2200 return result;
2201 }
Amith Yamasani82644082012-08-03 13:09:11 -07002202
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002203 public int startActivityAsUser(IApplicationThread caller, String callingPackage, Intent intent,
Amith Yamasani82644082012-08-03 13:09:11 -07002204 String resolvedType, IBinder resultTo, String resultWho, int requestCode,
2205 int startFlags, String profileFile,
2206 ParcelFileDescriptor profileFd, Bundle options, int userId) throws RemoteException {
2207 Parcel data = Parcel.obtain();
2208 Parcel reply = Parcel.obtain();
2209 data.writeInterfaceToken(IActivityManager.descriptor);
2210 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002211 data.writeString(callingPackage);
Amith Yamasani82644082012-08-03 13:09:11 -07002212 intent.writeToParcel(data, 0);
2213 data.writeString(resolvedType);
2214 data.writeStrongBinder(resultTo);
2215 data.writeString(resultWho);
2216 data.writeInt(requestCode);
2217 data.writeInt(startFlags);
2218 data.writeString(profileFile);
2219 if (profileFd != null) {
2220 data.writeInt(1);
2221 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
2222 } else {
2223 data.writeInt(0);
2224 }
2225 if (options != null) {
2226 data.writeInt(1);
2227 options.writeToParcel(data, 0);
2228 } else {
2229 data.writeInt(0);
2230 }
2231 data.writeInt(userId);
2232 mRemote.transact(START_ACTIVITY_AS_USER_TRANSACTION, data, reply, 0);
2233 reply.readException();
2234 int result = reply.readInt();
2235 reply.recycle();
2236 data.recycle();
2237 return result;
2238 }
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002239 public WaitResult startActivityAndWait(IApplicationThread caller, String callingPackage,
2240 Intent intent, String resolvedType, IBinder resultTo, String resultWho,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002241 int requestCode, int startFlags, String profileFile,
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07002242 ParcelFileDescriptor profileFd, Bundle options, int userId) throws RemoteException {
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08002243 Parcel data = Parcel.obtain();
2244 Parcel reply = Parcel.obtain();
2245 data.writeInterfaceToken(IActivityManager.descriptor);
2246 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002247 data.writeString(callingPackage);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08002248 intent.writeToParcel(data, 0);
2249 data.writeString(resolvedType);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08002250 data.writeStrongBinder(resultTo);
2251 data.writeString(resultWho);
2252 data.writeInt(requestCode);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002253 data.writeInt(startFlags);
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07002254 data.writeString(profileFile);
2255 if (profileFd != null) {
2256 data.writeInt(1);
2257 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
2258 } else {
2259 data.writeInt(0);
2260 }
Dianne Hackborna4972e92012-03-14 10:38:05 -07002261 if (options != null) {
2262 data.writeInt(1);
2263 options.writeToParcel(data, 0);
2264 } else {
2265 data.writeInt(0);
2266 }
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07002267 data.writeInt(userId);
Dianne Hackborn8f7f35e2010-02-25 18:48:12 -08002268 mRemote.transact(START_ACTIVITY_AND_WAIT_TRANSACTION, data, reply, 0);
2269 reply.readException();
2270 WaitResult result = WaitResult.CREATOR.createFromParcel(reply);
2271 reply.recycle();
2272 data.recycle();
2273 return result;
2274 }
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002275 public int startActivityWithConfig(IApplicationThread caller, String callingPackage,
2276 Intent intent, String resolvedType, IBinder resultTo, String resultWho,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002277 int requestCode, int startFlags, Configuration config,
Dianne Hackborn41203752012-08-31 14:05:51 -07002278 Bundle options, int userId) throws RemoteException {
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002279 Parcel data = Parcel.obtain();
2280 Parcel reply = Parcel.obtain();
2281 data.writeInterfaceToken(IActivityManager.descriptor);
2282 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08002283 data.writeString(callingPackage);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002284 intent.writeToParcel(data, 0);
2285 data.writeString(resolvedType);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002286 data.writeStrongBinder(resultTo);
2287 data.writeString(resultWho);
2288 data.writeInt(requestCode);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002289 data.writeInt(startFlags);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002290 config.writeToParcel(data, 0);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002291 if (options != null) {
2292 data.writeInt(1);
2293 options.writeToParcel(data, 0);
2294 } else {
2295 data.writeInt(0);
2296 }
Dianne Hackborn41203752012-08-31 14:05:51 -07002297 data.writeInt(userId);
Dianne Hackborn2ccda4d2010-03-22 21:49:15 -07002298 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0);
2299 reply.readException();
2300 int result = reply.readInt();
2301 reply.recycle();
2302 data.recycle();
2303 return result;
2304 }
Dianne Hackbornfa82f222009-09-17 15:14:12 -07002305 public int startActivityIntentSender(IApplicationThread caller,
2306 IntentSender intent, Intent fillInIntent, String resolvedType,
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -07002307 IBinder resultTo, String resultWho, int requestCode,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002308 int flagsMask, int flagsValues, Bundle options) throws RemoteException {
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -07002309 Parcel data = Parcel.obtain();
2310 Parcel reply = Parcel.obtain();
2311 data.writeInterfaceToken(IActivityManager.descriptor);
2312 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2313 intent.writeToParcel(data, 0);
2314 if (fillInIntent != null) {
2315 data.writeInt(1);
2316 fillInIntent.writeToParcel(data, 0);
2317 } else {
2318 data.writeInt(0);
2319 }
2320 data.writeString(resolvedType);
2321 data.writeStrongBinder(resultTo);
2322 data.writeString(resultWho);
2323 data.writeInt(requestCode);
2324 data.writeInt(flagsMask);
2325 data.writeInt(flagsValues);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002326 if (options != null) {
2327 data.writeInt(1);
2328 options.writeToParcel(data, 0);
2329 } else {
2330 data.writeInt(0);
2331 }
Dianne Hackbornfa82f222009-09-17 15:14:12 -07002332 mRemote.transact(START_ACTIVITY_INTENT_SENDER_TRANSACTION, data, reply, 0);
Dianne Hackbornbcbcaa72009-09-10 10:54:46 -07002333 reply.readException();
2334 int result = reply.readInt();
2335 reply.recycle();
2336 data.recycle();
2337 return result;
2338 }
Dianne Hackborn91097de2014-04-04 18:02:06 -07002339 public int startVoiceActivity(String callingPackage, int callingPid, int callingUid,
2340 Intent intent, String resolvedType, IVoiceInteractionSession session,
2341 IVoiceInteractor interactor, int startFlags, String profileFile,
2342 ParcelFileDescriptor profileFd, Bundle options, int userId) throws RemoteException {
2343 Parcel data = Parcel.obtain();
2344 Parcel reply = Parcel.obtain();
2345 data.writeInterfaceToken(IActivityManager.descriptor);
2346 data.writeString(callingPackage);
2347 data.writeInt(callingPid);
2348 data.writeInt(callingUid);
2349 intent.writeToParcel(data, 0);
2350 data.writeString(resolvedType);
2351 data.writeStrongBinder(session.asBinder());
2352 data.writeStrongBinder(interactor.asBinder());
2353 data.writeInt(startFlags);
2354 data.writeString(profileFile);
2355 if (profileFd != null) {
2356 data.writeInt(1);
2357 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
2358 } else {
2359 data.writeInt(0);
2360 }
2361 if (options != null) {
2362 data.writeInt(1);
2363 options.writeToParcel(data, 0);
2364 } else {
2365 data.writeInt(0);
2366 }
2367 data.writeInt(userId);
2368 mRemote.transact(START_VOICE_ACTIVITY_TRANSACTION, data, reply, 0);
2369 reply.readException();
2370 int result = reply.readInt();
2371 reply.recycle();
2372 data.recycle();
2373 return result;
2374 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002375 public boolean startNextMatchingActivity(IBinder callingActivity,
Dianne Hackborna4972e92012-03-14 10:38:05 -07002376 Intent intent, Bundle options) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002377 Parcel data = Parcel.obtain();
2378 Parcel reply = Parcel.obtain();
2379 data.writeInterfaceToken(IActivityManager.descriptor);
2380 data.writeStrongBinder(callingActivity);
2381 intent.writeToParcel(data, 0);
Dianne Hackborna4972e92012-03-14 10:38:05 -07002382 if (options != null) {
2383 data.writeInt(1);
2384 options.writeToParcel(data, 0);
2385 } else {
2386 data.writeInt(0);
2387 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002388 mRemote.transact(START_NEXT_MATCHING_ACTIVITY_TRANSACTION, data, reply, 0);
2389 reply.readException();
2390 int result = reply.readInt();
2391 reply.recycle();
2392 data.recycle();
2393 return result != 0;
2394 }
Winson Chung3b3f4642014-04-22 10:08:18 -07002395 public boolean finishActivity(IBinder token, int resultCode, Intent resultData, boolean finishTask)
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002396 throws RemoteException {
2397 Parcel data = Parcel.obtain();
2398 Parcel reply = Parcel.obtain();
2399 data.writeInterfaceToken(IActivityManager.descriptor);
2400 data.writeStrongBinder(token);
2401 data.writeInt(resultCode);
2402 if (resultData != null) {
2403 data.writeInt(1);
2404 resultData.writeToParcel(data, 0);
2405 } else {
2406 data.writeInt(0);
2407 }
Winson Chung3b3f4642014-04-22 10:08:18 -07002408 data.writeInt(finishTask ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002409 mRemote.transact(FINISH_ACTIVITY_TRANSACTION, data, reply, 0);
2410 reply.readException();
2411 boolean res = reply.readInt() != 0;
2412 data.recycle();
2413 reply.recycle();
2414 return res;
2415 }
2416 public void finishSubActivity(IBinder token, String resultWho, int requestCode) throws RemoteException
2417 {
2418 Parcel data = Parcel.obtain();
2419 Parcel reply = Parcel.obtain();
2420 data.writeInterfaceToken(IActivityManager.descriptor);
2421 data.writeStrongBinder(token);
2422 data.writeString(resultWho);
2423 data.writeInt(requestCode);
2424 mRemote.transact(FINISH_SUB_ACTIVITY_TRANSACTION, data, reply, 0);
2425 reply.readException();
2426 data.recycle();
2427 reply.recycle();
2428 }
Dianne Hackbornecc5a9c2012-04-26 18:56:09 -07002429 public boolean finishActivityAffinity(IBinder token) throws RemoteException {
2430 Parcel data = Parcel.obtain();
2431 Parcel reply = Parcel.obtain();
2432 data.writeInterfaceToken(IActivityManager.descriptor);
2433 data.writeStrongBinder(token);
2434 mRemote.transact(FINISH_ACTIVITY_AFFINITY_TRANSACTION, data, reply, 0);
2435 reply.readException();
2436 boolean res = reply.readInt() != 0;
2437 data.recycle();
2438 reply.recycle();
2439 return res;
2440 }
Dianne Hackborn061d58a2010-03-12 15:07:06 -08002441 public boolean willActivityBeVisible(IBinder token) throws RemoteException {
2442 Parcel data = Parcel.obtain();
2443 Parcel reply = Parcel.obtain();
2444 data.writeInterfaceToken(IActivityManager.descriptor);
2445 data.writeStrongBinder(token);
2446 mRemote.transact(WILL_ACTIVITY_BE_VISIBLE_TRANSACTION, data, reply, 0);
2447 reply.readException();
2448 boolean res = reply.readInt() != 0;
2449 data.recycle();
2450 reply.recycle();
2451 return res;
2452 }
Dianne Hackborn6c418d52011-06-29 14:05:33 -07002453 public Intent registerReceiver(IApplicationThread caller, String packageName,
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002454 IIntentReceiver receiver,
Dianne Hackborn20e80982012-08-31 19:00:44 -07002455 IntentFilter filter, String perm, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002456 {
2457 Parcel data = Parcel.obtain();
2458 Parcel reply = Parcel.obtain();
2459 data.writeInterfaceToken(IActivityManager.descriptor);
2460 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackborn6c418d52011-06-29 14:05:33 -07002461 data.writeString(packageName);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002462 data.writeStrongBinder(receiver != null ? receiver.asBinder() : null);
2463 filter.writeToParcel(data, 0);
2464 data.writeString(perm);
Dianne Hackborn20e80982012-08-31 19:00:44 -07002465 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002466 mRemote.transact(REGISTER_RECEIVER_TRANSACTION, data, reply, 0);
2467 reply.readException();
2468 Intent intent = null;
2469 int haveIntent = reply.readInt();
2470 if (haveIntent != 0) {
2471 intent = Intent.CREATOR.createFromParcel(reply);
2472 }
2473 reply.recycle();
2474 data.recycle();
2475 return intent;
2476 }
2477 public void unregisterReceiver(IIntentReceiver receiver) throws RemoteException
2478 {
2479 Parcel data = Parcel.obtain();
2480 Parcel reply = Parcel.obtain();
2481 data.writeInterfaceToken(IActivityManager.descriptor);
2482 data.writeStrongBinder(receiver.asBinder());
2483 mRemote.transact(UNREGISTER_RECEIVER_TRANSACTION, data, reply, 0);
2484 reply.readException();
2485 data.recycle();
2486 reply.recycle();
2487 }
2488 public int broadcastIntent(IApplicationThread caller,
2489 Intent intent, String resolvedType, IIntentReceiver resultTo,
2490 int resultCode, String resultData, Bundle map,
Dianne Hackbornf51f6122013-02-04 18:23:34 -08002491 String requiredPermission, int appOp, boolean serialized,
Amith Yamasani742a6712011-05-04 14:49:28 -07002492 boolean sticky, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002493 {
2494 Parcel data = Parcel.obtain();
2495 Parcel reply = Parcel.obtain();
2496 data.writeInterfaceToken(IActivityManager.descriptor);
2497 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2498 intent.writeToParcel(data, 0);
2499 data.writeString(resolvedType);
2500 data.writeStrongBinder(resultTo != null ? resultTo.asBinder() : null);
2501 data.writeInt(resultCode);
2502 data.writeString(resultData);
2503 data.writeBundle(map);
2504 data.writeString(requiredPermission);
Dianne Hackbornf51f6122013-02-04 18:23:34 -08002505 data.writeInt(appOp);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002506 data.writeInt(serialized ? 1 : 0);
2507 data.writeInt(sticky ? 1 : 0);
Amith Yamasani742a6712011-05-04 14:49:28 -07002508 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002509 mRemote.transact(BROADCAST_INTENT_TRANSACTION, data, reply, 0);
2510 reply.readException();
2511 int res = reply.readInt();
2512 reply.recycle();
2513 data.recycle();
2514 return res;
2515 }
Amith Yamasani742a6712011-05-04 14:49:28 -07002516 public void unbroadcastIntent(IApplicationThread caller, Intent intent, int userId)
2517 throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002518 {
2519 Parcel data = Parcel.obtain();
2520 Parcel reply = Parcel.obtain();
2521 data.writeInterfaceToken(IActivityManager.descriptor);
2522 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2523 intent.writeToParcel(data, 0);
Amith Yamasani742a6712011-05-04 14:49:28 -07002524 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002525 mRemote.transact(UNBROADCAST_INTENT_TRANSACTION, data, reply, 0);
2526 reply.readException();
2527 data.recycle();
2528 reply.recycle();
2529 }
2530 public void finishReceiver(IBinder who, int resultCode, String resultData, Bundle map, boolean abortBroadcast) throws RemoteException
2531 {
2532 Parcel data = Parcel.obtain();
2533 Parcel reply = Parcel.obtain();
2534 data.writeInterfaceToken(IActivityManager.descriptor);
2535 data.writeStrongBinder(who);
2536 data.writeInt(resultCode);
2537 data.writeString(resultData);
2538 data.writeBundle(map);
2539 data.writeInt(abortBroadcast ? 1 : 0);
2540 mRemote.transact(FINISH_RECEIVER_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2541 reply.readException();
2542 data.recycle();
2543 reply.recycle();
2544 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002545 public void attachApplication(IApplicationThread app) throws RemoteException
2546 {
2547 Parcel data = Parcel.obtain();
2548 Parcel reply = Parcel.obtain();
2549 data.writeInterfaceToken(IActivityManager.descriptor);
2550 data.writeStrongBinder(app.asBinder());
2551 mRemote.transact(ATTACH_APPLICATION_TRANSACTION, data, reply, 0);
2552 reply.readException();
2553 data.recycle();
2554 reply.recycle();
2555 }
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07002556 public void activityIdle(IBinder token, Configuration config, boolean stopProfiling)
2557 throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002558 {
2559 Parcel data = Parcel.obtain();
2560 Parcel reply = Parcel.obtain();
2561 data.writeInterfaceToken(IActivityManager.descriptor);
2562 data.writeStrongBinder(token);
Dianne Hackborne88846e2009-09-30 21:34:25 -07002563 if (config != null) {
2564 data.writeInt(1);
2565 config.writeToParcel(data, 0);
2566 } else {
2567 data.writeInt(0);
2568 }
Dianne Hackborn62f20ec2011-08-15 17:40:28 -07002569 data.writeInt(stopProfiling ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002570 mRemote.transact(ACTIVITY_IDLE_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2571 reply.readException();
2572 data.recycle();
2573 reply.recycle();
2574 }
Dianne Hackbornad9b32112012-09-17 15:35:01 -07002575 public void activityResumed(IBinder token) throws RemoteException
2576 {
2577 Parcel data = Parcel.obtain();
2578 Parcel reply = Parcel.obtain();
2579 data.writeInterfaceToken(IActivityManager.descriptor);
2580 data.writeStrongBinder(token);
2581 mRemote.transact(ACTIVITY_RESUMED_TRANSACTION, data, reply, 0);
2582 reply.readException();
2583 data.recycle();
2584 reply.recycle();
2585 }
Dianne Hackborn0aae2d42010-12-07 23:51:29 -08002586 public void activityPaused(IBinder token) throws RemoteException
2587 {
2588 Parcel data = Parcel.obtain();
2589 Parcel reply = Parcel.obtain();
2590 data.writeInterfaceToken(IActivityManager.descriptor);
2591 data.writeStrongBinder(token);
2592 mRemote.transact(ACTIVITY_PAUSED_TRANSACTION, data, reply, 0);
2593 reply.readException();
2594 data.recycle();
2595 reply.recycle();
2596 }
2597 public void activityStopped(IBinder token, Bundle state,
2598 Bitmap thumbnail, CharSequence description) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002599 {
2600 Parcel data = Parcel.obtain();
2601 Parcel reply = Parcel.obtain();
2602 data.writeInterfaceToken(IActivityManager.descriptor);
2603 data.writeStrongBinder(token);
2604 data.writeBundle(state);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002605 if (thumbnail != null) {
2606 data.writeInt(1);
2607 thumbnail.writeToParcel(data, 0);
2608 } else {
2609 data.writeInt(0);
2610 }
2611 TextUtils.writeToParcel(description, data, 0);
2612 mRemote.transact(ACTIVITY_STOPPED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2613 reply.readException();
2614 data.recycle();
2615 reply.recycle();
2616 }
Dianne Hackborn4eba96b2011-01-21 13:34:36 -08002617 public void activitySlept(IBinder token) throws RemoteException
2618 {
2619 Parcel data = Parcel.obtain();
2620 Parcel reply = Parcel.obtain();
2621 data.writeInterfaceToken(IActivityManager.descriptor);
2622 data.writeStrongBinder(token);
2623 mRemote.transact(ACTIVITY_SLEPT_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2624 reply.readException();
2625 data.recycle();
2626 reply.recycle();
2627 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002628 public void activityDestroyed(IBinder token) throws RemoteException
2629 {
2630 Parcel data = Parcel.obtain();
2631 Parcel reply = Parcel.obtain();
2632 data.writeInterfaceToken(IActivityManager.descriptor);
2633 data.writeStrongBinder(token);
2634 mRemote.transact(ACTIVITY_DESTROYED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2635 reply.readException();
2636 data.recycle();
2637 reply.recycle();
2638 }
2639 public String getCallingPackage(IBinder token) throws RemoteException
2640 {
2641 Parcel data = Parcel.obtain();
2642 Parcel reply = Parcel.obtain();
2643 data.writeInterfaceToken(IActivityManager.descriptor);
2644 data.writeStrongBinder(token);
2645 mRemote.transact(GET_CALLING_PACKAGE_TRANSACTION, data, reply, 0);
2646 reply.readException();
2647 String res = reply.readString();
2648 data.recycle();
2649 reply.recycle();
2650 return res;
2651 }
2652 public ComponentName getCallingActivity(IBinder token)
2653 throws RemoteException {
2654 Parcel data = Parcel.obtain();
2655 Parcel reply = Parcel.obtain();
2656 data.writeInterfaceToken(IActivityManager.descriptor);
2657 data.writeStrongBinder(token);
2658 mRemote.transact(GET_CALLING_ACTIVITY_TRANSACTION, data, reply, 0);
2659 reply.readException();
2660 ComponentName res = ComponentName.readFromParcel(reply);
2661 data.recycle();
2662 reply.recycle();
2663 return res;
2664 }
Dianne Hackborn09233282014-04-30 11:33:59 -07002665 public List getTasks(int maxNum, int flags) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002666 Parcel data = Parcel.obtain();
2667 Parcel reply = Parcel.obtain();
2668 data.writeInterfaceToken(IActivityManager.descriptor);
2669 data.writeInt(maxNum);
2670 data.writeInt(flags);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002671 mRemote.transact(GET_TASKS_TRANSACTION, data, reply, 0);
2672 reply.readException();
2673 ArrayList list = null;
2674 int N = reply.readInt();
2675 if (N >= 0) {
2676 list = new ArrayList();
2677 while (N > 0) {
2678 ActivityManager.RunningTaskInfo info =
2679 ActivityManager.RunningTaskInfo.CREATOR
2680 .createFromParcel(reply);
2681 list.add(info);
2682 N--;
2683 }
2684 }
2685 data.recycle();
2686 reply.recycle();
2687 return list;
2688 }
2689 public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum,
Amith Yamasani82644082012-08-03 13:09:11 -07002690 int flags, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002691 Parcel data = Parcel.obtain();
2692 Parcel reply = Parcel.obtain();
2693 data.writeInterfaceToken(IActivityManager.descriptor);
2694 data.writeInt(maxNum);
2695 data.writeInt(flags);
Amith Yamasani82644082012-08-03 13:09:11 -07002696 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002697 mRemote.transact(GET_RECENT_TASKS_TRANSACTION, data, reply, 0);
2698 reply.readException();
2699 ArrayList<ActivityManager.RecentTaskInfo> list
2700 = reply.createTypedArrayList(ActivityManager.RecentTaskInfo.CREATOR);
2701 data.recycle();
2702 reply.recycle();
2703 return list;
2704 }
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002705 public ActivityManager.TaskThumbnails getTaskThumbnails(int id) throws RemoteException {
Dianne Hackbornd94df452011-02-16 18:53:31 -08002706 Parcel data = Parcel.obtain();
2707 Parcel reply = Parcel.obtain();
2708 data.writeInterfaceToken(IActivityManager.descriptor);
2709 data.writeInt(id);
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002710 mRemote.transact(GET_TASK_THUMBNAILS_TRANSACTION, data, reply, 0);
Dianne Hackbornd94df452011-02-16 18:53:31 -08002711 reply.readException();
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002712 ActivityManager.TaskThumbnails bm = null;
Dianne Hackbornd94df452011-02-16 18:53:31 -08002713 if (reply.readInt() != 0) {
Dianne Hackbornf26fd992011-04-08 18:14:09 -07002714 bm = ActivityManager.TaskThumbnails.CREATOR.createFromParcel(reply);
Dianne Hackbornd94df452011-02-16 18:53:31 -08002715 }
2716 data.recycle();
2717 reply.recycle();
2718 return bm;
2719 }
Dianne Hackborn15491c62012-09-19 10:59:14 -07002720 public Bitmap getTaskTopThumbnail(int id) throws RemoteException {
2721 Parcel data = Parcel.obtain();
2722 Parcel reply = Parcel.obtain();
2723 data.writeInterfaceToken(IActivityManager.descriptor);
2724 data.writeInt(id);
2725 mRemote.transact(GET_TASK_TOP_THUMBNAIL_TRANSACTION, data, reply, 0);
2726 reply.readException();
2727 Bitmap bm = null;
2728 if (reply.readInt() != 0) {
2729 bm = Bitmap.CREATOR.createFromParcel(reply);
2730 }
2731 data.recycle();
2732 reply.recycle();
2733 return bm;
2734 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002735 public List getServices(int maxNum, int flags) throws RemoteException {
2736 Parcel data = Parcel.obtain();
2737 Parcel reply = Parcel.obtain();
2738 data.writeInterfaceToken(IActivityManager.descriptor);
2739 data.writeInt(maxNum);
2740 data.writeInt(flags);
2741 mRemote.transact(GET_SERVICES_TRANSACTION, data, reply, 0);
2742 reply.readException();
2743 ArrayList list = null;
2744 int N = reply.readInt();
2745 if (N >= 0) {
2746 list = new ArrayList();
2747 while (N > 0) {
2748 ActivityManager.RunningServiceInfo info =
2749 ActivityManager.RunningServiceInfo.CREATOR
2750 .createFromParcel(reply);
2751 list.add(info);
2752 N--;
2753 }
2754 }
2755 data.recycle();
2756 reply.recycle();
2757 return list;
2758 }
2759 public List<ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState()
2760 throws RemoteException {
2761 Parcel data = Parcel.obtain();
2762 Parcel reply = Parcel.obtain();
2763 data.writeInterfaceToken(IActivityManager.descriptor);
2764 mRemote.transact(GET_PROCESSES_IN_ERROR_STATE_TRANSACTION, data, reply, 0);
2765 reply.readException();
2766 ArrayList<ActivityManager.ProcessErrorStateInfo> list
2767 = reply.createTypedArrayList(ActivityManager.ProcessErrorStateInfo.CREATOR);
2768 data.recycle();
2769 reply.recycle();
2770 return list;
2771 }
2772 public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses()
2773 throws RemoteException {
2774 Parcel data = Parcel.obtain();
2775 Parcel reply = Parcel.obtain();
2776 data.writeInterfaceToken(IActivityManager.descriptor);
2777 mRemote.transact(GET_RUNNING_APP_PROCESSES_TRANSACTION, data, reply, 0);
2778 reply.readException();
2779 ArrayList<ActivityManager.RunningAppProcessInfo> list
2780 = reply.createTypedArrayList(ActivityManager.RunningAppProcessInfo.CREATOR);
2781 data.recycle();
2782 reply.recycle();
2783 return list;
2784 }
Suchi Amalapurapuf7f5dda2010-03-23 10:34:28 -07002785 public List<ApplicationInfo> getRunningExternalApplications()
2786 throws RemoteException {
2787 Parcel data = Parcel.obtain();
2788 Parcel reply = Parcel.obtain();
2789 data.writeInterfaceToken(IActivityManager.descriptor);
2790 mRemote.transact(GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION, data, reply, 0);
2791 reply.readException();
2792 ArrayList<ApplicationInfo> list
2793 = reply.createTypedArrayList(ApplicationInfo.CREATOR);
2794 data.recycle();
2795 reply.recycle();
2796 return list;
2797 }
Dianne Hackborn8078d8c2012-03-20 11:11:26 -07002798 public void moveTaskToFront(int task, int flags, Bundle options) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002799 {
2800 Parcel data = Parcel.obtain();
2801 Parcel reply = Parcel.obtain();
2802 data.writeInterfaceToken(IActivityManager.descriptor);
2803 data.writeInt(task);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08002804 data.writeInt(flags);
Dianne Hackborn8078d8c2012-03-20 11:11:26 -07002805 if (options != null) {
2806 data.writeInt(1);
2807 options.writeToParcel(data, 0);
2808 } else {
2809 data.writeInt(0);
2810 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002811 mRemote.transact(MOVE_TASK_TO_FRONT_TRANSACTION, data, reply, 0);
2812 reply.readException();
2813 data.recycle();
2814 reply.recycle();
2815 }
2816 public void moveTaskToBack(int task) throws RemoteException
2817 {
2818 Parcel data = Parcel.obtain();
2819 Parcel reply = Parcel.obtain();
2820 data.writeInterfaceToken(IActivityManager.descriptor);
2821 data.writeInt(task);
2822 mRemote.transact(MOVE_TASK_TO_BACK_TRANSACTION, data, reply, 0);
2823 reply.readException();
2824 data.recycle();
2825 reply.recycle();
2826 }
2827 public boolean moveActivityTaskToBack(IBinder token, boolean nonRoot)
2828 throws RemoteException {
2829 Parcel data = Parcel.obtain();
2830 Parcel reply = Parcel.obtain();
2831 data.writeInterfaceToken(IActivityManager.descriptor);
2832 data.writeStrongBinder(token);
2833 data.writeInt(nonRoot ? 1 : 0);
2834 mRemote.transact(MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION, data, reply, 0);
2835 reply.readException();
2836 boolean res = reply.readInt() != 0;
2837 data.recycle();
2838 reply.recycle();
2839 return res;
2840 }
2841 public void moveTaskBackwards(int task) throws RemoteException
2842 {
2843 Parcel data = Parcel.obtain();
2844 Parcel reply = Parcel.obtain();
2845 data.writeInterfaceToken(IActivityManager.descriptor);
2846 data.writeInt(task);
2847 mRemote.transact(MOVE_TASK_BACKWARDS_TRANSACTION, data, reply, 0);
2848 reply.readException();
2849 data.recycle();
2850 reply.recycle();
2851 }
Craig Mautnerc00204b2013-03-05 15:02:14 -08002852 @Override
Craig Mautnerc00204b2013-03-05 15:02:14 -08002853 public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException
2854 {
2855 Parcel data = Parcel.obtain();
2856 Parcel reply = Parcel.obtain();
Craig Mautner967212c2013-04-13 21:10:58 -07002857 data.writeInterfaceToken(IActivityManager.descriptor);
Craig Mautnerc00204b2013-03-05 15:02:14 -08002858 data.writeInt(taskId);
2859 data.writeInt(stackId);
2860 data.writeInt(toTop ? 1 : 0);
2861 mRemote.transact(MOVE_TASK_TO_STACK_TRANSACTION, data, reply, 0);
2862 reply.readException();
2863 data.recycle();
2864 reply.recycle();
2865 }
2866 @Override
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002867 public void resizeStack(int stackBoxId, Rect r) throws RemoteException
Craig Mautnerc00204b2013-03-05 15:02:14 -08002868 {
2869 Parcel data = Parcel.obtain();
2870 Parcel reply = Parcel.obtain();
Craig Mautner967212c2013-04-13 21:10:58 -07002871 data.writeInterfaceToken(IActivityManager.descriptor);
Craig Mautner5a449152013-05-24 15:49:29 -07002872 data.writeInt(stackBoxId);
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002873 r.writeToParcel(data, 0);
Craig Mautnercf910b02013-04-23 11:23:27 -07002874 mRemote.transact(RESIZE_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
Craig Mautnerc00204b2013-03-05 15:02:14 -08002875 reply.readException();
2876 data.recycle();
2877 reply.recycle();
2878 }
Craig Mautner967212c2013-04-13 21:10:58 -07002879 @Override
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002880 public List<StackInfo> getAllStackInfos() throws RemoteException
Craig Mautner5ff12102013-05-24 12:50:15 -07002881 {
2882 Parcel data = Parcel.obtain();
2883 Parcel reply = Parcel.obtain();
2884 data.writeInterfaceToken(IActivityManager.descriptor);
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002885 mRemote.transact(GET_ALL_STACK_INFOS_TRANSACTION, data, reply, 0);
Craig Mautner5ff12102013-05-24 12:50:15 -07002886 reply.readException();
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002887 ArrayList<StackInfo> list = reply.createTypedArrayList(StackInfo.CREATOR);
Craig Mautner967212c2013-04-13 21:10:58 -07002888 data.recycle();
2889 reply.recycle();
2890 return list;
2891 }
Craig Mautnercf910b02013-04-23 11:23:27 -07002892 @Override
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002893 public StackInfo getStackInfo(int stackId) throws RemoteException
Craig Mautnerfd1ce8d2013-06-17 16:15:42 -07002894 {
2895 Parcel data = Parcel.obtain();
2896 Parcel reply = Parcel.obtain();
2897 data.writeInterfaceToken(IActivityManager.descriptor);
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002898 data.writeInt(stackId);
2899 mRemote.transact(GET_STACK_INFO_TRANSACTION, data, reply, 0);
Craig Mautnerfd1ce8d2013-06-17 16:15:42 -07002900 reply.readException();
2901 int res = reply.readInt();
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002902 StackInfo info = null;
Craig Mautnerfd1ce8d2013-06-17 16:15:42 -07002903 if (res != 0) {
Craig Mautnerbdc748af2013-12-02 14:08:25 -08002904 info = StackInfo.CREATOR.createFromParcel(reply);
Craig Mautnerfd1ce8d2013-06-17 16:15:42 -07002905 }
2906 data.recycle();
2907 reply.recycle();
2908 return info;
2909 }
2910 @Override
Winson Chung303e1ff2014-03-07 15:06:19 -08002911 public boolean isInHomeStack(int taskId) throws RemoteException {
2912 Parcel data = Parcel.obtain();
2913 Parcel reply = Parcel.obtain();
2914 data.writeInterfaceToken(IActivityManager.descriptor);
2915 data.writeInt(taskId);
2916 mRemote.transact(IS_IN_HOME_STACK_TRANSACTION, data, reply, 0);
2917 reply.readException();
2918 boolean isInHomeStack = reply.readInt() > 0;
2919 data.recycle();
2920 reply.recycle();
2921 return isInHomeStack;
2922 }
2923 @Override
Craig Mautnercf910b02013-04-23 11:23:27 -07002924 public void setFocusedStack(int stackId) throws RemoteException
2925 {
2926 Parcel data = Parcel.obtain();
2927 Parcel reply = Parcel.obtain();
2928 data.writeInterfaceToken(IActivityManager.descriptor);
2929 data.writeInt(stackId);
2930 mRemote.transact(SET_FOCUSED_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
2931 reply.readException();
2932 data.recycle();
2933 reply.recycle();
2934 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002935 public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException
2936 {
2937 Parcel data = Parcel.obtain();
2938 Parcel reply = Parcel.obtain();
2939 data.writeInterfaceToken(IActivityManager.descriptor);
2940 data.writeStrongBinder(token);
2941 data.writeInt(onlyRoot ? 1 : 0);
2942 mRemote.transact(GET_TASK_FOR_ACTIVITY_TRANSACTION, data, reply, 0);
2943 reply.readException();
2944 int res = reply.readInt();
2945 data.recycle();
2946 reply.recycle();
2947 return res;
2948 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002949 public ContentProviderHolder getContentProvider(IApplicationThread caller,
Jeff Sharkey6d515712012-09-20 16:06:08 -07002950 String name, int userId, boolean stable) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002951 Parcel data = Parcel.obtain();
2952 Parcel reply = Parcel.obtain();
2953 data.writeInterfaceToken(IActivityManager.descriptor);
2954 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2955 data.writeString(name);
Jeff Sharkey6d515712012-09-20 16:06:08 -07002956 data.writeInt(userId);
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07002957 data.writeInt(stable ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002958 mRemote.transact(GET_CONTENT_PROVIDER_TRANSACTION, data, reply, 0);
2959 reply.readException();
2960 int res = reply.readInt();
2961 ContentProviderHolder cph = null;
2962 if (res != 0) {
2963 cph = ContentProviderHolder.CREATOR.createFromParcel(reply);
2964 }
2965 data.recycle();
2966 reply.recycle();
2967 return cph;
2968 }
Jeff Sharkey6d515712012-09-20 16:06:08 -07002969 public ContentProviderHolder getContentProviderExternal(String name, int userId, IBinder token)
2970 throws RemoteException {
Svetoslav Ganov25872aa2012-02-03 19:19:09 -08002971 Parcel data = Parcel.obtain();
2972 Parcel reply = Parcel.obtain();
2973 data.writeInterfaceToken(IActivityManager.descriptor);
2974 data.writeString(name);
Jeff Sharkey6d515712012-09-20 16:06:08 -07002975 data.writeInt(userId);
Svetoslav Ganov25872aa2012-02-03 19:19:09 -08002976 data.writeStrongBinder(token);
2977 mRemote.transact(GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0);
2978 reply.readException();
2979 int res = reply.readInt();
2980 ContentProviderHolder cph = null;
2981 if (res != 0) {
2982 cph = ContentProviderHolder.CREATOR.createFromParcel(reply);
2983 }
2984 data.recycle();
2985 reply.recycle();
2986 return cph;
2987 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002988 public void publishContentProviders(IApplicationThread caller,
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07002989 List<ContentProviderHolder> providers) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08002990 {
2991 Parcel data = Parcel.obtain();
2992 Parcel reply = Parcel.obtain();
2993 data.writeInterfaceToken(IActivityManager.descriptor);
2994 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
2995 data.writeTypedList(providers);
2996 mRemote.transact(PUBLISH_CONTENT_PROVIDERS_TRANSACTION, data, reply, 0);
2997 reply.readException();
2998 data.recycle();
2999 reply.recycle();
3000 }
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07003001 public boolean refContentProvider(IBinder connection, int stable, int unstable)
3002 throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003003 Parcel data = Parcel.obtain();
3004 Parcel reply = Parcel.obtain();
3005 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07003006 data.writeStrongBinder(connection);
3007 data.writeInt(stable);
3008 data.writeInt(unstable);
3009 mRemote.transact(REF_CONTENT_PROVIDER_TRANSACTION, data, reply, 0);
3010 reply.readException();
3011 boolean res = reply.readInt() != 0;
3012 data.recycle();
3013 reply.recycle();
3014 return res;
3015 }
Jeff Sharkey7aa76012013-09-30 14:26:27 -07003016
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07003017 public void unstableProviderDied(IBinder connection) throws RemoteException {
3018 Parcel data = Parcel.obtain();
3019 Parcel reply = Parcel.obtain();
3020 data.writeInterfaceToken(IActivityManager.descriptor);
3021 data.writeStrongBinder(connection);
3022 mRemote.transact(UNSTABLE_PROVIDER_DIED_TRANSACTION, data, reply, 0);
3023 reply.readException();
3024 data.recycle();
3025 reply.recycle();
3026 }
3027
Jeff Sharkey7aa76012013-09-30 14:26:27 -07003028 @Override
3029 public void appNotRespondingViaProvider(IBinder connection) throws RemoteException {
3030 Parcel data = Parcel.obtain();
3031 Parcel reply = Parcel.obtain();
3032 data.writeInterfaceToken(IActivityManager.descriptor);
3033 data.writeStrongBinder(connection);
3034 mRemote.transact(APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION, data, reply, 0);
3035 reply.readException();
3036 data.recycle();
3037 reply.recycle();
3038 }
3039
Dianne Hackborn6ae8d182012-05-23 13:12:42 -07003040 public void removeContentProvider(IBinder connection, boolean stable) throws RemoteException {
3041 Parcel data = Parcel.obtain();
3042 Parcel reply = Parcel.obtain();
3043 data.writeInterfaceToken(IActivityManager.descriptor);
3044 data.writeStrongBinder(connection);
3045 data.writeInt(stable ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003046 mRemote.transact(REMOVE_CONTENT_PROVIDER_TRANSACTION, data, reply, 0);
3047 reply.readException();
3048 data.recycle();
3049 reply.recycle();
3050 }
Svetoslav Ganov25872aa2012-02-03 19:19:09 -08003051
3052 public void removeContentProviderExternal(String name, IBinder token) throws RemoteException {
3053 Parcel data = Parcel.obtain();
3054 Parcel reply = Parcel.obtain();
3055 data.writeInterfaceToken(IActivityManager.descriptor);
3056 data.writeString(name);
3057 data.writeStrongBinder(token);
3058 mRemote.transact(REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0);
3059 reply.readException();
3060 data.recycle();
3061 reply.recycle();
3062 }
3063
Dianne Hackborndd9b82c2009-09-03 00:18:47 -07003064 public PendingIntent getRunningServiceControlPanel(ComponentName service)
3065 throws RemoteException
3066 {
3067 Parcel data = Parcel.obtain();
3068 Parcel reply = Parcel.obtain();
3069 data.writeInterfaceToken(IActivityManager.descriptor);
3070 service.writeToParcel(data, 0);
3071 mRemote.transact(GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION, data, reply, 0);
3072 reply.readException();
3073 PendingIntent res = PendingIntent.readPendingIntentOrNullFromParcel(reply);
3074 data.recycle();
3075 reply.recycle();
3076 return res;
3077 }
3078
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003079 public ComponentName startService(IApplicationThread caller, Intent service,
Dianne Hackborn7767eac2012-08-23 18:25:40 -07003080 String resolvedType, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003081 {
3082 Parcel data = Parcel.obtain();
3083 Parcel reply = Parcel.obtain();
3084 data.writeInterfaceToken(IActivityManager.descriptor);
3085 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
3086 service.writeToParcel(data, 0);
3087 data.writeString(resolvedType);
Dianne Hackborn7767eac2012-08-23 18:25:40 -07003088 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003089 mRemote.transact(START_SERVICE_TRANSACTION, data, reply, 0);
3090 reply.readException();
3091 ComponentName res = ComponentName.readFromParcel(reply);
3092 data.recycle();
3093 reply.recycle();
3094 return res;
3095 }
3096 public int stopService(IApplicationThread caller, Intent service,
Dianne Hackborn7767eac2012-08-23 18:25:40 -07003097 String resolvedType, int userId) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003098 {
3099 Parcel data = Parcel.obtain();
3100 Parcel reply = Parcel.obtain();
3101 data.writeInterfaceToken(IActivityManager.descriptor);
3102 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
3103 service.writeToParcel(data, 0);
3104 data.writeString(resolvedType);
Dianne Hackborn7767eac2012-08-23 18:25:40 -07003105 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003106 mRemote.transact(STOP_SERVICE_TRANSACTION, data, reply, 0);
3107 reply.readException();
3108 int res = reply.readInt();
3109 reply.recycle();
3110 data.recycle();
3111 return res;
3112 }
3113 public boolean stopServiceToken(ComponentName className, IBinder token,
3114 int startId) throws RemoteException {
3115 Parcel data = Parcel.obtain();
3116 Parcel reply = Parcel.obtain();
3117 data.writeInterfaceToken(IActivityManager.descriptor);
3118 ComponentName.writeToParcel(className, data);
3119 data.writeStrongBinder(token);
3120 data.writeInt(startId);
3121 mRemote.transact(STOP_SERVICE_TOKEN_TRANSACTION, data, reply, 0);
3122 reply.readException();
3123 boolean res = reply.readInt() != 0;
3124 data.recycle();
3125 reply.recycle();
3126 return res;
3127 }
3128 public void setServiceForeground(ComponentName className, IBinder token,
Dianne Hackbornd8a43f62009-08-17 23:33:56 -07003129 int id, Notification notification, boolean removeNotification) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003130 Parcel data = Parcel.obtain();
3131 Parcel reply = Parcel.obtain();
3132 data.writeInterfaceToken(IActivityManager.descriptor);
3133 ComponentName.writeToParcel(className, data);
3134 data.writeStrongBinder(token);
Dianne Hackbornd8a43f62009-08-17 23:33:56 -07003135 data.writeInt(id);
3136 if (notification != null) {
3137 data.writeInt(1);
3138 notification.writeToParcel(data, 0);
3139 } else {
3140 data.writeInt(0);
3141 }
3142 data.writeInt(removeNotification ? 1 : 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003143 mRemote.transact(SET_SERVICE_FOREGROUND_TRANSACTION, data, reply, 0);
3144 reply.readException();
3145 data.recycle();
3146 reply.recycle();
3147 }
3148 public int bindService(IApplicationThread caller, IBinder token,
3149 Intent service, String resolvedType, IServiceConnection connection,
Amith Yamasani37ce3a82012-02-06 12:04:42 -08003150 int flags, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003151 Parcel data = Parcel.obtain();
3152 Parcel reply = Parcel.obtain();
3153 data.writeInterfaceToken(IActivityManager.descriptor);
3154 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
3155 data.writeStrongBinder(token);
3156 service.writeToParcel(data, 0);
3157 data.writeString(resolvedType);
3158 data.writeStrongBinder(connection.asBinder());
3159 data.writeInt(flags);
Amith Yamasani37ce3a82012-02-06 12:04:42 -08003160 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003161 mRemote.transact(BIND_SERVICE_TRANSACTION, data, reply, 0);
3162 reply.readException();
3163 int res = reply.readInt();
3164 data.recycle();
3165 reply.recycle();
3166 return res;
3167 }
3168 public boolean unbindService(IServiceConnection connection) throws RemoteException
3169 {
3170 Parcel data = Parcel.obtain();
3171 Parcel reply = Parcel.obtain();
3172 data.writeInterfaceToken(IActivityManager.descriptor);
3173 data.writeStrongBinder(connection.asBinder());
3174 mRemote.transact(UNBIND_SERVICE_TRANSACTION, data, reply, 0);
3175 reply.readException();
3176 boolean res = reply.readInt() != 0;
3177 data.recycle();
3178 reply.recycle();
3179 return res;
3180 }
3181
3182 public void publishService(IBinder token,
3183 Intent intent, IBinder service) throws RemoteException {
3184 Parcel data = Parcel.obtain();
3185 Parcel reply = Parcel.obtain();
3186 data.writeInterfaceToken(IActivityManager.descriptor);
3187 data.writeStrongBinder(token);
3188 intent.writeToParcel(data, 0);
3189 data.writeStrongBinder(service);
3190 mRemote.transact(PUBLISH_SERVICE_TRANSACTION, data, reply, 0);
3191 reply.readException();
3192 data.recycle();
3193 reply.recycle();
3194 }
3195
3196 public void unbindFinished(IBinder token, Intent intent, boolean doRebind)
3197 throws RemoteException {
3198 Parcel data = Parcel.obtain();
3199 Parcel reply = Parcel.obtain();
3200 data.writeInterfaceToken(IActivityManager.descriptor);
3201 data.writeStrongBinder(token);
3202 intent.writeToParcel(data, 0);
3203 data.writeInt(doRebind ? 1 : 0);
3204 mRemote.transact(UNBIND_FINISHED_TRANSACTION, data, reply, 0);
3205 reply.readException();
3206 data.recycle();
3207 reply.recycle();
3208 }
3209
Dianne Hackbornf6f9f2d2009-08-21 16:26:03 -07003210 public void serviceDoneExecuting(IBinder token, int type, int startId,
3211 int res) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003212 Parcel data = Parcel.obtain();
3213 Parcel reply = Parcel.obtain();
3214 data.writeInterfaceToken(IActivityManager.descriptor);
3215 data.writeStrongBinder(token);
Dianne Hackbornf6f9f2d2009-08-21 16:26:03 -07003216 data.writeInt(type);
3217 data.writeInt(startId);
3218 data.writeInt(res);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003219 mRemote.transact(SERVICE_DONE_EXECUTING_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
3220 reply.readException();
3221 data.recycle();
3222 reply.recycle();
3223 }
3224
3225 public IBinder peekService(Intent service, String resolvedType) throws RemoteException {
3226 Parcel data = Parcel.obtain();
3227 Parcel reply = Parcel.obtain();
3228 data.writeInterfaceToken(IActivityManager.descriptor);
3229 service.writeToParcel(data, 0);
3230 data.writeString(resolvedType);
3231 mRemote.transact(PEEK_SERVICE_TRANSACTION, data, reply, 0);
3232 reply.readException();
3233 IBinder binder = reply.readStrongBinder();
3234 reply.recycle();
3235 data.recycle();
3236 return binder;
3237 }
3238
Christopher Tate181fafa2009-05-14 11:12:14 -07003239 public boolean bindBackupAgent(ApplicationInfo app, int backupRestoreMode)
3240 throws RemoteException {
3241 Parcel data = Parcel.obtain();
3242 Parcel reply = Parcel.obtain();
3243 data.writeInterfaceToken(IActivityManager.descriptor);
3244 app.writeToParcel(data, 0);
3245 data.writeInt(backupRestoreMode);
3246 mRemote.transact(START_BACKUP_AGENT_TRANSACTION, data, reply, 0);
3247 reply.readException();
3248 boolean success = reply.readInt() != 0;
3249 reply.recycle();
3250 data.recycle();
3251 return success;
3252 }
3253
Christopher Tate346acb12012-10-15 19:20:25 -07003254 public void clearPendingBackup() throws RemoteException {
3255 Parcel data = Parcel.obtain();
3256 Parcel reply = Parcel.obtain();
3257 data.writeInterfaceToken(IActivityManager.descriptor);
3258 mRemote.transact(CLEAR_PENDING_BACKUP_TRANSACTION, data, reply, 0);
3259 reply.recycle();
3260 data.recycle();
3261 }
3262
Christopher Tate181fafa2009-05-14 11:12:14 -07003263 public void backupAgentCreated(String packageName, IBinder agent) throws RemoteException {
3264 Parcel data = Parcel.obtain();
3265 Parcel reply = Parcel.obtain();
3266 data.writeInterfaceToken(IActivityManager.descriptor);
3267 data.writeString(packageName);
3268 data.writeStrongBinder(agent);
3269 mRemote.transact(BACKUP_AGENT_CREATED_TRANSACTION, data, reply, 0);
3270 reply.recycle();
3271 data.recycle();
3272 }
3273
3274 public void unbindBackupAgent(ApplicationInfo app) throws RemoteException {
3275 Parcel data = Parcel.obtain();
3276 Parcel reply = Parcel.obtain();
3277 data.writeInterfaceToken(IActivityManager.descriptor);
3278 app.writeToParcel(data, 0);
3279 mRemote.transact(UNBIND_BACKUP_AGENT_TRANSACTION, data, reply, 0);
3280 reply.readException();
3281 reply.recycle();
3282 data.recycle();
3283 }
3284
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003285 public boolean startInstrumentation(ComponentName className, String profileFile,
Svetoslav Ganov80943d82013-01-02 10:25:37 -08003286 int flags, Bundle arguments, IInstrumentationWatcher watcher,
3287 IUiAutomationConnection connection, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003288 Parcel data = Parcel.obtain();
3289 Parcel reply = Parcel.obtain();
3290 data.writeInterfaceToken(IActivityManager.descriptor);
3291 ComponentName.writeToParcel(className, data);
3292 data.writeString(profileFile);
3293 data.writeInt(flags);
3294 data.writeBundle(arguments);
3295 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null);
Svetoslav Ganov80943d82013-01-02 10:25:37 -08003296 data.writeStrongBinder(connection != null ? connection.asBinder() : null);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003297 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003298 mRemote.transact(START_INSTRUMENTATION_TRANSACTION, data, reply, 0);
3299 reply.readException();
3300 boolean res = reply.readInt() != 0;
3301 reply.recycle();
3302 data.recycle();
3303 return res;
3304 }
3305
3306 public void finishInstrumentation(IApplicationThread target,
3307 int resultCode, Bundle results) throws RemoteException {
3308 Parcel data = Parcel.obtain();
3309 Parcel reply = Parcel.obtain();
3310 data.writeInterfaceToken(IActivityManager.descriptor);
3311 data.writeStrongBinder(target != null ? target.asBinder() : null);
3312 data.writeInt(resultCode);
3313 data.writeBundle(results);
3314 mRemote.transact(FINISH_INSTRUMENTATION_TRANSACTION, data, reply, 0);
3315 reply.readException();
3316 data.recycle();
3317 reply.recycle();
3318 }
3319 public Configuration getConfiguration() throws RemoteException
3320 {
3321 Parcel data = Parcel.obtain();
3322 Parcel reply = Parcel.obtain();
3323 data.writeInterfaceToken(IActivityManager.descriptor);
3324 mRemote.transact(GET_CONFIGURATION_TRANSACTION, data, reply, 0);
3325 reply.readException();
3326 Configuration res = Configuration.CREATOR.createFromParcel(reply);
3327 reply.recycle();
3328 data.recycle();
3329 return res;
3330 }
3331 public void updateConfiguration(Configuration values) throws RemoteException
3332 {
3333 Parcel data = Parcel.obtain();
3334 Parcel reply = Parcel.obtain();
3335 data.writeInterfaceToken(IActivityManager.descriptor);
3336 values.writeToParcel(data, 0);
3337 mRemote.transact(UPDATE_CONFIGURATION_TRANSACTION, data, reply, 0);
3338 reply.readException();
3339 data.recycle();
3340 reply.recycle();
3341 }
3342 public void setRequestedOrientation(IBinder token, int requestedOrientation)
3343 throws RemoteException {
3344 Parcel data = Parcel.obtain();
3345 Parcel reply = Parcel.obtain();
3346 data.writeInterfaceToken(IActivityManager.descriptor);
3347 data.writeStrongBinder(token);
3348 data.writeInt(requestedOrientation);
3349 mRemote.transact(SET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0);
3350 reply.readException();
3351 data.recycle();
3352 reply.recycle();
3353 }
3354 public int getRequestedOrientation(IBinder token) throws RemoteException {
3355 Parcel data = Parcel.obtain();
3356 Parcel reply = Parcel.obtain();
3357 data.writeInterfaceToken(IActivityManager.descriptor);
3358 data.writeStrongBinder(token);
3359 mRemote.transact(GET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0);
3360 reply.readException();
3361 int res = reply.readInt();
3362 data.recycle();
3363 reply.recycle();
3364 return res;
3365 }
3366 public ComponentName getActivityClassForToken(IBinder token)
3367 throws RemoteException {
3368 Parcel data = Parcel.obtain();
3369 Parcel reply = Parcel.obtain();
3370 data.writeInterfaceToken(IActivityManager.descriptor);
3371 data.writeStrongBinder(token);
3372 mRemote.transact(GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION, data, reply, 0);
3373 reply.readException();
3374 ComponentName res = ComponentName.readFromParcel(reply);
3375 data.recycle();
3376 reply.recycle();
3377 return res;
3378 }
3379 public String getPackageForToken(IBinder token) throws RemoteException
3380 {
3381 Parcel data = Parcel.obtain();
3382 Parcel reply = Parcel.obtain();
3383 data.writeInterfaceToken(IActivityManager.descriptor);
3384 data.writeStrongBinder(token);
3385 mRemote.transact(GET_PACKAGE_FOR_TOKEN_TRANSACTION, data, reply, 0);
3386 reply.readException();
3387 String res = reply.readString();
3388 data.recycle();
3389 reply.recycle();
3390 return res;
3391 }
3392 public IIntentSender getIntentSender(int type,
3393 String packageName, IBinder token, String resultWho,
Dianne Hackborn7a2195c2012-03-19 17:38:00 -07003394 int requestCode, Intent[] intents, String[] resolvedTypes, int flags,
Dianne Hackborn41203752012-08-31 14:05:51 -07003395 Bundle options, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003396 Parcel data = Parcel.obtain();
3397 Parcel reply = Parcel.obtain();
3398 data.writeInterfaceToken(IActivityManager.descriptor);
3399 data.writeInt(type);
3400 data.writeString(packageName);
3401 data.writeStrongBinder(token);
3402 data.writeString(resultWho);
3403 data.writeInt(requestCode);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08003404 if (intents != null) {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003405 data.writeInt(1);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08003406 data.writeTypedArray(intents, 0);
3407 data.writeStringArray(resolvedTypes);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003408 } else {
3409 data.writeInt(0);
3410 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003411 data.writeInt(flags);
Dianne Hackborn7a2195c2012-03-19 17:38:00 -07003412 if (options != null) {
3413 data.writeInt(1);
3414 options.writeToParcel(data, 0);
3415 } else {
3416 data.writeInt(0);
3417 }
Dianne Hackborn41203752012-08-31 14:05:51 -07003418 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003419 mRemote.transact(GET_INTENT_SENDER_TRANSACTION, data, reply, 0);
3420 reply.readException();
3421 IIntentSender res = IIntentSender.Stub.asInterface(
3422 reply.readStrongBinder());
3423 data.recycle();
3424 reply.recycle();
3425 return res;
3426 }
3427 public void cancelIntentSender(IIntentSender sender) throws RemoteException {
3428 Parcel data = Parcel.obtain();
3429 Parcel reply = Parcel.obtain();
3430 data.writeInterfaceToken(IActivityManager.descriptor);
3431 data.writeStrongBinder(sender.asBinder());
3432 mRemote.transact(CANCEL_INTENT_SENDER_TRANSACTION, data, reply, 0);
3433 reply.readException();
3434 data.recycle();
3435 reply.recycle();
3436 }
3437 public String getPackageForIntentSender(IIntentSender sender) throws RemoteException {
3438 Parcel data = Parcel.obtain();
3439 Parcel reply = Parcel.obtain();
3440 data.writeInterfaceToken(IActivityManager.descriptor);
3441 data.writeStrongBinder(sender.asBinder());
3442 mRemote.transact(GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0);
3443 reply.readException();
3444 String res = reply.readString();
3445 data.recycle();
3446 reply.recycle();
3447 return res;
3448 }
Christopher Tatec4a07d12012-04-06 14:19:13 -07003449 public int getUidForIntentSender(IIntentSender sender) throws RemoteException {
3450 Parcel data = Parcel.obtain();
3451 Parcel reply = Parcel.obtain();
3452 data.writeInterfaceToken(IActivityManager.descriptor);
3453 data.writeStrongBinder(sender.asBinder());
3454 mRemote.transact(GET_UID_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0);
3455 reply.readException();
3456 int res = reply.readInt();
3457 data.recycle();
3458 reply.recycle();
3459 return res;
3460 }
Dianne Hackborn41203752012-08-31 14:05:51 -07003461 public int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll,
3462 boolean requireFull, String name, String callerPackage) throws RemoteException {
3463 Parcel data = Parcel.obtain();
3464 Parcel reply = Parcel.obtain();
3465 data.writeInterfaceToken(IActivityManager.descriptor);
3466 data.writeInt(callingPid);
3467 data.writeInt(callingUid);
3468 data.writeInt(userId);
3469 data.writeInt(allowAll ? 1 : 0);
3470 data.writeInt(requireFull ? 1 : 0);
3471 data.writeString(name);
3472 data.writeString(callerPackage);
3473 mRemote.transact(HANDLE_INCOMING_USER_TRANSACTION, data, reply, 0);
3474 reply.readException();
3475 int res = reply.readInt();
3476 data.recycle();
3477 reply.recycle();
3478 return res;
3479 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003480 public void setProcessLimit(int max) throws RemoteException
3481 {
3482 Parcel data = Parcel.obtain();
3483 Parcel reply = Parcel.obtain();
3484 data.writeInterfaceToken(IActivityManager.descriptor);
3485 data.writeInt(max);
3486 mRemote.transact(SET_PROCESS_LIMIT_TRANSACTION, data, reply, 0);
3487 reply.readException();
3488 data.recycle();
3489 reply.recycle();
3490 }
3491 public int getProcessLimit() throws RemoteException
3492 {
3493 Parcel data = Parcel.obtain();
3494 Parcel reply = Parcel.obtain();
3495 data.writeInterfaceToken(IActivityManager.descriptor);
3496 mRemote.transact(GET_PROCESS_LIMIT_TRANSACTION, data, reply, 0);
3497 reply.readException();
3498 int res = reply.readInt();
3499 data.recycle();
3500 reply.recycle();
3501 return res;
3502 }
3503 public void setProcessForeground(IBinder token, int pid,
3504 boolean isForeground) throws RemoteException {
3505 Parcel data = Parcel.obtain();
3506 Parcel reply = Parcel.obtain();
3507 data.writeInterfaceToken(IActivityManager.descriptor);
3508 data.writeStrongBinder(token);
3509 data.writeInt(pid);
3510 data.writeInt(isForeground ? 1 : 0);
3511 mRemote.transact(SET_PROCESS_FOREGROUND_TRANSACTION, data, reply, 0);
3512 reply.readException();
3513 data.recycle();
3514 reply.recycle();
3515 }
3516 public int checkPermission(String permission, int pid, int uid)
3517 throws RemoteException {
3518 Parcel data = Parcel.obtain();
3519 Parcel reply = Parcel.obtain();
3520 data.writeInterfaceToken(IActivityManager.descriptor);
3521 data.writeString(permission);
3522 data.writeInt(pid);
3523 data.writeInt(uid);
3524 mRemote.transact(CHECK_PERMISSION_TRANSACTION, data, reply, 0);
3525 reply.readException();
3526 int res = reply.readInt();
3527 data.recycle();
3528 reply.recycle();
3529 return res;
3530 }
3531 public boolean clearApplicationUserData(final String packageName,
Amith Yamasani742a6712011-05-04 14:49:28 -07003532 final IPackageDataObserver observer, final int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003533 Parcel data = Parcel.obtain();
3534 Parcel reply = Parcel.obtain();
3535 data.writeInterfaceToken(IActivityManager.descriptor);
3536 data.writeString(packageName);
Christopher Tate31b65f92013-09-09 14:17:27 -07003537 data.writeStrongBinder((observer != null) ? observer.asBinder() : null);
Amith Yamasani742a6712011-05-04 14:49:28 -07003538 data.writeInt(userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003539 mRemote.transact(CLEAR_APP_DATA_TRANSACTION, data, reply, 0);
3540 reply.readException();
3541 boolean res = reply.readInt() != 0;
3542 data.recycle();
3543 reply.recycle();
3544 return res;
3545 }
3546 public int checkUriPermission(Uri uri, int pid, int uid, int mode)
3547 throws RemoteException {
3548 Parcel data = Parcel.obtain();
3549 Parcel reply = Parcel.obtain();
3550 data.writeInterfaceToken(IActivityManager.descriptor);
3551 uri.writeToParcel(data, 0);
3552 data.writeInt(pid);
3553 data.writeInt(uid);
3554 data.writeInt(mode);
3555 mRemote.transact(CHECK_URI_PERMISSION_TRANSACTION, data, reply, 0);
3556 reply.readException();
3557 int res = reply.readInt();
3558 data.recycle();
3559 reply.recycle();
3560 return res;
3561 }
3562 public void grantUriPermission(IApplicationThread caller, String targetPkg,
3563 Uri uri, int mode) throws RemoteException {
3564 Parcel data = Parcel.obtain();
3565 Parcel reply = Parcel.obtain();
3566 data.writeInterfaceToken(IActivityManager.descriptor);
3567 data.writeStrongBinder(caller.asBinder());
3568 data.writeString(targetPkg);
3569 uri.writeToParcel(data, 0);
3570 data.writeInt(mode);
3571 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0);
3572 reply.readException();
3573 data.recycle();
3574 reply.recycle();
3575 }
3576 public void revokeUriPermission(IApplicationThread caller, Uri uri,
3577 int mode) throws RemoteException {
3578 Parcel data = Parcel.obtain();
3579 Parcel reply = Parcel.obtain();
3580 data.writeInterfaceToken(IActivityManager.descriptor);
3581 data.writeStrongBinder(caller.asBinder());
3582 uri.writeToParcel(data, 0);
3583 data.writeInt(mode);
3584 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0);
3585 reply.readException();
3586 data.recycle();
3587 reply.recycle();
3588 }
Jeff Sharkeye66c1772013-09-20 14:30:59 -07003589
3590 @Override
3591 public void takePersistableUriPermission(Uri uri, int mode) throws RemoteException {
3592 Parcel data = Parcel.obtain();
3593 Parcel reply = Parcel.obtain();
3594 data.writeInterfaceToken(IActivityManager.descriptor);
3595 uri.writeToParcel(data, 0);
3596 data.writeInt(mode);
3597 mRemote.transact(TAKE_PERSISTABLE_URI_PERMISSION_TRANSACTION, data, reply, 0);
3598 reply.readException();
3599 data.recycle();
3600 reply.recycle();
3601 }
3602
3603 @Override
3604 public void releasePersistableUriPermission(Uri uri, int mode) throws RemoteException {
3605 Parcel data = Parcel.obtain();
3606 Parcel reply = Parcel.obtain();
3607 data.writeInterfaceToken(IActivityManager.descriptor);
3608 uri.writeToParcel(data, 0);
3609 data.writeInt(mode);
3610 mRemote.transact(RELEASE_PERSISTABLE_URI_PERMISSION_TRANSACTION, data, reply, 0);
3611 reply.readException();
3612 data.recycle();
3613 reply.recycle();
3614 }
3615
3616 @Override
Jeff Sharkeybcaac0a2013-10-09 14:21:08 -07003617 public ParceledListSlice<UriPermission> getPersistedUriPermissions(
3618 String packageName, boolean incoming) throws RemoteException {
Jeff Sharkeye66c1772013-09-20 14:30:59 -07003619 Parcel data = Parcel.obtain();
3620 Parcel reply = Parcel.obtain();
3621 data.writeInterfaceToken(IActivityManager.descriptor);
Jeff Sharkeybcaac0a2013-10-09 14:21:08 -07003622 data.writeString(packageName);
3623 data.writeInt(incoming ? 1 : 0);
Jeff Sharkeye66c1772013-09-20 14:30:59 -07003624 mRemote.transact(GET_PERSISTED_URI_PERMISSIONS_TRANSACTION, data, reply, 0);
3625 reply.readException();
3626 final ParceledListSlice<UriPermission> perms = ParceledListSlice.CREATOR.createFromParcel(
3627 reply);
3628 data.recycle();
3629 reply.recycle();
3630 return perms;
3631 }
3632
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003633 public void showWaitingForDebugger(IApplicationThread who, boolean waiting)
3634 throws RemoteException {
3635 Parcel data = Parcel.obtain();
3636 Parcel reply = Parcel.obtain();
3637 data.writeInterfaceToken(IActivityManager.descriptor);
3638 data.writeStrongBinder(who.asBinder());
3639 data.writeInt(waiting ? 1 : 0);
3640 mRemote.transact(SHOW_WAITING_FOR_DEBUGGER_TRANSACTION, data, reply, 0);
3641 reply.readException();
3642 data.recycle();
3643 reply.recycle();
3644 }
3645 public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) throws RemoteException {
3646 Parcel data = Parcel.obtain();
3647 Parcel reply = Parcel.obtain();
3648 data.writeInterfaceToken(IActivityManager.descriptor);
3649 mRemote.transact(GET_MEMORY_INFO_TRANSACTION, data, reply, 0);
3650 reply.readException();
3651 outInfo.readFromParcel(reply);
3652 data.recycle();
3653 reply.recycle();
3654 }
3655 public void unhandledBack() throws RemoteException
3656 {
3657 Parcel data = Parcel.obtain();
3658 Parcel reply = Parcel.obtain();
3659 data.writeInterfaceToken(IActivityManager.descriptor);
3660 mRemote.transact(UNHANDLED_BACK_TRANSACTION, data, reply, 0);
3661 reply.readException();
3662 data.recycle();
3663 reply.recycle();
3664 }
3665 public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException
3666 {
3667 Parcel data = Parcel.obtain();
3668 Parcel reply = Parcel.obtain();
3669 data.writeInterfaceToken(IActivityManager.descriptor);
3670 mRemote.transact(OPEN_CONTENT_URI_TRANSACTION, data, reply, 0);
3671 reply.readException();
3672 ParcelFileDescriptor pfd = null;
3673 if (reply.readInt() != 0) {
3674 pfd = ParcelFileDescriptor.CREATOR.createFromParcel(reply);
3675 }
3676 data.recycle();
3677 reply.recycle();
3678 return pfd;
3679 }
Dianne Hackbornff5b1582012-04-12 17:24:07 -07003680 public void setLockScreenShown(boolean shown) throws RemoteException
3681 {
3682 Parcel data = Parcel.obtain();
3683 Parcel reply = Parcel.obtain();
3684 data.writeInterfaceToken(IActivityManager.descriptor);
3685 data.writeInt(shown ? 1 : 0);
3686 mRemote.transact(SET_LOCK_SCREEN_SHOWN_TRANSACTION, data, reply, 0);
3687 reply.readException();
3688 data.recycle();
3689 reply.recycle();
3690 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003691 public void setDebugApp(
3692 String packageName, boolean waitForDebugger, boolean persistent)
3693 throws RemoteException
3694 {
3695 Parcel data = Parcel.obtain();
3696 Parcel reply = Parcel.obtain();
3697 data.writeInterfaceToken(IActivityManager.descriptor);
3698 data.writeString(packageName);
3699 data.writeInt(waitForDebugger ? 1 : 0);
3700 data.writeInt(persistent ? 1 : 0);
3701 mRemote.transact(SET_DEBUG_APP_TRANSACTION, data, reply, 0);
3702 reply.readException();
3703 data.recycle();
3704 reply.recycle();
3705 }
3706 public void setAlwaysFinish(boolean enabled) throws RemoteException
3707 {
3708 Parcel data = Parcel.obtain();
3709 Parcel reply = Parcel.obtain();
3710 data.writeInterfaceToken(IActivityManager.descriptor);
3711 data.writeInt(enabled ? 1 : 0);
3712 mRemote.transact(SET_ALWAYS_FINISH_TRANSACTION, data, reply, 0);
3713 reply.readException();
3714 data.recycle();
3715 reply.recycle();
3716 }
Dianne Hackbornb06ea702009-07-13 13:07:51 -07003717 public void setActivityController(IActivityController watcher) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003718 {
3719 Parcel data = Parcel.obtain();
3720 Parcel reply = Parcel.obtain();
3721 data.writeInterfaceToken(IActivityManager.descriptor);
3722 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null);
Dianne Hackbornb06ea702009-07-13 13:07:51 -07003723 mRemote.transact(SET_ACTIVITY_CONTROLLER_TRANSACTION, data, reply, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003724 reply.readException();
3725 data.recycle();
3726 reply.recycle();
3727 }
3728 public void enterSafeMode() throws RemoteException {
3729 Parcel data = Parcel.obtain();
3730 data.writeInterfaceToken(IActivityManager.descriptor);
3731 mRemote.transact(ENTER_SAFE_MODE_TRANSACTION, data, null, 0);
3732 data.recycle();
3733 }
Dianne Hackborn099bc622014-01-22 13:39:16 -08003734 public void noteWakeupAlarm(IIntentSender sender, int sourceUid, String sourcePkg)
3735 throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003736 Parcel data = Parcel.obtain();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003737 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn099bc622014-01-22 13:39:16 -08003738 data.writeStrongBinder(sender.asBinder());
3739 data.writeInt(sourceUid);
3740 data.writeString(sourcePkg);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003741 mRemote.transact(NOTE_WAKEUP_ALARM_TRANSACTION, data, null, 0);
3742 data.recycle();
3743 }
Dianne Hackborn64825172011-03-02 21:32:58 -08003744 public boolean killPids(int[] pids, String reason, boolean secure) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003745 Parcel data = Parcel.obtain();
3746 Parcel reply = Parcel.obtain();
3747 data.writeInterfaceToken(IActivityManager.descriptor);
3748 data.writeIntArray(pids);
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07003749 data.writeString(reason);
Dianne Hackborn64825172011-03-02 21:32:58 -08003750 data.writeInt(secure ? 1 : 0);
Suchi Amalapurapue99bb5f2010-03-19 14:36:49 -07003751 mRemote.transact(KILL_PIDS_TRANSACTION, data, reply, 0);
Dianne Hackbornf1b78242013-04-08 22:28:59 -07003752 reply.readException();
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003753 boolean res = reply.readInt() != 0;
3754 data.recycle();
3755 reply.recycle();
3756 return res;
3757 }
Jeff Sharkeyb9a07012012-03-22 17:00:04 -07003758 @Override
3759 public boolean killProcessesBelowForeground(String reason) throws RemoteException {
3760 Parcel data = Parcel.obtain();
3761 Parcel reply = Parcel.obtain();
3762 data.writeInterfaceToken(IActivityManager.descriptor);
3763 data.writeString(reason);
3764 mRemote.transact(KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION, data, reply, 0);
3765 boolean res = reply.readInt() != 0;
3766 data.recycle();
3767 reply.recycle();
3768 return res;
3769 }
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003770 public boolean testIsSystemReady()
3771 {
3772 /* this base class version is never called */
3773 return true;
3774 }
Dan Egnor60d87622009-12-16 16:32:58 -08003775 public void handleApplicationCrash(IBinder app,
3776 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException
3777 {
3778 Parcel data = Parcel.obtain();
3779 Parcel reply = Parcel.obtain();
3780 data.writeInterfaceToken(IActivityManager.descriptor);
3781 data.writeStrongBinder(app);
3782 crashInfo.writeToParcel(data, 0);
3783 mRemote.transact(HANDLE_APPLICATION_CRASH_TRANSACTION, data, reply, 0);
3784 reply.readException();
3785 reply.recycle();
3786 data.recycle();
3787 }
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003788
Dan Egnor60d87622009-12-16 16:32:58 -08003789 public boolean handleApplicationWtf(IBinder app, String tag,
Dan Egnorb7f03672009-12-09 16:22:32 -08003790 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003791 {
3792 Parcel data = Parcel.obtain();
3793 Parcel reply = Parcel.obtain();
3794 data.writeInterfaceToken(IActivityManager.descriptor);
3795 data.writeStrongBinder(app);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003796 data.writeString(tag);
Dan Egnorb7f03672009-12-09 16:22:32 -08003797 crashInfo.writeToParcel(data, 0);
Dan Egnor60d87622009-12-16 16:32:58 -08003798 mRemote.transact(HANDLE_APPLICATION_WTF_TRANSACTION, data, reply, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003799 reply.readException();
Dan Egnor60d87622009-12-16 16:32:58 -08003800 boolean res = reply.readInt() != 0;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003801 reply.recycle();
3802 data.recycle();
Dan Egnor60d87622009-12-16 16:32:58 -08003803 return res;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003804 }
Dan Egnorb7f03672009-12-09 16:22:32 -08003805
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003806 public void handleApplicationStrictModeViolation(IBinder app,
Brad Fitzpatrick46d42382010-06-11 13:57:58 -07003807 int violationMask,
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -07003808 StrictMode.ViolationInfo info) throws RemoteException
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003809 {
3810 Parcel data = Parcel.obtain();
3811 Parcel reply = Parcel.obtain();
3812 data.writeInterfaceToken(IActivityManager.descriptor);
3813 data.writeStrongBinder(app);
Brad Fitzpatrick46d42382010-06-11 13:57:58 -07003814 data.writeInt(violationMask);
Brad Fitzpatrickcb9ceb12010-07-29 14:29:02 -07003815 info.writeToParcel(data, 0);
Brad Fitzpatrick438d0592010-06-10 12:19:19 -07003816 mRemote.transact(HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION, data, reply, 0);
3817 reply.readException();
3818 reply.recycle();
3819 data.recycle();
3820 }
3821
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003822 public void signalPersistentProcesses(int sig) throws RemoteException {
3823 Parcel data = Parcel.obtain();
3824 Parcel reply = Parcel.obtain();
3825 data.writeInterfaceToken(IActivityManager.descriptor);
3826 data.writeInt(sig);
3827 mRemote.transact(SIGNAL_PERSISTENT_PROCESSES_TRANSACTION, data, reply, 0);
3828 reply.readException();
3829 data.recycle();
3830 reply.recycle();
3831 }
Dianne Hackborne4d4fbc2011-11-08 11:53:28 -08003832
Dianne Hackborn1676c852012-09-10 14:52:30 -07003833 public void killBackgroundProcesses(String packageName, int userId) throws RemoteException {
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003834 Parcel data = Parcel.obtain();
3835 Parcel reply = Parcel.obtain();
3836 data.writeInterfaceToken(IActivityManager.descriptor);
3837 data.writeString(packageName);
Dianne Hackborn1676c852012-09-10 14:52:30 -07003838 data.writeInt(userId);
Dianne Hackborn03abb812010-01-04 18:43:19 -08003839 mRemote.transact(KILL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0);
3840 reply.readException();
3841 data.recycle();
3842 reply.recycle();
3843 }
Dianne Hackborne4d4fbc2011-11-08 11:53:28 -08003844
3845 public void killAllBackgroundProcesses() throws RemoteException {
3846 Parcel data = Parcel.obtain();
3847 Parcel reply = Parcel.obtain();
3848 data.writeInterfaceToken(IActivityManager.descriptor);
3849 mRemote.transact(KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0);
3850 reply.readException();
3851 data.recycle();
3852 reply.recycle();
3853 }
3854
Dianne Hackborn1676c852012-09-10 14:52:30 -07003855 public void forceStopPackage(String packageName, int userId) throws RemoteException {
Dianne Hackborn03abb812010-01-04 18:43:19 -08003856 Parcel data = Parcel.obtain();
3857 Parcel reply = Parcel.obtain();
3858 data.writeInterfaceToken(IActivityManager.descriptor);
3859 data.writeString(packageName);
Dianne Hackborn1676c852012-09-10 14:52:30 -07003860 data.writeInt(userId);
Dianne Hackborn03abb812010-01-04 18:43:19 -08003861 mRemote.transact(FORCE_STOP_PACKAGE_TRANSACTION, data, reply, 0);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003862 reply.readException();
3863 data.recycle();
3864 reply.recycle();
3865 }
3866
Dianne Hackborn27ff9132012-03-06 14:57:58 -08003867 public void getMyMemoryState(ActivityManager.RunningAppProcessInfo outInfo)
3868 throws RemoteException
3869 {
3870 Parcel data = Parcel.obtain();
3871 Parcel reply = Parcel.obtain();
3872 data.writeInterfaceToken(IActivityManager.descriptor);
3873 mRemote.transact(GET_MY_MEMORY_STATE_TRANSACTION, data, reply, 0);
3874 reply.readException();
3875 outInfo.readFromParcel(reply);
3876 reply.recycle();
3877 data.recycle();
3878 }
3879
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08003880 public ConfigurationInfo getDeviceConfigurationInfo() throws RemoteException
3881 {
3882 Parcel data = Parcel.obtain();
3883 Parcel reply = Parcel.obtain();
3884 data.writeInterfaceToken(IActivityManager.descriptor);
3885 mRemote.transact(GET_DEVICE_CONFIGURATION_TRANSACTION, data, reply, 0);
3886 reply.readException();
3887 ConfigurationInfo res = ConfigurationInfo.CREATOR.createFromParcel(reply);
3888 reply.recycle();
3889 data.recycle();
3890 return res;
3891 }
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003892
Dianne Hackborn1676c852012-09-10 14:52:30 -07003893 public boolean profileControl(String process, int userId, boolean start,
Romain Guy7eabe552011-07-21 14:56:34 -07003894 String path, ParcelFileDescriptor fd, int profileType) throws RemoteException
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003895 {
3896 Parcel data = Parcel.obtain();
3897 Parcel reply = Parcel.obtain();
3898 data.writeInterfaceToken(IActivityManager.descriptor);
3899 data.writeString(process);
Dianne Hackborn1676c852012-09-10 14:52:30 -07003900 data.writeInt(userId);
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003901 data.writeInt(start ? 1 : 0);
Romain Guy9a8c5ce2011-07-21 18:04:29 -07003902 data.writeInt(profileType);
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003903 data.writeString(path);
Dianne Hackborn9c8dd552009-06-23 19:22:52 -07003904 if (fd != null) {
3905 data.writeInt(1);
3906 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
3907 } else {
3908 data.writeInt(0);
3909 }
The Android Open Source Projectf5b4b982009-03-05 20:00:43 -08003910 mRemote.transact(PROFILE_CONTROL_TRANSACTION, data, reply, 0);
3911 reply.readException();
3912 boolean res = reply.readInt() != 0;
3913 reply.recycle();
3914 data.recycle();
3915 return res;
3916 }
3917
Dianne Hackborn55280a92009-05-07 15:53:46 -07003918 public boolean shutdown(int timeout) throws RemoteException
3919 {
3920 Parcel data = Parcel.obtain();
3921 Parcel reply = Parcel.obtain();
3922 data.writeInterfaceToken(IActivityManager.descriptor);
3923 data.writeInt(timeout);
3924 mRemote.transact(SHUTDOWN_TRANSACTION, data, reply, 0);
3925 reply.readException();
3926 boolean res = reply.readInt() != 0;
3927 reply.recycle();
3928 data.recycle();
3929 return res;
3930 }
3931
Dianne Hackborn95fc68f2009-05-19 18:37:45 -07003932 public void stopAppSwitches() throws RemoteException {
3933 Parcel data = Parcel.obtain();
3934 Parcel reply = Parcel.obtain();
3935 data.writeInterfaceToken(IActivityManager.descriptor);
3936 mRemote.transact(STOP_APP_SWITCHES_TRANSACTION, data, reply, 0);
3937 reply.readException();
3938 reply.recycle();
3939 data.recycle();
3940 }
3941
3942 public void resumeAppSwitches() throws RemoteException {
3943 Parcel data = Parcel.obtain();
3944 Parcel reply = Parcel.obtain();
3945 data.writeInterfaceToken(IActivityManager.descriptor);
3946 mRemote.transact(RESUME_APP_SWITCHES_TRANSACTION, data, reply, 0);
3947 reply.readException();
3948 reply.recycle();
3949 data.recycle();
3950 }
3951
Dianne Hackborn21d9b562013-05-28 17:46:59 -07003952 public void killApplicationWithAppId(String pkg, int appid, String reason)
3953 throws RemoteException {
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07003954 Parcel data = Parcel.obtain();
3955 Parcel reply = Parcel.obtain();
3956 data.writeInterfaceToken(IActivityManager.descriptor);
3957 data.writeString(pkg);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003958 data.writeInt(appid);
Dianne Hackborn21d9b562013-05-28 17:46:59 -07003959 data.writeString(reason);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07003960 mRemote.transact(KILL_APPLICATION_WITH_APPID_TRANSACTION, data, reply, 0);
Suchi Amalapurapu261e66a2009-07-27 15:21:34 -07003961 reply.readException();
3962 data.recycle();
3963 reply.recycle();
3964 }
Dianne Hackborna6ddc8a2009-07-28 17:49:55 -07003965
3966 public void closeSystemDialogs(String reason) throws RemoteException {
3967 Parcel data = Parcel.obtain();
3968 Parcel reply = Parcel.obtain();
3969 data.writeInterfaceToken(IActivityManager.descriptor);
3970 data.writeString(reason);
3971 mRemote.transact(CLOSE_SYSTEM_DIALOGS_TRANSACTION, data, reply, 0);
3972 reply.readException();
3973 data.recycle();
3974 reply.recycle();
3975 }
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003976
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07003977 public Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids)
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003978 throws RemoteException {
3979 Parcel data = Parcel.obtain();
3980 Parcel reply = Parcel.obtain();
3981 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07003982 data.writeIntArray(pids);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003983 mRemote.transact(GET_PROCESS_MEMORY_INFO_TRANSACTION, data, reply, 0);
3984 reply.readException();
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07003985 Debug.MemoryInfo[] res = reply.createTypedArray(Debug.MemoryInfo.CREATOR);
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003986 data.recycle();
3987 reply.recycle();
Dianne Hackborn4f21c4c2009-09-17 10:24:05 -07003988 return res;
Dianne Hackborn3025ef32009-08-31 21:31:47 -07003989 }
Christopher Tate5e1ab332009-09-01 20:32:49 -07003990
3991 public void killApplicationProcess(String processName, int uid) throws RemoteException {
3992 Parcel data = Parcel.obtain();
3993 Parcel reply = Parcel.obtain();
3994 data.writeInterfaceToken(IActivityManager.descriptor);
3995 data.writeString(processName);
3996 data.writeInt(uid);
3997 mRemote.transact(KILL_APPLICATION_PROCESS_TRANSACTION, data, reply, 0);
3998 reply.readException();
3999 data.recycle();
4000 reply.recycle();
4001 }
4002
Dianne Hackborn3b3e1452009-09-24 19:22:12 -07004003 public void overridePendingTransition(IBinder token, String packageName,
4004 int enterAnim, int exitAnim) throws RemoteException {
4005 Parcel data = Parcel.obtain();
4006 Parcel reply = Parcel.obtain();
4007 data.writeInterfaceToken(IActivityManager.descriptor);
4008 data.writeStrongBinder(token);
4009 data.writeString(packageName);
4010 data.writeInt(enterAnim);
4011 data.writeInt(exitAnim);
4012 mRemote.transact(OVERRIDE_PENDING_TRANSITION_TRANSACTION, data, reply, 0);
4013 reply.readException();
4014 data.recycle();
4015 reply.recycle();
4016 }
4017
Dianne Hackborn9327f4f2010-01-29 10:38:29 -08004018 public boolean isUserAMonkey() throws RemoteException {
4019 Parcel data = Parcel.obtain();
4020 Parcel reply = Parcel.obtain();
4021 data.writeInterfaceToken(IActivityManager.descriptor);
4022 mRemote.transact(IS_USER_A_MONKEY_TRANSACTION, data, reply, 0);
4023 reply.readException();
4024 boolean res = reply.readInt() != 0;
4025 data.recycle();
4026 reply.recycle();
4027 return res;
4028 }
Adam Momtaz8f6f1f42013-04-10 12:42:58 -07004029
4030 public void setUserIsMonkey(boolean monkey) throws RemoteException {
4031 Parcel data = Parcel.obtain();
4032 Parcel reply = Parcel.obtain();
4033 data.writeInterfaceToken(IActivityManager.descriptor);
4034 data.writeInt(monkey ? 1 : 0);
4035 mRemote.transact(SET_USER_IS_MONKEY_TRANSACTION, data, reply, 0);
4036 reply.readException();
4037 data.recycle();
4038 reply.recycle();
4039 }
4040
Dianne Hackborn860755f2010-06-03 18:47:52 -07004041 public void finishHeavyWeightApp() throws RemoteException {
4042 Parcel data = Parcel.obtain();
4043 Parcel reply = Parcel.obtain();
4044 data.writeInterfaceToken(IActivityManager.descriptor);
4045 mRemote.transact(FINISH_HEAVY_WEIGHT_APP_TRANSACTION, data, reply, 0);
4046 reply.readException();
4047 data.recycle();
4048 reply.recycle();
4049 }
Craig Mautner4addfc52013-06-25 08:05:45 -07004050
Craig Mautnerbc57cd12013-08-19 15:47:42 -07004051 public boolean convertFromTranslucent(IBinder token)
Craig Mautner4addfc52013-06-25 08:05:45 -07004052 throws RemoteException {
4053 Parcel data = Parcel.obtain();
4054 Parcel reply = Parcel.obtain();
4055 data.writeInterfaceToken(IActivityManager.descriptor);
4056 data.writeStrongBinder(token);
Craig Mautner5eda9b32013-07-02 11:58:16 -07004057 mRemote.transact(CONVERT_FROM_TRANSLUCENT_TRANSACTION, data, reply, 0);
4058 reply.readException();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07004059 boolean res = reply.readInt() != 0;
Craig Mautner5eda9b32013-07-02 11:58:16 -07004060 data.recycle();
4061 reply.recycle();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07004062 return res;
Craig Mautner5eda9b32013-07-02 11:58:16 -07004063 }
4064
Craig Mautnerbc57cd12013-08-19 15:47:42 -07004065 public boolean convertToTranslucent(IBinder token)
Craig Mautner5eda9b32013-07-02 11:58:16 -07004066 throws RemoteException {
4067 Parcel data = Parcel.obtain();
4068 Parcel reply = Parcel.obtain();
4069 data.writeInterfaceToken(IActivityManager.descriptor);
4070 data.writeStrongBinder(token);
4071 mRemote.transact(CONVERT_TO_TRANSLUCENT_TRANSACTION, data, reply, 0);
Craig Mautner4addfc52013-06-25 08:05:45 -07004072 reply.readException();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07004073 boolean res = reply.readInt() != 0;
Craig Mautner4addfc52013-06-25 08:05:45 -07004074 data.recycle();
4075 reply.recycle();
Craig Mautnerbc57cd12013-08-19 15:47:42 -07004076 return res;
Craig Mautner4addfc52013-06-25 08:05:45 -07004077 }
4078
Daniel Sandler69a48172010-06-23 16:29:36 -04004079 public void setImmersive(IBinder token, boolean immersive)
4080 throws RemoteException {
4081 Parcel data = Parcel.obtain();
4082 Parcel reply = Parcel.obtain();
4083 data.writeInterfaceToken(IActivityManager.descriptor);
4084 data.writeStrongBinder(token);
4085 data.writeInt(immersive ? 1 : 0);
4086 mRemote.transact(SET_IMMERSIVE_TRANSACTION, data, reply, 0);
4087 reply.readException();
4088 data.recycle();
4089 reply.recycle();
4090 }
4091
4092 public boolean isImmersive(IBinder token)
4093 throws RemoteException {
4094 Parcel data = Parcel.obtain();
4095 Parcel reply = Parcel.obtain();
4096 data.writeInterfaceToken(IActivityManager.descriptor);
4097 data.writeStrongBinder(token);
4098 mRemote.transact(IS_IMMERSIVE_TRANSACTION, data, reply, 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04004099 reply.readException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07004100 boolean res = reply.readInt() == 1;
Daniel Sandler69a48172010-06-23 16:29:36 -04004101 data.recycle();
4102 reply.recycle();
4103 return res;
4104 }
4105
4106 public boolean isTopActivityImmersive()
4107 throws RemoteException {
4108 Parcel data = Parcel.obtain();
4109 Parcel reply = Parcel.obtain();
4110 data.writeInterfaceToken(IActivityManager.descriptor);
4111 mRemote.transact(IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION, data, reply, 0);
Daniel Sandler69a48172010-06-23 16:29:36 -04004112 reply.readException();
Dianne Hackborn7e269642010-08-25 19:50:20 -07004113 boolean res = reply.readInt() == 1;
Daniel Sandler69a48172010-06-23 16:29:36 -04004114 data.recycle();
4115 reply.recycle();
4116 return res;
4117 }
4118
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07004119 public void crashApplication(int uid, int initialPid, String packageName,
4120 String message) throws RemoteException {
4121 Parcel data = Parcel.obtain();
4122 Parcel reply = Parcel.obtain();
4123 data.writeInterfaceToken(IActivityManager.descriptor);
4124 data.writeInt(uid);
4125 data.writeInt(initialPid);
4126 data.writeString(packageName);
4127 data.writeString(message);
4128 mRemote.transact(CRASH_APPLICATION_TRANSACTION, data, reply, 0);
4129 reply.readException();
4130 data.recycle();
4131 reply.recycle();
4132 }
Andy McFadden824c5102010-07-09 16:26:57 -07004133
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07004134 public String getProviderMimeType(Uri uri, int userId) throws RemoteException {
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07004135 Parcel data = Parcel.obtain();
4136 Parcel reply = Parcel.obtain();
4137 data.writeInterfaceToken(IActivityManager.descriptor);
4138 uri.writeToParcel(data, 0);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07004139 data.writeInt(userId);
Dianne Hackborncca1f0e2010-09-26 18:34:53 -07004140 mRemote.transact(GET_PROVIDER_MIME_TYPE_TRANSACTION, data, reply, 0);
4141 reply.readException();
4142 String res = reply.readString();
4143 data.recycle();
4144 reply.recycle();
4145 return res;
4146 }
4147
Dianne Hackborn7e269642010-08-25 19:50:20 -07004148 public IBinder newUriPermissionOwner(String name)
4149 throws RemoteException {
4150 Parcel data = Parcel.obtain();
4151 Parcel reply = Parcel.obtain();
4152 data.writeInterfaceToken(IActivityManager.descriptor);
4153 data.writeString(name);
4154 mRemote.transact(NEW_URI_PERMISSION_OWNER_TRANSACTION, data, reply, 0);
4155 reply.readException();
4156 IBinder res = reply.readStrongBinder();
4157 data.recycle();
4158 reply.recycle();
4159 return res;
4160 }
4161
4162 public void grantUriPermissionFromOwner(IBinder owner, int fromUid, String targetPkg,
4163 Uri uri, int mode) throws RemoteException {
4164 Parcel data = Parcel.obtain();
4165 Parcel reply = Parcel.obtain();
4166 data.writeInterfaceToken(IActivityManager.descriptor);
4167 data.writeStrongBinder(owner);
4168 data.writeInt(fromUid);
4169 data.writeString(targetPkg);
4170 uri.writeToParcel(data, 0);
4171 data.writeInt(mode);
4172 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0);
4173 reply.readException();
4174 data.recycle();
4175 reply.recycle();
4176 }
4177
4178 public void revokeUriPermissionFromOwner(IBinder owner, Uri uri,
4179 int mode) throws RemoteException {
4180 Parcel data = Parcel.obtain();
4181 Parcel reply = Parcel.obtain();
4182 data.writeInterfaceToken(IActivityManager.descriptor);
4183 data.writeStrongBinder(owner);
4184 if (uri != null) {
4185 data.writeInt(1);
4186 uri.writeToParcel(data, 0);
4187 } else {
4188 data.writeInt(0);
4189 }
4190 data.writeInt(mode);
4191 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0);
4192 reply.readException();
4193 data.recycle();
4194 reply.recycle();
4195 }
Dianne Hackbornc8f84972010-08-25 23:14:44 -07004196
Dianne Hackborn90f4aaf2010-09-27 14:58:44 -07004197 public int checkGrantUriPermission(int callingUid, String targetPkg,
4198 Uri uri, int modeFlags) throws RemoteException {
4199 Parcel data = Parcel.obtain();
4200 Parcel reply = Parcel.obtain();
4201 data.writeInterfaceToken(IActivityManager.descriptor);
4202 data.writeInt(callingUid);
4203 data.writeString(targetPkg);
4204 uri.writeToParcel(data, 0);
4205 data.writeInt(modeFlags);
4206 mRemote.transact(CHECK_GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0);
4207 reply.readException();
4208 int res = reply.readInt();
4209 data.recycle();
4210 reply.recycle();
4211 return res;
4212 }
4213
Dianne Hackborn1676c852012-09-10 14:52:30 -07004214 public boolean dumpHeap(String process, int userId, boolean managed,
Andy McFadden824c5102010-07-09 16:26:57 -07004215 String path, ParcelFileDescriptor fd) throws RemoteException {
4216 Parcel data = Parcel.obtain();
4217 Parcel reply = Parcel.obtain();
4218 data.writeInterfaceToken(IActivityManager.descriptor);
4219 data.writeString(process);
Dianne Hackborn1676c852012-09-10 14:52:30 -07004220 data.writeInt(userId);
Andy McFadden824c5102010-07-09 16:26:57 -07004221 data.writeInt(managed ? 1 : 0);
4222 data.writeString(path);
4223 if (fd != null) {
4224 data.writeInt(1);
4225 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
4226 } else {
4227 data.writeInt(0);
4228 }
4229 mRemote.transact(DUMP_HEAP_TRANSACTION, data, reply, 0);
4230 reply.readException();
4231 boolean res = reply.readInt() != 0;
4232 reply.recycle();
4233 data.recycle();
4234 return res;
4235 }
Dianne Hackborn9d39d0c2010-06-24 15:57:42 -07004236
Dianne Hackbornf265ea92013-01-31 15:00:51 -08004237 public int startActivities(IApplicationThread caller, String callingPackage,
Dianne Hackborna4972e92012-03-14 10:38:05 -07004238 Intent[] intents, String[] resolvedTypes, IBinder resultTo,
Amith Yamasaniea7e9152012-09-24 16:11:18 -07004239 Bundle options, int userId) throws RemoteException {
Dianne Hackborn621e17d2010-11-22 15:59:56 -08004240 Parcel data = Parcel.obtain();
4241 Parcel reply = Parcel.obtain();
4242 data.writeInterfaceToken(IActivityManager.descriptor);
4243 data.writeStrongBinder(caller != null ? caller.asBinder() : null);
Dianne Hackbornf265ea92013-01-31 15:00:51 -08004244 data.writeString(callingPackage);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08004245 data.writeTypedArray(intents, 0);
4246 data.writeStringArray(resolvedTypes);
4247 data.writeStrongBinder(resultTo);
Dianne Hackborna4972e92012-03-14 10:38:05 -07004248 if (options != null) {
4249 data.writeInt(1);
4250 options.writeToParcel(data, 0);
4251 } else {
4252 data.writeInt(0);
4253 }
Amith Yamasaniea7e9152012-09-24 16:11:18 -07004254 data.writeInt(userId);
Dianne Hackborn621e17d2010-11-22 15:59:56 -08004255 mRemote.transact(START_ACTIVITIES_TRANSACTION, data, reply, 0);
4256 reply.readException();
4257 int result = reply.readInt();
4258 reply.recycle();
4259 data.recycle();
4260 return result;
4261 }
4262
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07004263 public int getFrontActivityScreenCompatMode() throws RemoteException {
4264 Parcel data = Parcel.obtain();
4265 Parcel reply = Parcel.obtain();
4266 data.writeInterfaceToken(IActivityManager.descriptor);
4267 mRemote.transact(GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
4268 reply.readException();
4269 int mode = reply.readInt();
4270 reply.recycle();
4271 data.recycle();
4272 return mode;
4273 }
4274
4275 public void setFrontActivityScreenCompatMode(int mode) throws RemoteException {
4276 Parcel data = Parcel.obtain();
4277 Parcel reply = Parcel.obtain();
4278 data.writeInterfaceToken(IActivityManager.descriptor);
4279 data.writeInt(mode);
4280 mRemote.transact(SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
4281 reply.readException();
4282 reply.recycle();
4283 data.recycle();
4284 }
4285
4286 public int getPackageScreenCompatMode(String packageName) throws RemoteException {
4287 Parcel data = Parcel.obtain();
4288 Parcel reply = Parcel.obtain();
4289 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn36cd41f2011-05-25 21:00:46 -07004290 data.writeString(packageName);
4291 mRemote.transact(GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07004292 reply.readException();
4293 int mode = reply.readInt();
4294 reply.recycle();
4295 data.recycle();
4296 return mode;
4297 }
4298
4299 public void setPackageScreenCompatMode(String packageName, int mode)
Dianne Hackborne2515ee2011-04-27 18:52:56 -04004300 throws RemoteException {
4301 Parcel data = Parcel.obtain();
4302 Parcel reply = Parcel.obtain();
4303 data.writeInterfaceToken(IActivityManager.descriptor);
4304 data.writeString(packageName);
Dianne Hackborn0f1de9a2011-05-11 17:34:49 -07004305 data.writeInt(mode);
Dianne Hackborne2515ee2011-04-27 18:52:56 -04004306 mRemote.transact(SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0);
4307 reply.readException();
4308 reply.recycle();
4309 data.recycle();
4310 }
4311
Dianne Hackborn36cd41f2011-05-25 21:00:46 -07004312 public boolean getPackageAskScreenCompat(String packageName) throws RemoteException {
4313 Parcel data = Parcel.obtain();
4314 Parcel reply = Parcel.obtain();
4315 data.writeInterfaceToken(IActivityManager.descriptor);
4316 data.writeString(packageName);
4317 mRemote.transact(GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0);
4318 reply.readException();
4319 boolean ask = reply.readInt() != 0;
4320 reply.recycle();
4321 data.recycle();
4322 return ask;
4323 }
4324
4325 public void setPackageAskScreenCompat(String packageName, boolean ask)
4326 throws RemoteException {
4327 Parcel data = Parcel.obtain();
4328 Parcel reply = Parcel.obtain();
4329 data.writeInterfaceToken(IActivityManager.descriptor);
4330 data.writeString(packageName);
4331 data.writeInt(ask ? 1 : 0);
4332 mRemote.transact(SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0);
4333 reply.readException();
4334 reply.recycle();
4335 data.recycle();
4336 }
4337
Amith Yamasani4b2e9342011-03-31 12:38:53 -07004338 public boolean switchUser(int userid) throws RemoteException {
4339 Parcel data = Parcel.obtain();
4340 Parcel reply = Parcel.obtain();
4341 data.writeInterfaceToken(IActivityManager.descriptor);
4342 data.writeInt(userid);
4343 mRemote.transact(SWITCH_USER_TRANSACTION, data, reply, 0);
4344 reply.readException();
4345 boolean result = reply.readInt() != 0;
4346 reply.recycle();
4347 data.recycle();
4348 return result;
4349 }
Amith Yamasani52f1d752012-03-28 18:19:29 -07004350
Kenny Guy08488bf2014-02-21 17:40:37 +00004351 public boolean startUserInBackground(int userid) throws RemoteException {
4352 Parcel data = Parcel.obtain();
4353 Parcel reply = Parcel.obtain();
4354 data.writeInterfaceToken(IActivityManager.descriptor);
4355 data.writeInt(userid);
4356 mRemote.transact(START_USER_IN_BACKGROUND_TRANSACTION, data, reply, 0);
4357 reply.readException();
4358 boolean result = reply.readInt() != 0;
4359 reply.recycle();
4360 data.recycle();
4361 return result;
4362 }
4363
Dianne Hackborn80a4af22012-08-27 19:18:31 -07004364 public int stopUser(int userid, IStopUserCallback callback) throws RemoteException {
4365 Parcel data = Parcel.obtain();
4366 Parcel reply = Parcel.obtain();
4367 data.writeInterfaceToken(IActivityManager.descriptor);
4368 data.writeInt(userid);
4369 data.writeStrongInterface(callback);
4370 mRemote.transact(STOP_USER_TRANSACTION, data, reply, 0);
4371 reply.readException();
4372 int result = reply.readInt();
4373 reply.recycle();
4374 data.recycle();
4375 return result;
4376 }
4377
Amith Yamasani52f1d752012-03-28 18:19:29 -07004378 public UserInfo getCurrentUser() throws RemoteException {
4379 Parcel data = Parcel.obtain();
4380 Parcel reply = Parcel.obtain();
4381 data.writeInterfaceToken(IActivityManager.descriptor);
Dianne Hackborn80a4af22012-08-27 19:18:31 -07004382 mRemote.transact(GET_CURRENT_USER_TRANSACTION, data, reply, 0);
Amith Yamasani52f1d752012-03-28 18:19:29 -07004383 reply.readException();
4384 UserInfo userInfo = UserInfo.CREATOR.createFromParcel(reply);
4385 reply.recycle();
4386 data.recycle();
4387 return userInfo;
4388 }
4389
Dianne Hackborna8a9bd62012-10-09 15:36:59 -07004390 public boolean isUserRunning(int userid, boolean orStopping) throws RemoteException {
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07004391 Parcel data = Parcel.obtain();
4392 Parcel reply = Parcel.obtain();
4393 data.writeInterfaceToken(IActivityManager.descriptor);
4394 data.writeInt(userid);
Dianne Hackborna8a9bd62012-10-09 15:36:59 -07004395 data.writeInt(orStopping ? 1 : 0);
Dianne Hackborn5e03e2c2012-09-06 14:21:19 -07004396 mRemote.transact(IS_USER_RUNNING_TRANSACTION, data, reply, 0);
4397 reply.readException();
4398 boolean result = reply.readInt() != 0;
4399 reply.recycle();
4400 data.recycle();
4401 return result;
4402 }
4403
Dianne Hackbornc72fc672012-09-20 13:12:03 -07004404 public int[] getRunningUserIds() throws RemoteException {
4405 Parcel data = Parcel.obtain();
4406 Parcel reply = Parcel.obtain();
4407 data.writeInterfaceToken(IActivityManager.descriptor);
4408 mRemote.transact(GET_RUNNING_USER_IDS_TRANSACTION, data, reply, 0);
4409 reply.readException();
4410 int[] result = reply.createIntArray();
4411 reply.recycle();
4412 data.recycle();
4413 return result;
4414 }
4415
Dianne Hackborn0c5001d2011-04-12 18:16:08 -07004416 public boolean removeSubTask(int taskId, int subTaskIndex) throws RemoteException {
4417 Parcel data = Parcel.obtain();
4418 Parcel reply = Parcel.obtain();
4419 data.writeInterfaceToken(IActivityManager.descriptor);
4420 data.writeInt(taskId);
4421 data.writeInt(subTaskIndex);
4422 mRemote.transact(REMOVE_SUB_TASK_TRANSACTION, data, reply, 0);
4423 reply.readException();
4424 boolean result = reply.readInt() != 0;
4425 reply.recycle();
4426 data.recycle();
4427 return result;
4428 }
4429
4430 public boolean removeTask(int taskId, int flags) throws RemoteException {
4431 Parcel data = Parcel.obtain();
4432 Parcel reply = Parcel.obtain();
4433 data.writeInterfaceToken(IActivityManager.descriptor);
4434 data.writeInt(taskId);
4435 data.writeInt(flags);
4436 mRemote.transact(REMOVE_TASK_TRANSACTION, data, reply, 0);
4437 reply.readException();
4438 boolean result = reply.readInt() != 0;
4439 reply.recycle();
4440 data.recycle();
4441 return result;
4442 }
Amith Yamasani4b2e9342011-03-31 12:38:53 -07004443
Jeff Sharkeya4620792011-05-20 15:29:23 -07004444 public void registerProcessObserver(IProcessObserver observer) throws RemoteException {
4445 Parcel data = Parcel.obtain();
4446 Parcel reply = Parcel.obtain();
4447 data.writeInterfaceToken(IActivityManager.descriptor);
4448 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
4449 mRemote.transact(REGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0);
4450 reply.readException();
4451 data.recycle();
4452 reply.recycle();
4453 }
4454
4455 public void unregisterProcessObserver(IProcessObserver observer) throws RemoteException {
4456 Parcel data = Parcel.obtain();
4457 Parcel reply = Parcel.obtain();
4458 data.writeInterfaceToken(IActivityManager.descriptor);
4459 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
4460 mRemote.transact(UNREGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0);
4461 reply.readException();
4462 data.recycle();
4463 reply.recycle();
4464 }
4465
Dianne Hackborn6c418d52011-06-29 14:05:33 -07004466 public boolean isIntentSenderTargetedToPackage(IIntentSender sender) throws RemoteException {
4467 Parcel data = Parcel.obtain();
4468 Parcel reply = Parcel.obtain();
4469 data.writeInterfaceToken(IActivityManager.descriptor);
4470 data.writeStrongBinder(sender.asBinder());
4471 mRemote.transact(IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION, data, reply, 0);
4472 reply.readException();
4473 boolean res = reply.readInt() != 0;
4474 data.recycle();
4475 reply.recycle();
4476 return res;
4477 }
4478
Dianne Hackborn1927ae82012-06-22 15:21:36 -07004479 public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException {
4480 Parcel data = Parcel.obtain();
4481 Parcel reply = Parcel.obtain();
4482 data.writeInterfaceToken(IActivityManager.descriptor);
4483 data.writeStrongBinder(sender.asBinder());
4484 mRemote.transact(IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION, data, reply, 0);
4485 reply.readException();
4486 boolean res = reply.readInt() != 0;
4487 data.recycle();
4488 reply.recycle();
4489 return res;
4490 }
4491
Dianne Hackborn81038902012-11-26 17:04:09 -08004492 public Intent getIntentForIntentSender(IIntentSender sender) throws RemoteException {
4493 Parcel data = Parcel.obtain();
4494 Parcel reply = Parcel.obtain();
4495 data.writeInterfaceToken(IActivityManager.descriptor);
4496 data.writeStrongBinder(sender.asBinder());
4497 mRemote.transact(GET_INTENT_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0);
4498 reply.readException();
4499 Intent res = reply.readInt() != 0
4500 ? Intent.CREATOR.createFromParcel(reply) : null;
4501 data.recycle();
4502 reply.recycle();
4503 return res;
4504 }
4505
Dianne Hackborna1f1a3c2014-02-24 18:12:28 -08004506 public String getTagForIntentSender(IIntentSender sender, String prefix)
4507 throws RemoteException {
4508 Parcel data = Parcel.obtain();
4509 Parcel reply = Parcel.obtain();
4510 data.writeInterfaceToken(IActivityManager.descriptor);
4511 data.writeStrongBinder(sender.asBinder());
4512 data.writeString(prefix);
4513 mRemote.transact(GET_TAG_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0);
4514 reply.readException();
4515 String res = reply.readString();
4516 data.recycle();
4517 reply.recycle();
4518 return res;
4519 }
4520
Dianne Hackborn31ca8542011-07-19 14:58:28 -07004521 public void updatePersistentConfiguration(Configuration values) throws RemoteException
4522 {
4523 Parcel data = Parcel.obtain();
4524 Parcel reply = Parcel.obtain();
4525 data.writeInterfaceToken(IActivityManager.descriptor);
4526 values.writeToParcel(data, 0);
4527 mRemote.transact(UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION, data, reply, 0);
4528 reply.readException();
4529 data.recycle();
4530 reply.recycle();
4531 }
4532
Dianne Hackbornb437e092011-08-05 17:50:29 -07004533 public long[] getProcessPss(int[] pids) throws RemoteException {
4534 Parcel data = Parcel.obtain();
4535 Parcel reply = Parcel.obtain();
4536 data.writeInterfaceToken(IActivityManager.descriptor);
4537 data.writeIntArray(pids);
4538 mRemote.transact(GET_PROCESS_PSS_TRANSACTION, data, reply, 0);
4539 reply.readException();
4540 long[] res = reply.createLongArray();
4541 data.recycle();
4542 reply.recycle();
4543 return res;
4544 }
4545
Dianne Hackborn661cd522011-08-22 00:26:20 -07004546 public void showBootMessage(CharSequence msg, boolean always) throws RemoteException {
4547 Parcel data = Parcel.obtain();
4548 Parcel reply = Parcel.obtain();
4549 data.writeInterfaceToken(IActivityManager.descriptor);
4550 TextUtils.writeToParcel(msg, data, 0);
4551 data.writeInt(always ? 1 : 0);
4552 mRemote.transact(SHOW_BOOT_MESSAGE_TRANSACTION, data, reply, 0);
4553 reply.readException();
4554 data.recycle();
4555 reply.recycle();
4556 }
4557
Dianne Hackborn90c52de2011-09-23 12:57:44 -07004558 public void dismissKeyguardOnNextActivity() throws RemoteException {
4559 Parcel data = Parcel.obtain();
4560 Parcel reply = Parcel.obtain();
4561 data.writeInterfaceToken(IActivityManager.descriptor);
4562 mRemote.transact(DISMISS_KEYGUARD_ON_NEXT_ACTIVITY_TRANSACTION, data, reply, 0);
4563 reply.readException();
4564 data.recycle();
4565 reply.recycle();
4566 }
4567
Adam Powelldd8fab22012-03-22 17:47:27 -07004568 public boolean targetTaskAffinityMatchesActivity(IBinder token, String destAffinity)
4569 throws RemoteException {
4570 Parcel data = Parcel.obtain();
4571 Parcel reply = Parcel.obtain();
4572 data.writeInterfaceToken(IActivityManager.descriptor);
4573 data.writeStrongBinder(token);
4574 data.writeString(destAffinity);
4575 mRemote.transact(TARGET_TASK_AFFINITY_MATCHES_ACTIVITY_TRANSACTION, data, reply, 0);
4576 reply.readException();
4577 boolean result = reply.readInt() != 0;
4578 data.recycle();
4579 reply.recycle();
4580 return result;
4581 }
4582
4583 public boolean navigateUpTo(IBinder token, Intent target, int resultCode, Intent resultData)
4584 throws RemoteException {
4585 Parcel data = Parcel.obtain();
4586 Parcel reply = Parcel.obtain();
4587 data.writeInterfaceToken(IActivityManager.descriptor);
4588 data.writeStrongBinder(token);
4589 target.writeToParcel(data, 0);
4590 data.writeInt(resultCode);
4591 if (resultData != null) {
4592 data.writeInt(1);
4593 resultData.writeToParcel(data, 0);
4594 } else {
4595 data.writeInt(0);
4596 }
4597 mRemote.transact(NAVIGATE_UP_TO_TRANSACTION, data, reply, 0);
4598 reply.readException();
4599 boolean result = reply.readInt() != 0;
4600 data.recycle();
4601 reply.recycle();
4602 return result;
4603 }
4604
Dianne Hackborn5320eb82012-05-18 12:05:04 -07004605 public int getLaunchedFromUid(IBinder activityToken) throws RemoteException {
4606 Parcel data = Parcel.obtain();
4607 Parcel reply = Parcel.obtain();
4608 data.writeInterfaceToken(IActivityManager.descriptor);
4609 data.writeStrongBinder(activityToken);
4610 mRemote.transact(GET_LAUNCHED_FROM_UID_TRANSACTION, data, reply, 0);
4611 reply.readException();
4612 int result = reply.readInt();
4613 data.recycle();
4614 reply.recycle();
4615 return result;
4616 }
4617
Dianne Hackbornf265ea92013-01-31 15:00:51 -08004618 public String getLaunchedFromPackage(IBinder activityToken) throws RemoteException {
4619 Parcel data = Parcel.obtain();
4620 Parcel reply = Parcel.obtain();
4621 data.writeInterfaceToken(IActivityManager.descriptor);
4622 data.writeStrongBinder(activityToken);
4623 mRemote.transact(GET_LAUNCHED_FROM_PACKAGE_TRANSACTION, data, reply, 0);
4624 reply.readException();
4625 String result = reply.readString();
4626 data.recycle();
4627 reply.recycle();
4628 return result;
4629 }
4630
Dianne Hackborn5dc5a002012-09-15 19:33:48 -07004631 public void registerUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException {
4632 Parcel data = Parcel.obtain();
4633 Parcel reply = Parcel.obtain();
4634 data.writeInterfaceToken(IActivityManager.descriptor);
4635 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
4636 mRemote.transact(REGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0);
4637 reply.readException();
4638 data.recycle();
4639 reply.recycle();
4640 }
4641
4642 public void unregisterUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException {
4643 Parcel data = Parcel.obtain();
4644 Parcel reply = Parcel.obtain();
4645 data.writeInterfaceToken(IActivityManager.descriptor);
4646 data.writeStrongBinder(observer != null ? observer.asBinder() : null);
4647 mRemote.transact(UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0);
4648 reply.readException();
4649 data.recycle();
4650 reply.recycle();
4651 }
4652
Dianne Hackbornd4ac8d72012-09-27 23:20:10 -07004653 public void requestBugReport() throws RemoteException {
4654 Parcel data = Parcel.obtain();
4655 Parcel reply = Parcel.obtain();
4656 data.writeInterfaceToken(IActivityManager.descriptor);
4657 mRemote.transact(REQUEST_BUG_REPORT_TRANSACTION, data, reply, 0);
4658 reply.readException();
4659 data.recycle();
4660 reply.recycle();
4661 }
4662
Jeff Brownbd181bb2013-09-10 16:44:24 -07004663 public long inputDispatchingTimedOut(int pid, boolean aboveSystem, String reason)
4664 throws RemoteException {
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07004665 Parcel data = Parcel.obtain();
4666 Parcel reply = Parcel.obtain();
4667 data.writeInterfaceToken(IActivityManager.descriptor);
4668 data.writeInt(pid);
4669 data.writeInt(aboveSystem ? 1 : 0);
Jeff Brownbd181bb2013-09-10 16:44:24 -07004670 data.writeString(reason);
Dianne Hackborn5fe7e2a2012-10-04 11:58:16 -07004671 mRemote.transact(INPUT_DISPATCHING_TIMED_OUT_TRANSACTION, data, reply, 0);
4672 reply.readException();
4673 long res = reply.readInt();
4674 data.recycle();
4675 reply.recycle();
4676 return res;
4677 }
4678
Adam Skorydfc7fd72013-08-05 19:23:41 -07004679 public Bundle getAssistContextExtras(int requestType) throws RemoteException {
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08004680 Parcel data = Parcel.obtain();
4681 Parcel reply = Parcel.obtain();
4682 data.writeInterfaceToken(IActivityManager.descriptor);
4683 data.writeInt(requestType);
Adam Skorydfc7fd72013-08-05 19:23:41 -07004684 mRemote.transact(GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0);
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08004685 reply.readException();
4686 Bundle res = reply.readBundle();
4687 data.recycle();
4688 reply.recycle();
4689 return res;
4690 }
4691
Adam Skory7140a252013-09-11 12:04:58 +01004692 public void reportAssistContextExtras(IBinder token, Bundle extras)
Adam Skorydfc7fd72013-08-05 19:23:41 -07004693 throws RemoteException {
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08004694 Parcel data = Parcel.obtain();
4695 Parcel reply = Parcel.obtain();
4696 data.writeInterfaceToken(IActivityManager.descriptor);
4697 data.writeStrongBinder(token);
4698 data.writeBundle(extras);
Adam Skorydfc7fd72013-08-05 19:23:41 -07004699 mRemote.transact(REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0);
Dianne Hackbornf9c5e0f2013-01-23 14:39:13 -08004700 reply.readException();
4701 data.recycle();
4702 reply.recycle();
4703 }
4704
Dianne Hackbornf1b78242013-04-08 22:28:59 -07004705 public void killUid(int uid, String reason) throws RemoteException {
4706 Parcel data = Parcel.obtain();
4707 Parcel reply = Parcel.obtain();
4708 data.writeInterfaceToken(IActivityManager.descriptor);
4709 data.writeInt(uid);
4710 data.writeString(reason);
4711 mRemote.transact(KILL_UID_TRANSACTION, data, reply, 0);
4712 reply.readException();
4713 data.recycle();
4714 reply.recycle();
4715 }
4716
Dianne Hackborn8bd64df2013-05-06 16:07:26 -07004717 public void hang(IBinder who, boolean allowRestart) throws RemoteException {
4718 Parcel data = Parcel.obtain();
4719 Parcel reply = Parcel.obtain();
4720 data.writeInterfaceToken(IActivityManager.descriptor);
4721 data.writeStrongBinder(who);
4722 data.writeInt(allowRestart ? 1 : 0);
4723 mRemote.transact(HANG_TRANSACTION, data, reply, 0);
4724 reply.readException();
4725 data.recycle();
4726 reply.recycle();
4727 }
4728
Dianne Hackborn2286cdc2013-07-01 19:10:06 -07004729 public void reportActivityFullyDrawn(IBinder token) throws RemoteException {
4730 Parcel data = Parcel.obtain();
4731 Parcel reply = Parcel.obtain();
4732 data.writeInterfaceToken(IActivityManager.descriptor);
4733 data.writeStrongBinder(token);
4734 mRemote.transact(REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION, data, reply, 0);
4735 reply.readException();
4736 data.recycle();
4737 reply.recycle();
4738 }
4739
Craig Mautner5eda9b32013-07-02 11:58:16 -07004740 public void notifyActivityDrawn(IBinder token) throws RemoteException {
4741 Parcel data = Parcel.obtain();
4742 Parcel reply = Parcel.obtain();
4743 data.writeInterfaceToken(IActivityManager.descriptor);
4744 data.writeStrongBinder(token);
4745 mRemote.transact(NOTIFY_ACTIVITY_DRAWN_TRANSACTION, data, reply, 0);
4746 reply.readException();
4747 data.recycle();
4748 reply.recycle();
4749 }
4750
Dianne Hackborn57a7f592013-07-22 18:21:32 -07004751 public void restart() throws RemoteException {
4752 Parcel data = Parcel.obtain();
4753 Parcel reply = Parcel.obtain();
4754 data.writeInterfaceToken(IActivityManager.descriptor);
4755 mRemote.transact(RESTART_TRANSACTION, data, reply, 0);
4756 reply.readException();
4757 data.recycle();
4758 reply.recycle();
4759 }
4760
Dianne Hackborn35f72be2013-09-16 10:57:39 -07004761 public void performIdleMaintenance() throws RemoteException {
4762 Parcel data = Parcel.obtain();
4763 Parcel reply = Parcel.obtain();
4764 data.writeInterfaceToken(IActivityManager.descriptor);
4765 mRemote.transact(PERFORM_IDLE_MAINTENANCE_TRANSACTION, data, reply, 0);
4766 reply.readException();
4767 data.recycle();
4768 reply.recycle();
4769 }
4770
Craig Mautner4a1cb222013-12-04 16:14:06 -08004771 public IActivityContainer createActivityContainer(IBinder parentActivityToken,
4772 IActivityContainerCallback callback) throws RemoteException {
4773 Parcel data = Parcel.obtain();
4774 Parcel reply = Parcel.obtain();
4775 data.writeInterfaceToken(IActivityManager.descriptor);
4776 data.writeStrongBinder(parentActivityToken);
Craig Mautnere3a00d72014-04-16 08:31:19 -07004777 data.writeStrongBinder(callback == null ? null : callback.asBinder());
Craig Mautner4a1cb222013-12-04 16:14:06 -08004778 mRemote.transact(CREATE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0);
4779 reply.readException();
Craig Mautnerbd503a42014-01-10 10:16:43 -08004780 final int result = reply.readInt();
4781 final IActivityContainer res;
4782 if (result == 1) {
4783 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder());
4784 } else {
4785 res = null;
4786 }
Craig Mautner4a1cb222013-12-04 16:14:06 -08004787 data.recycle();
4788 reply.recycle();
4789 return res;
4790 }
4791
Craig Mautner95da1082014-02-24 17:54:35 -08004792 public void deleteActivityContainer(IActivityContainer activityContainer)
4793 throws RemoteException {
4794 Parcel data = Parcel.obtain();
4795 Parcel reply = Parcel.obtain();
4796 data.writeInterfaceToken(IActivityManager.descriptor);
4797 data.writeStrongBinder(activityContainer.asBinder());
4798 mRemote.transact(DELETE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0);
4799 reply.readException();
4800 data.recycle();
4801 reply.recycle();
4802 }
4803
Craig Mautnere0a38842013-12-16 16:14:02 -08004804 public IActivityContainer getEnclosingActivityContainer(IBinder activityToken)
4805 throws RemoteException {
4806 Parcel data = Parcel.obtain();
4807 Parcel reply = Parcel.obtain();
4808 data.writeInterfaceToken(IActivityManager.descriptor);
4809 data.writeStrongBinder(activityToken);
4810 mRemote.transact(GET_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0);
4811 reply.readException();
Craig Mautnerbd503a42014-01-10 10:16:43 -08004812 final int result = reply.readInt();
4813 final IActivityContainer res;
4814 if (result == 1) {
4815 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder());
4816 } else {
4817 res = null;
4818 }
Craig Mautnere0a38842013-12-16 16:14:02 -08004819 data.recycle();
4820 reply.recycle();
4821 return res;
4822 }
4823
Craig Mautner4a1cb222013-12-04 16:14:06 -08004824 public IBinder getHomeActivityToken() throws RemoteException {
4825 Parcel data = Parcel.obtain();
4826 Parcel reply = Parcel.obtain();
4827 data.writeInterfaceToken(IActivityManager.descriptor);
4828 mRemote.transact(GET_HOME_ACTIVITY_TOKEN_TRANSACTION, data, reply, 0);
4829 reply.readException();
4830 IBinder res = reply.readStrongBinder();
4831 data.recycle();
4832 reply.recycle();
4833 return res;
4834 }
4835
Craig Mautneraea74a52014-03-08 14:23:10 -08004836 @Override
4837 public void startLockTaskMode(int taskId) throws RemoteException {
4838 Parcel data = Parcel.obtain();
4839 Parcel reply = Parcel.obtain();
4840 data.writeInterfaceToken(IActivityManager.descriptor);
4841 data.writeInt(taskId);
4842 mRemote.transact(START_LOCK_TASK_BY_TASK_ID_TRANSACTION, data, reply, 0);
4843 reply.readException();
4844 data.recycle();
4845 reply.recycle();
4846 }
4847
4848 @Override
4849 public void startLockTaskMode(IBinder token) throws RemoteException {
4850 Parcel data = Parcel.obtain();
4851 Parcel reply = Parcel.obtain();
4852 data.writeInterfaceToken(IActivityManager.descriptor);
4853 data.writeStrongBinder(token);
4854 mRemote.transact(START_LOCK_TASK_BY_TOKEN_TRANSACTION, data, reply, 0);
4855 reply.readException();
4856 data.recycle();
4857 reply.recycle();
4858 }
4859
4860 @Override
4861 public void stopLockTaskMode() throws RemoteException {
4862 Parcel data = Parcel.obtain();
4863 Parcel reply = Parcel.obtain();
4864 data.writeInterfaceToken(IActivityManager.descriptor);
4865 mRemote.transact(STOP_LOCK_TASK_MODE_TRANSACTION, data, reply, 0);
4866 reply.readException();
4867 data.recycle();
4868 reply.recycle();
4869 }
4870
4871 @Override
4872 public boolean isInLockTaskMode() throws RemoteException {
4873 Parcel data = Parcel.obtain();
4874 Parcel reply = Parcel.obtain();
4875 data.writeInterfaceToken(IActivityManager.descriptor);
4876 mRemote.transact(IS_IN_LOCK_TASK_MODE_TRANSACTION, data, reply, 0);
4877 reply.readException();
4878 boolean isInLockTaskMode = reply.readInt() == 1;
4879 data.recycle();
4880 reply.recycle();
4881 return isInLockTaskMode;
4882 }
4883
Craig Mautner688b5102014-03-27 16:55:03 -07004884 @Override
Winson Chung03a9bae2014-05-02 09:56:12 -07004885 public void setRecentsActivityValues(IBinder token, ActivityManager.RecentsActivityValues values)
4886 throws RemoteException {
Craig Mautner2fbd7542014-03-21 09:34:07 -07004887 Parcel data = Parcel.obtain();
4888 Parcel reply = Parcel.obtain();
4889 data.writeInterfaceToken(IActivityManager.descriptor);
4890 data.writeStrongBinder(token);
Winson Chung03a9bae2014-05-02 09:56:12 -07004891 values.writeToParcel(data, 0);
4892 mRemote.transact(SET_RECENTS_ACTIVITY_VALUES_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY);
Craig Mautner2fbd7542014-03-21 09:34:07 -07004893 reply.readException();
4894 data.recycle();
4895 reply.recycle();
4896 }
4897
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08004898 private IBinder mRemote;
4899}