ActivityManagerNative.java revision d54b578e47fb410c776bb3a4272c2c523153f657
1/* 2 * Copyright (C) 2006 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.app; 18 19import android.app.ActivityManager.StackInfo; 20import android.app.ProfilerInfo; 21import android.content.ComponentName; 22import android.content.IIntentReceiver; 23import android.content.IIntentSender; 24import android.content.Intent; 25import android.content.IntentFilter; 26import android.content.IntentSender; 27import android.content.UriPermission; 28import android.content.pm.ApplicationInfo; 29import android.content.pm.ConfigurationInfo; 30import android.content.pm.IPackageDataObserver; 31import android.content.pm.ParceledListSlice; 32import android.content.pm.UserInfo; 33import android.content.res.Configuration; 34import android.graphics.Bitmap; 35import android.graphics.Point; 36import android.graphics.Rect; 37import android.net.Uri; 38import android.os.Binder; 39import android.os.Bundle; 40import android.os.Debug; 41import android.os.IBinder; 42import android.os.Parcel; 43import android.os.ParcelFileDescriptor; 44import android.os.Parcelable; 45import android.os.PersistableBundle; 46import android.os.RemoteException; 47import android.os.ServiceManager; 48import android.os.StrictMode; 49import android.service.voice.IVoiceInteractionSession; 50import android.text.TextUtils; 51import android.util.Log; 52import android.util.Singleton; 53import com.android.internal.app.IVoiceInteractor; 54 55import java.util.ArrayList; 56import java.util.List; 57 58/** {@hide} */ 59public abstract class ActivityManagerNative extends Binder implements IActivityManager 60{ 61 /** 62 * Cast a Binder object into an activity manager interface, generating 63 * a proxy if needed. 64 */ 65 static public IActivityManager asInterface(IBinder obj) { 66 if (obj == null) { 67 return null; 68 } 69 IActivityManager in = 70 (IActivityManager)obj.queryLocalInterface(descriptor); 71 if (in != null) { 72 return in; 73 } 74 75 return new ActivityManagerProxy(obj); 76 } 77 78 /** 79 * Retrieve the system's default/global activity manager. 80 */ 81 static public IActivityManager getDefault() { 82 return gDefault.get(); 83 } 84 85 /** 86 * Convenience for checking whether the system is ready. For internal use only. 87 */ 88 static public boolean isSystemReady() { 89 if (!sSystemReady) { 90 sSystemReady = getDefault().testIsSystemReady(); 91 } 92 return sSystemReady; 93 } 94 static boolean sSystemReady = false; 95 96 /** 97 * Convenience for sending a sticky broadcast. For internal use only. 98 * If you don't care about permission, use null. 99 */ 100 static public void broadcastStickyIntent(Intent intent, String permission, int userId) { 101 try { 102 getDefault().broadcastIntent( 103 null, intent, null, null, Activity.RESULT_OK, null, null, 104 null /*permission*/, AppOpsManager.OP_NONE, false, true, userId); 105 } catch (RemoteException ex) { 106 } 107 } 108 109 static public void noteWakeupAlarm(PendingIntent ps, int sourceUid, String sourcePkg) { 110 try { 111 getDefault().noteWakeupAlarm(ps.getTarget(), sourceUid, sourcePkg); 112 } catch (RemoteException ex) { 113 } 114 } 115 116 public ActivityManagerNative() { 117 attachInterface(this, descriptor); 118 } 119 120 @Override 121 public boolean onTransact(int code, Parcel data, Parcel reply, int flags) 122 throws RemoteException { 123 switch (code) { 124 case START_ACTIVITY_TRANSACTION: 125 { 126 data.enforceInterface(IActivityManager.descriptor); 127 IBinder b = data.readStrongBinder(); 128 IApplicationThread app = ApplicationThreadNative.asInterface(b); 129 String callingPackage = data.readString(); 130 Intent intent = Intent.CREATOR.createFromParcel(data); 131 String resolvedType = data.readString(); 132 IBinder resultTo = data.readStrongBinder(); 133 String resultWho = data.readString(); 134 int requestCode = data.readInt(); 135 int startFlags = data.readInt(); 136 ProfilerInfo profilerInfo = data.readInt() != 0 137 ? ProfilerInfo.CREATOR.createFromParcel(data) : null; 138 Bundle options = data.readInt() != 0 139 ? Bundle.CREATOR.createFromParcel(data) : null; 140 int result = startActivity(app, callingPackage, intent, resolvedType, 141 resultTo, resultWho, requestCode, startFlags, profilerInfo, options); 142 reply.writeNoException(); 143 reply.writeInt(result); 144 return true; 145 } 146 147 case START_ACTIVITY_AS_USER_TRANSACTION: 148 { 149 data.enforceInterface(IActivityManager.descriptor); 150 IBinder b = data.readStrongBinder(); 151 IApplicationThread app = ApplicationThreadNative.asInterface(b); 152 String callingPackage = data.readString(); 153 Intent intent = Intent.CREATOR.createFromParcel(data); 154 String resolvedType = data.readString(); 155 IBinder resultTo = data.readStrongBinder(); 156 String resultWho = data.readString(); 157 int requestCode = data.readInt(); 158 int startFlags = data.readInt(); 159 ProfilerInfo profilerInfo = data.readInt() != 0 160 ? ProfilerInfo.CREATOR.createFromParcel(data) : null; 161 Bundle options = data.readInt() != 0 162 ? Bundle.CREATOR.createFromParcel(data) : null; 163 int userId = data.readInt(); 164 int result = startActivityAsUser(app, callingPackage, intent, resolvedType, 165 resultTo, resultWho, requestCode, startFlags, profilerInfo, options, userId); 166 reply.writeNoException(); 167 reply.writeInt(result); 168 return true; 169 } 170 171 case START_ACTIVITY_AS_CALLER_TRANSACTION: 172 { 173 data.enforceInterface(IActivityManager.descriptor); 174 IBinder b = data.readStrongBinder(); 175 IApplicationThread app = ApplicationThreadNative.asInterface(b); 176 String callingPackage = data.readString(); 177 Intent intent = Intent.CREATOR.createFromParcel(data); 178 String resolvedType = data.readString(); 179 IBinder resultTo = data.readStrongBinder(); 180 String resultWho = data.readString(); 181 int requestCode = data.readInt(); 182 int startFlags = data.readInt(); 183 ProfilerInfo profilerInfo = data.readInt() != 0 184 ? ProfilerInfo.CREATOR.createFromParcel(data) : null; 185 Bundle options = data.readInt() != 0 186 ? Bundle.CREATOR.createFromParcel(data) : null; 187 int userId = data.readInt(); 188 int result = startActivityAsCaller(app, callingPackage, intent, resolvedType, 189 resultTo, resultWho, requestCode, startFlags, profilerInfo, options, userId); 190 reply.writeNoException(); 191 reply.writeInt(result); 192 return true; 193 } 194 195 case START_ACTIVITY_AND_WAIT_TRANSACTION: 196 { 197 data.enforceInterface(IActivityManager.descriptor); 198 IBinder b = data.readStrongBinder(); 199 IApplicationThread app = ApplicationThreadNative.asInterface(b); 200 String callingPackage = data.readString(); 201 Intent intent = Intent.CREATOR.createFromParcel(data); 202 String resolvedType = data.readString(); 203 IBinder resultTo = data.readStrongBinder(); 204 String resultWho = data.readString(); 205 int requestCode = data.readInt(); 206 int startFlags = data.readInt(); 207 ProfilerInfo profilerInfo = data.readInt() != 0 208 ? ProfilerInfo.CREATOR.createFromParcel(data) : null; 209 Bundle options = data.readInt() != 0 210 ? Bundle.CREATOR.createFromParcel(data) : null; 211 int userId = data.readInt(); 212 WaitResult result = startActivityAndWait(app, callingPackage, intent, resolvedType, 213 resultTo, resultWho, requestCode, startFlags, profilerInfo, options, userId); 214 reply.writeNoException(); 215 result.writeToParcel(reply, 0); 216 return true; 217 } 218 219 case START_ACTIVITY_WITH_CONFIG_TRANSACTION: 220 { 221 data.enforceInterface(IActivityManager.descriptor); 222 IBinder b = data.readStrongBinder(); 223 IApplicationThread app = ApplicationThreadNative.asInterface(b); 224 String callingPackage = data.readString(); 225 Intent intent = Intent.CREATOR.createFromParcel(data); 226 String resolvedType = data.readString(); 227 IBinder resultTo = data.readStrongBinder(); 228 String resultWho = data.readString(); 229 int requestCode = data.readInt(); 230 int startFlags = data.readInt(); 231 Configuration config = Configuration.CREATOR.createFromParcel(data); 232 Bundle options = data.readInt() != 0 233 ? Bundle.CREATOR.createFromParcel(data) : null; 234 int userId = data.readInt(); 235 int result = startActivityWithConfig(app, callingPackage, intent, resolvedType, 236 resultTo, resultWho, requestCode, startFlags, config, options, userId); 237 reply.writeNoException(); 238 reply.writeInt(result); 239 return true; 240 } 241 242 case START_ACTIVITY_INTENT_SENDER_TRANSACTION: 243 { 244 data.enforceInterface(IActivityManager.descriptor); 245 IBinder b = data.readStrongBinder(); 246 IApplicationThread app = ApplicationThreadNative.asInterface(b); 247 IntentSender intent = IntentSender.CREATOR.createFromParcel(data); 248 Intent fillInIntent = null; 249 if (data.readInt() != 0) { 250 fillInIntent = Intent.CREATOR.createFromParcel(data); 251 } 252 String resolvedType = data.readString(); 253 IBinder resultTo = data.readStrongBinder(); 254 String resultWho = data.readString(); 255 int requestCode = data.readInt(); 256 int flagsMask = data.readInt(); 257 int flagsValues = data.readInt(); 258 Bundle options = data.readInt() != 0 259 ? Bundle.CREATOR.createFromParcel(data) : null; 260 int result = startActivityIntentSender(app, intent, 261 fillInIntent, resolvedType, resultTo, resultWho, 262 requestCode, flagsMask, flagsValues, options); 263 reply.writeNoException(); 264 reply.writeInt(result); 265 return true; 266 } 267 268 case START_VOICE_ACTIVITY_TRANSACTION: 269 { 270 data.enforceInterface(IActivityManager.descriptor); 271 String callingPackage = data.readString(); 272 int callingPid = data.readInt(); 273 int callingUid = data.readInt(); 274 Intent intent = Intent.CREATOR.createFromParcel(data); 275 String resolvedType = data.readString(); 276 IVoiceInteractionSession session = IVoiceInteractionSession.Stub.asInterface( 277 data.readStrongBinder()); 278 IVoiceInteractor interactor = IVoiceInteractor.Stub.asInterface( 279 data.readStrongBinder()); 280 int startFlags = data.readInt(); 281 ProfilerInfo profilerInfo = data.readInt() != 0 282 ? ProfilerInfo.CREATOR.createFromParcel(data) : null; 283 Bundle options = data.readInt() != 0 284 ? Bundle.CREATOR.createFromParcel(data) : null; 285 int userId = data.readInt(); 286 int result = startVoiceActivity(callingPackage, callingPid, callingUid, intent, 287 resolvedType, session, interactor, startFlags, profilerInfo, options, userId); 288 reply.writeNoException(); 289 reply.writeInt(result); 290 return true; 291 } 292 293 case START_NEXT_MATCHING_ACTIVITY_TRANSACTION: 294 { 295 data.enforceInterface(IActivityManager.descriptor); 296 IBinder callingActivity = data.readStrongBinder(); 297 Intent intent = Intent.CREATOR.createFromParcel(data); 298 Bundle options = data.readInt() != 0 299 ? Bundle.CREATOR.createFromParcel(data) : null; 300 boolean result = startNextMatchingActivity(callingActivity, intent, options); 301 reply.writeNoException(); 302 reply.writeInt(result ? 1 : 0); 303 return true; 304 } 305 306 case START_ACTIVITY_FROM_RECENTS_TRANSACTION: 307 { 308 data.enforceInterface(IActivityManager.descriptor); 309 int taskId = data.readInt(); 310 Bundle options = data.readInt() == 0 ? null : Bundle.CREATOR.createFromParcel(data); 311 int result = startActivityFromRecents(taskId, options); 312 reply.writeNoException(); 313 reply.writeInt(result); 314 return true; 315 } 316 317 case FINISH_ACTIVITY_TRANSACTION: { 318 data.enforceInterface(IActivityManager.descriptor); 319 IBinder token = data.readStrongBinder(); 320 Intent resultData = null; 321 int resultCode = data.readInt(); 322 if (data.readInt() != 0) { 323 resultData = Intent.CREATOR.createFromParcel(data); 324 } 325 boolean finishTask = (data.readInt() != 0); 326 boolean res = finishActivity(token, resultCode, resultData, finishTask); 327 reply.writeNoException(); 328 reply.writeInt(res ? 1 : 0); 329 return true; 330 } 331 332 case FINISH_SUB_ACTIVITY_TRANSACTION: { 333 data.enforceInterface(IActivityManager.descriptor); 334 IBinder token = data.readStrongBinder(); 335 String resultWho = data.readString(); 336 int requestCode = data.readInt(); 337 finishSubActivity(token, resultWho, requestCode); 338 reply.writeNoException(); 339 return true; 340 } 341 342 case FINISH_ACTIVITY_AFFINITY_TRANSACTION: { 343 data.enforceInterface(IActivityManager.descriptor); 344 IBinder token = data.readStrongBinder(); 345 boolean res = finishActivityAffinity(token); 346 reply.writeNoException(); 347 reply.writeInt(res ? 1 : 0); 348 return true; 349 } 350 351 case FINISH_VOICE_TASK_TRANSACTION: { 352 data.enforceInterface(IActivityManager.descriptor); 353 IVoiceInteractionSession session = IVoiceInteractionSession.Stub.asInterface( 354 data.readStrongBinder()); 355 finishVoiceTask(session); 356 reply.writeNoException(); 357 return true; 358 } 359 360 case RELEASE_ACTIVITY_INSTANCE_TRANSACTION: { 361 data.enforceInterface(IActivityManager.descriptor); 362 IBinder token = data.readStrongBinder(); 363 boolean res = releaseActivityInstance(token); 364 reply.writeNoException(); 365 reply.writeInt(res ? 1 : 0); 366 return true; 367 } 368 369 case RELEASE_SOME_ACTIVITIES_TRANSACTION: { 370 data.enforceInterface(IActivityManager.descriptor); 371 IApplicationThread app = ApplicationThreadNative.asInterface(data.readStrongBinder()); 372 releaseSomeActivities(app); 373 reply.writeNoException(); 374 return true; 375 } 376 377 case WILL_ACTIVITY_BE_VISIBLE_TRANSACTION: { 378 data.enforceInterface(IActivityManager.descriptor); 379 IBinder token = data.readStrongBinder(); 380 boolean res = willActivityBeVisible(token); 381 reply.writeNoException(); 382 reply.writeInt(res ? 1 : 0); 383 return true; 384 } 385 386 case REGISTER_RECEIVER_TRANSACTION: 387 { 388 data.enforceInterface(IActivityManager.descriptor); 389 IBinder b = data.readStrongBinder(); 390 IApplicationThread app = 391 b != null ? ApplicationThreadNative.asInterface(b) : null; 392 String packageName = data.readString(); 393 b = data.readStrongBinder(); 394 IIntentReceiver rec 395 = b != null ? IIntentReceiver.Stub.asInterface(b) : null; 396 IntentFilter filter = IntentFilter.CREATOR.createFromParcel(data); 397 String perm = data.readString(); 398 int userId = data.readInt(); 399 Intent intent = registerReceiver(app, packageName, rec, filter, perm, userId); 400 reply.writeNoException(); 401 if (intent != null) { 402 reply.writeInt(1); 403 intent.writeToParcel(reply, 0); 404 } else { 405 reply.writeInt(0); 406 } 407 return true; 408 } 409 410 case UNREGISTER_RECEIVER_TRANSACTION: 411 { 412 data.enforceInterface(IActivityManager.descriptor); 413 IBinder b = data.readStrongBinder(); 414 if (b == null) { 415 return true; 416 } 417 IIntentReceiver rec = IIntentReceiver.Stub.asInterface(b); 418 unregisterReceiver(rec); 419 reply.writeNoException(); 420 return true; 421 } 422 423 case BROADCAST_INTENT_TRANSACTION: 424 { 425 data.enforceInterface(IActivityManager.descriptor); 426 IBinder b = data.readStrongBinder(); 427 IApplicationThread app = 428 b != null ? ApplicationThreadNative.asInterface(b) : null; 429 Intent intent = Intent.CREATOR.createFromParcel(data); 430 String resolvedType = data.readString(); 431 b = data.readStrongBinder(); 432 IIntentReceiver resultTo = 433 b != null ? IIntentReceiver.Stub.asInterface(b) : null; 434 int resultCode = data.readInt(); 435 String resultData = data.readString(); 436 Bundle resultExtras = data.readBundle(); 437 String perm = data.readString(); 438 int appOp = data.readInt(); 439 boolean serialized = data.readInt() != 0; 440 boolean sticky = data.readInt() != 0; 441 int userId = data.readInt(); 442 int res = broadcastIntent(app, intent, resolvedType, resultTo, 443 resultCode, resultData, resultExtras, perm, appOp, 444 serialized, sticky, userId); 445 reply.writeNoException(); 446 reply.writeInt(res); 447 return true; 448 } 449 450 case UNBROADCAST_INTENT_TRANSACTION: 451 { 452 data.enforceInterface(IActivityManager.descriptor); 453 IBinder b = data.readStrongBinder(); 454 IApplicationThread app = b != null ? ApplicationThreadNative.asInterface(b) : null; 455 Intent intent = Intent.CREATOR.createFromParcel(data); 456 int userId = data.readInt(); 457 unbroadcastIntent(app, intent, userId); 458 reply.writeNoException(); 459 return true; 460 } 461 462 case FINISH_RECEIVER_TRANSACTION: { 463 data.enforceInterface(IActivityManager.descriptor); 464 IBinder who = data.readStrongBinder(); 465 int resultCode = data.readInt(); 466 String resultData = data.readString(); 467 Bundle resultExtras = data.readBundle(); 468 boolean resultAbort = data.readInt() != 0; 469 if (who != null) { 470 finishReceiver(who, resultCode, resultData, resultExtras, resultAbort); 471 } 472 reply.writeNoException(); 473 return true; 474 } 475 476 case ATTACH_APPLICATION_TRANSACTION: { 477 data.enforceInterface(IActivityManager.descriptor); 478 IApplicationThread app = ApplicationThreadNative.asInterface( 479 data.readStrongBinder()); 480 if (app != null) { 481 attachApplication(app); 482 } 483 reply.writeNoException(); 484 return true; 485 } 486 487 case ACTIVITY_IDLE_TRANSACTION: { 488 data.enforceInterface(IActivityManager.descriptor); 489 IBinder token = data.readStrongBinder(); 490 Configuration config = null; 491 if (data.readInt() != 0) { 492 config = Configuration.CREATOR.createFromParcel(data); 493 } 494 boolean stopProfiling = data.readInt() != 0; 495 if (token != null) { 496 activityIdle(token, config, stopProfiling); 497 } 498 reply.writeNoException(); 499 return true; 500 } 501 502 case ACTIVITY_RESUMED_TRANSACTION: { 503 data.enforceInterface(IActivityManager.descriptor); 504 IBinder token = data.readStrongBinder(); 505 activityResumed(token); 506 reply.writeNoException(); 507 return true; 508 } 509 510 case ACTIVITY_PAUSED_TRANSACTION: { 511 data.enforceInterface(IActivityManager.descriptor); 512 IBinder token = data.readStrongBinder(); 513 activityPaused(token); 514 reply.writeNoException(); 515 return true; 516 } 517 518 case ACTIVITY_STOPPED_TRANSACTION: { 519 data.enforceInterface(IActivityManager.descriptor); 520 IBinder token = data.readStrongBinder(); 521 Bundle map = data.readBundle(); 522 PersistableBundle persistentState = data.readPersistableBundle(); 523 CharSequence description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data); 524 activityStopped(token, map, persistentState, description); 525 reply.writeNoException(); 526 return true; 527 } 528 529 case ACTIVITY_SLEPT_TRANSACTION: { 530 data.enforceInterface(IActivityManager.descriptor); 531 IBinder token = data.readStrongBinder(); 532 activitySlept(token); 533 reply.writeNoException(); 534 return true; 535 } 536 537 case ACTIVITY_DESTROYED_TRANSACTION: { 538 data.enforceInterface(IActivityManager.descriptor); 539 IBinder token = data.readStrongBinder(); 540 activityDestroyed(token); 541 reply.writeNoException(); 542 return true; 543 } 544 545 case GET_CALLING_PACKAGE_TRANSACTION: { 546 data.enforceInterface(IActivityManager.descriptor); 547 IBinder token = data.readStrongBinder(); 548 String res = token != null ? getCallingPackage(token) : null; 549 reply.writeNoException(); 550 reply.writeString(res); 551 return true; 552 } 553 554 case GET_CALLING_ACTIVITY_TRANSACTION: { 555 data.enforceInterface(IActivityManager.descriptor); 556 IBinder token = data.readStrongBinder(); 557 ComponentName cn = getCallingActivity(token); 558 reply.writeNoException(); 559 ComponentName.writeToParcel(cn, reply); 560 return true; 561 } 562 563 case GET_APP_TASKS_TRANSACTION: { 564 data.enforceInterface(IActivityManager.descriptor); 565 String callingPackage = data.readString(); 566 List<IAppTask> list = getAppTasks(callingPackage); 567 reply.writeNoException(); 568 int N = list != null ? list.size() : -1; 569 reply.writeInt(N); 570 int i; 571 for (i=0; i<N; i++) { 572 IAppTask task = list.get(i); 573 reply.writeStrongBinder(task.asBinder()); 574 } 575 return true; 576 } 577 578 case ADD_APP_TASK_TRANSACTION: { 579 data.enforceInterface(IActivityManager.descriptor); 580 IBinder activityToken = data.readStrongBinder(); 581 Intent intent = Intent.CREATOR.createFromParcel(data); 582 ActivityManager.TaskDescription descr 583 = ActivityManager.TaskDescription.CREATOR.createFromParcel(data); 584 Bitmap thumbnail = Bitmap.CREATOR.createFromParcel(data); 585 int res = addAppTask(activityToken, intent, descr, thumbnail); 586 reply.writeNoException(); 587 reply.writeInt(res); 588 return true; 589 } 590 591 case GET_APP_TASK_THUMBNAIL_SIZE_TRANSACTION: { 592 data.enforceInterface(IActivityManager.descriptor); 593 Point size = getAppTaskThumbnailSize(); 594 reply.writeNoException(); 595 size.writeToParcel(reply, 0); 596 return true; 597 } 598 599 case GET_TASKS_TRANSACTION: { 600 data.enforceInterface(IActivityManager.descriptor); 601 int maxNum = data.readInt(); 602 int fl = data.readInt(); 603 List<ActivityManager.RunningTaskInfo> list = getTasks(maxNum, fl); 604 reply.writeNoException(); 605 int N = list != null ? list.size() : -1; 606 reply.writeInt(N); 607 int i; 608 for (i=0; i<N; i++) { 609 ActivityManager.RunningTaskInfo info = list.get(i); 610 info.writeToParcel(reply, 0); 611 } 612 return true; 613 } 614 615 case GET_RECENT_TASKS_TRANSACTION: { 616 data.enforceInterface(IActivityManager.descriptor); 617 int maxNum = data.readInt(); 618 int fl = data.readInt(); 619 int userId = data.readInt(); 620 List<ActivityManager.RecentTaskInfo> list = getRecentTasks(maxNum, 621 fl, userId); 622 reply.writeNoException(); 623 reply.writeTypedList(list); 624 return true; 625 } 626 627 case GET_TASK_THUMBNAIL_TRANSACTION: { 628 data.enforceInterface(IActivityManager.descriptor); 629 int id = data.readInt(); 630 ActivityManager.TaskThumbnail taskThumbnail = getTaskThumbnail(id); 631 reply.writeNoException(); 632 if (taskThumbnail != null) { 633 reply.writeInt(1); 634 taskThumbnail.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 635 } else { 636 reply.writeInt(0); 637 } 638 return true; 639 } 640 641 case GET_SERVICES_TRANSACTION: { 642 data.enforceInterface(IActivityManager.descriptor); 643 int maxNum = data.readInt(); 644 int fl = data.readInt(); 645 List<ActivityManager.RunningServiceInfo> list = getServices(maxNum, fl); 646 reply.writeNoException(); 647 int N = list != null ? list.size() : -1; 648 reply.writeInt(N); 649 int i; 650 for (i=0; i<N; i++) { 651 ActivityManager.RunningServiceInfo info = list.get(i); 652 info.writeToParcel(reply, 0); 653 } 654 return true; 655 } 656 657 case GET_PROCESSES_IN_ERROR_STATE_TRANSACTION: { 658 data.enforceInterface(IActivityManager.descriptor); 659 List<ActivityManager.ProcessErrorStateInfo> list = getProcessesInErrorState(); 660 reply.writeNoException(); 661 reply.writeTypedList(list); 662 return true; 663 } 664 665 case GET_RUNNING_APP_PROCESSES_TRANSACTION: { 666 data.enforceInterface(IActivityManager.descriptor); 667 List<ActivityManager.RunningAppProcessInfo> list = getRunningAppProcesses(); 668 reply.writeNoException(); 669 reply.writeTypedList(list); 670 return true; 671 } 672 673 case GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION: { 674 data.enforceInterface(IActivityManager.descriptor); 675 List<ApplicationInfo> list = getRunningExternalApplications(); 676 reply.writeNoException(); 677 reply.writeTypedList(list); 678 return true; 679 } 680 681 case MOVE_TASK_TO_FRONT_TRANSACTION: { 682 data.enforceInterface(IActivityManager.descriptor); 683 int task = data.readInt(); 684 int fl = data.readInt(); 685 Bundle options = data.readInt() != 0 686 ? Bundle.CREATOR.createFromParcel(data) : null; 687 moveTaskToFront(task, fl, options); 688 reply.writeNoException(); 689 return true; 690 } 691 692 case MOVE_TASK_TO_BACK_TRANSACTION: { 693 data.enforceInterface(IActivityManager.descriptor); 694 int task = data.readInt(); 695 moveTaskToBack(task); 696 reply.writeNoException(); 697 return true; 698 } 699 700 case MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION: { 701 data.enforceInterface(IActivityManager.descriptor); 702 IBinder token = data.readStrongBinder(); 703 boolean nonRoot = data.readInt() != 0; 704 boolean res = moveActivityTaskToBack(token, nonRoot); 705 reply.writeNoException(); 706 reply.writeInt(res ? 1 : 0); 707 return true; 708 } 709 710 case MOVE_TASK_BACKWARDS_TRANSACTION: { 711 data.enforceInterface(IActivityManager.descriptor); 712 int task = data.readInt(); 713 moveTaskBackwards(task); 714 reply.writeNoException(); 715 return true; 716 } 717 718 case MOVE_TASK_TO_STACK_TRANSACTION: { 719 data.enforceInterface(IActivityManager.descriptor); 720 int taskId = data.readInt(); 721 int stackId = data.readInt(); 722 boolean toTop = data.readInt() != 0; 723 moveTaskToStack(taskId, stackId, toTop); 724 reply.writeNoException(); 725 return true; 726 } 727 728 case RESIZE_STACK_TRANSACTION: { 729 data.enforceInterface(IActivityManager.descriptor); 730 int stackId = data.readInt(); 731 float weight = data.readFloat(); 732 Rect r = Rect.CREATOR.createFromParcel(data); 733 resizeStack(stackId, r); 734 reply.writeNoException(); 735 return true; 736 } 737 738 case GET_ALL_STACK_INFOS_TRANSACTION: { 739 data.enforceInterface(IActivityManager.descriptor); 740 List<StackInfo> list = getAllStackInfos(); 741 reply.writeNoException(); 742 reply.writeTypedList(list); 743 return true; 744 } 745 746 case GET_STACK_INFO_TRANSACTION: { 747 data.enforceInterface(IActivityManager.descriptor); 748 int stackId = data.readInt(); 749 StackInfo info = getStackInfo(stackId); 750 reply.writeNoException(); 751 if (info != null) { 752 reply.writeInt(1); 753 info.writeToParcel(reply, 0); 754 } else { 755 reply.writeInt(0); 756 } 757 return true; 758 } 759 760 case IS_IN_HOME_STACK_TRANSACTION: { 761 data.enforceInterface(IActivityManager.descriptor); 762 int taskId = data.readInt(); 763 boolean isInHomeStack = isInHomeStack(taskId); 764 reply.writeNoException(); 765 reply.writeInt(isInHomeStack ? 1 : 0); 766 return true; 767 } 768 769 case SET_FOCUSED_STACK_TRANSACTION: { 770 data.enforceInterface(IActivityManager.descriptor); 771 int stackId = data.readInt(); 772 setFocusedStack(stackId); 773 reply.writeNoException(); 774 return true; 775 } 776 777 case GET_TASK_FOR_ACTIVITY_TRANSACTION: { 778 data.enforceInterface(IActivityManager.descriptor); 779 IBinder token = data.readStrongBinder(); 780 boolean onlyRoot = data.readInt() != 0; 781 int res = token != null 782 ? getTaskForActivity(token, onlyRoot) : -1; 783 reply.writeNoException(); 784 reply.writeInt(res); 785 return true; 786 } 787 788 case GET_CONTENT_PROVIDER_TRANSACTION: { 789 data.enforceInterface(IActivityManager.descriptor); 790 IBinder b = data.readStrongBinder(); 791 IApplicationThread app = ApplicationThreadNative.asInterface(b); 792 String name = data.readString(); 793 int userId = data.readInt(); 794 boolean stable = data.readInt() != 0; 795 ContentProviderHolder cph = getContentProvider(app, name, userId, stable); 796 reply.writeNoException(); 797 if (cph != null) { 798 reply.writeInt(1); 799 cph.writeToParcel(reply, 0); 800 } else { 801 reply.writeInt(0); 802 } 803 return true; 804 } 805 806 case GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION: { 807 data.enforceInterface(IActivityManager.descriptor); 808 String name = data.readString(); 809 int userId = data.readInt(); 810 IBinder token = data.readStrongBinder(); 811 ContentProviderHolder cph = getContentProviderExternal(name, userId, token); 812 reply.writeNoException(); 813 if (cph != null) { 814 reply.writeInt(1); 815 cph.writeToParcel(reply, 0); 816 } else { 817 reply.writeInt(0); 818 } 819 return true; 820 } 821 822 case PUBLISH_CONTENT_PROVIDERS_TRANSACTION: { 823 data.enforceInterface(IActivityManager.descriptor); 824 IBinder b = data.readStrongBinder(); 825 IApplicationThread app = ApplicationThreadNative.asInterface(b); 826 ArrayList<ContentProviderHolder> providers = 827 data.createTypedArrayList(ContentProviderHolder.CREATOR); 828 publishContentProviders(app, providers); 829 reply.writeNoException(); 830 return true; 831 } 832 833 case REF_CONTENT_PROVIDER_TRANSACTION: { 834 data.enforceInterface(IActivityManager.descriptor); 835 IBinder b = data.readStrongBinder(); 836 int stable = data.readInt(); 837 int unstable = data.readInt(); 838 boolean res = refContentProvider(b, stable, unstable); 839 reply.writeNoException(); 840 reply.writeInt(res ? 1 : 0); 841 return true; 842 } 843 844 case UNSTABLE_PROVIDER_DIED_TRANSACTION: { 845 data.enforceInterface(IActivityManager.descriptor); 846 IBinder b = data.readStrongBinder(); 847 unstableProviderDied(b); 848 reply.writeNoException(); 849 return true; 850 } 851 852 case APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION: { 853 data.enforceInterface(IActivityManager.descriptor); 854 IBinder b = data.readStrongBinder(); 855 appNotRespondingViaProvider(b); 856 reply.writeNoException(); 857 return true; 858 } 859 860 case REMOVE_CONTENT_PROVIDER_TRANSACTION: { 861 data.enforceInterface(IActivityManager.descriptor); 862 IBinder b = data.readStrongBinder(); 863 boolean stable = data.readInt() != 0; 864 removeContentProvider(b, stable); 865 reply.writeNoException(); 866 return true; 867 } 868 869 case REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION: { 870 data.enforceInterface(IActivityManager.descriptor); 871 String name = data.readString(); 872 IBinder token = data.readStrongBinder(); 873 removeContentProviderExternal(name, token); 874 reply.writeNoException(); 875 return true; 876 } 877 878 case GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION: { 879 data.enforceInterface(IActivityManager.descriptor); 880 ComponentName comp = ComponentName.CREATOR.createFromParcel(data); 881 PendingIntent pi = getRunningServiceControlPanel(comp); 882 reply.writeNoException(); 883 PendingIntent.writePendingIntentOrNullToParcel(pi, reply); 884 return true; 885 } 886 887 case START_SERVICE_TRANSACTION: { 888 data.enforceInterface(IActivityManager.descriptor); 889 IBinder b = data.readStrongBinder(); 890 IApplicationThread app = ApplicationThreadNative.asInterface(b); 891 Intent service = Intent.CREATOR.createFromParcel(data); 892 String resolvedType = data.readString(); 893 int userId = data.readInt(); 894 ComponentName cn = startService(app, service, resolvedType, userId); 895 reply.writeNoException(); 896 ComponentName.writeToParcel(cn, reply); 897 return true; 898 } 899 900 case STOP_SERVICE_TRANSACTION: { 901 data.enforceInterface(IActivityManager.descriptor); 902 IBinder b = data.readStrongBinder(); 903 IApplicationThread app = ApplicationThreadNative.asInterface(b); 904 Intent service = Intent.CREATOR.createFromParcel(data); 905 String resolvedType = data.readString(); 906 int userId = data.readInt(); 907 int res = stopService(app, service, resolvedType, userId); 908 reply.writeNoException(); 909 reply.writeInt(res); 910 return true; 911 } 912 913 case STOP_SERVICE_TOKEN_TRANSACTION: { 914 data.enforceInterface(IActivityManager.descriptor); 915 ComponentName className = ComponentName.readFromParcel(data); 916 IBinder token = data.readStrongBinder(); 917 int startId = data.readInt(); 918 boolean res = stopServiceToken(className, token, startId); 919 reply.writeNoException(); 920 reply.writeInt(res ? 1 : 0); 921 return true; 922 } 923 924 case SET_SERVICE_FOREGROUND_TRANSACTION: { 925 data.enforceInterface(IActivityManager.descriptor); 926 ComponentName className = ComponentName.readFromParcel(data); 927 IBinder token = data.readStrongBinder(); 928 int id = data.readInt(); 929 Notification notification = null; 930 if (data.readInt() != 0) { 931 notification = Notification.CREATOR.createFromParcel(data); 932 } 933 boolean removeNotification = data.readInt() != 0; 934 setServiceForeground(className, token, id, notification, removeNotification); 935 reply.writeNoException(); 936 return true; 937 } 938 939 case BIND_SERVICE_TRANSACTION: { 940 data.enforceInterface(IActivityManager.descriptor); 941 IBinder b = data.readStrongBinder(); 942 IApplicationThread app = ApplicationThreadNative.asInterface(b); 943 IBinder token = data.readStrongBinder(); 944 Intent service = Intent.CREATOR.createFromParcel(data); 945 String resolvedType = data.readString(); 946 b = data.readStrongBinder(); 947 int fl = data.readInt(); 948 int userId = data.readInt(); 949 IServiceConnection conn = IServiceConnection.Stub.asInterface(b); 950 int res = bindService(app, token, service, resolvedType, conn, fl, userId); 951 reply.writeNoException(); 952 reply.writeInt(res); 953 return true; 954 } 955 956 case UNBIND_SERVICE_TRANSACTION: { 957 data.enforceInterface(IActivityManager.descriptor); 958 IBinder b = data.readStrongBinder(); 959 IServiceConnection conn = IServiceConnection.Stub.asInterface(b); 960 boolean res = unbindService(conn); 961 reply.writeNoException(); 962 reply.writeInt(res ? 1 : 0); 963 return true; 964 } 965 966 case PUBLISH_SERVICE_TRANSACTION: { 967 data.enforceInterface(IActivityManager.descriptor); 968 IBinder token = data.readStrongBinder(); 969 Intent intent = Intent.CREATOR.createFromParcel(data); 970 IBinder service = data.readStrongBinder(); 971 publishService(token, intent, service); 972 reply.writeNoException(); 973 return true; 974 } 975 976 case UNBIND_FINISHED_TRANSACTION: { 977 data.enforceInterface(IActivityManager.descriptor); 978 IBinder token = data.readStrongBinder(); 979 Intent intent = Intent.CREATOR.createFromParcel(data); 980 boolean doRebind = data.readInt() != 0; 981 unbindFinished(token, intent, doRebind); 982 reply.writeNoException(); 983 return true; 984 } 985 986 case SERVICE_DONE_EXECUTING_TRANSACTION: { 987 data.enforceInterface(IActivityManager.descriptor); 988 IBinder token = data.readStrongBinder(); 989 int type = data.readInt(); 990 int startId = data.readInt(); 991 int res = data.readInt(); 992 serviceDoneExecuting(token, type, startId, res); 993 reply.writeNoException(); 994 return true; 995 } 996 997 case START_INSTRUMENTATION_TRANSACTION: { 998 data.enforceInterface(IActivityManager.descriptor); 999 ComponentName className = ComponentName.readFromParcel(data); 1000 String profileFile = data.readString(); 1001 int fl = data.readInt(); 1002 Bundle arguments = data.readBundle(); 1003 IBinder b = data.readStrongBinder(); 1004 IInstrumentationWatcher w = IInstrumentationWatcher.Stub.asInterface(b); 1005 b = data.readStrongBinder(); 1006 IUiAutomationConnection c = IUiAutomationConnection.Stub.asInterface(b); 1007 int userId = data.readInt(); 1008 String abiOverride = data.readString(); 1009 boolean res = startInstrumentation(className, profileFile, fl, arguments, w, c, userId, 1010 abiOverride); 1011 reply.writeNoException(); 1012 reply.writeInt(res ? 1 : 0); 1013 return true; 1014 } 1015 1016 1017 case FINISH_INSTRUMENTATION_TRANSACTION: { 1018 data.enforceInterface(IActivityManager.descriptor); 1019 IBinder b = data.readStrongBinder(); 1020 IApplicationThread app = ApplicationThreadNative.asInterface(b); 1021 int resultCode = data.readInt(); 1022 Bundle results = data.readBundle(); 1023 finishInstrumentation(app, resultCode, results); 1024 reply.writeNoException(); 1025 return true; 1026 } 1027 1028 case GET_CONFIGURATION_TRANSACTION: { 1029 data.enforceInterface(IActivityManager.descriptor); 1030 Configuration config = getConfiguration(); 1031 reply.writeNoException(); 1032 config.writeToParcel(reply, 0); 1033 return true; 1034 } 1035 1036 case UPDATE_CONFIGURATION_TRANSACTION: { 1037 data.enforceInterface(IActivityManager.descriptor); 1038 Configuration config = Configuration.CREATOR.createFromParcel(data); 1039 updateConfiguration(config); 1040 reply.writeNoException(); 1041 return true; 1042 } 1043 1044 case SET_REQUESTED_ORIENTATION_TRANSACTION: { 1045 data.enforceInterface(IActivityManager.descriptor); 1046 IBinder token = data.readStrongBinder(); 1047 int requestedOrientation = data.readInt(); 1048 setRequestedOrientation(token, requestedOrientation); 1049 reply.writeNoException(); 1050 return true; 1051 } 1052 1053 case GET_REQUESTED_ORIENTATION_TRANSACTION: { 1054 data.enforceInterface(IActivityManager.descriptor); 1055 IBinder token = data.readStrongBinder(); 1056 int req = getRequestedOrientation(token); 1057 reply.writeNoException(); 1058 reply.writeInt(req); 1059 return true; 1060 } 1061 1062 case GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION: { 1063 data.enforceInterface(IActivityManager.descriptor); 1064 IBinder token = data.readStrongBinder(); 1065 ComponentName cn = getActivityClassForToken(token); 1066 reply.writeNoException(); 1067 ComponentName.writeToParcel(cn, reply); 1068 return true; 1069 } 1070 1071 case GET_PACKAGE_FOR_TOKEN_TRANSACTION: { 1072 data.enforceInterface(IActivityManager.descriptor); 1073 IBinder token = data.readStrongBinder(); 1074 reply.writeNoException(); 1075 reply.writeString(getPackageForToken(token)); 1076 return true; 1077 } 1078 1079 case GET_INTENT_SENDER_TRANSACTION: { 1080 data.enforceInterface(IActivityManager.descriptor); 1081 int type = data.readInt(); 1082 String packageName = data.readString(); 1083 IBinder token = data.readStrongBinder(); 1084 String resultWho = data.readString(); 1085 int requestCode = data.readInt(); 1086 Intent[] requestIntents; 1087 String[] requestResolvedTypes; 1088 if (data.readInt() != 0) { 1089 requestIntents = data.createTypedArray(Intent.CREATOR); 1090 requestResolvedTypes = data.createStringArray(); 1091 } else { 1092 requestIntents = null; 1093 requestResolvedTypes = null; 1094 } 1095 int fl = data.readInt(); 1096 Bundle options = data.readInt() != 0 1097 ? Bundle.CREATOR.createFromParcel(data) : null; 1098 int userId = data.readInt(); 1099 IIntentSender res = getIntentSender(type, packageName, token, 1100 resultWho, requestCode, requestIntents, 1101 requestResolvedTypes, fl, options, userId); 1102 reply.writeNoException(); 1103 reply.writeStrongBinder(res != null ? res.asBinder() : null); 1104 return true; 1105 } 1106 1107 case CANCEL_INTENT_SENDER_TRANSACTION: { 1108 data.enforceInterface(IActivityManager.descriptor); 1109 IIntentSender r = IIntentSender.Stub.asInterface( 1110 data.readStrongBinder()); 1111 cancelIntentSender(r); 1112 reply.writeNoException(); 1113 return true; 1114 } 1115 1116 case GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION: { 1117 data.enforceInterface(IActivityManager.descriptor); 1118 IIntentSender r = IIntentSender.Stub.asInterface( 1119 data.readStrongBinder()); 1120 String res = getPackageForIntentSender(r); 1121 reply.writeNoException(); 1122 reply.writeString(res); 1123 return true; 1124 } 1125 1126 case GET_UID_FOR_INTENT_SENDER_TRANSACTION: { 1127 data.enforceInterface(IActivityManager.descriptor); 1128 IIntentSender r = IIntentSender.Stub.asInterface( 1129 data.readStrongBinder()); 1130 int res = getUidForIntentSender(r); 1131 reply.writeNoException(); 1132 reply.writeInt(res); 1133 return true; 1134 } 1135 1136 case HANDLE_INCOMING_USER_TRANSACTION: { 1137 data.enforceInterface(IActivityManager.descriptor); 1138 int callingPid = data.readInt(); 1139 int callingUid = data.readInt(); 1140 int userId = data.readInt(); 1141 boolean allowAll = data.readInt() != 0 ; 1142 boolean requireFull = data.readInt() != 0; 1143 String name = data.readString(); 1144 String callerPackage = data.readString(); 1145 int res = handleIncomingUser(callingPid, callingUid, userId, allowAll, 1146 requireFull, name, callerPackage); 1147 reply.writeNoException(); 1148 reply.writeInt(res); 1149 return true; 1150 } 1151 1152 case SET_PROCESS_LIMIT_TRANSACTION: { 1153 data.enforceInterface(IActivityManager.descriptor); 1154 int max = data.readInt(); 1155 setProcessLimit(max); 1156 reply.writeNoException(); 1157 return true; 1158 } 1159 1160 case GET_PROCESS_LIMIT_TRANSACTION: { 1161 data.enforceInterface(IActivityManager.descriptor); 1162 int limit = getProcessLimit(); 1163 reply.writeNoException(); 1164 reply.writeInt(limit); 1165 return true; 1166 } 1167 1168 case SET_PROCESS_FOREGROUND_TRANSACTION: { 1169 data.enforceInterface(IActivityManager.descriptor); 1170 IBinder token = data.readStrongBinder(); 1171 int pid = data.readInt(); 1172 boolean isForeground = data.readInt() != 0; 1173 setProcessForeground(token, pid, isForeground); 1174 reply.writeNoException(); 1175 return true; 1176 } 1177 1178 case CHECK_PERMISSION_TRANSACTION: { 1179 data.enforceInterface(IActivityManager.descriptor); 1180 String perm = data.readString(); 1181 int pid = data.readInt(); 1182 int uid = data.readInt(); 1183 int res = checkPermission(perm, pid, uid); 1184 reply.writeNoException(); 1185 reply.writeInt(res); 1186 return true; 1187 } 1188 1189 case CHECK_URI_PERMISSION_TRANSACTION: { 1190 data.enforceInterface(IActivityManager.descriptor); 1191 Uri uri = Uri.CREATOR.createFromParcel(data); 1192 int pid = data.readInt(); 1193 int uid = data.readInt(); 1194 int mode = data.readInt(); 1195 int userId = data.readInt(); 1196 int res = checkUriPermission(uri, pid, uid, mode, userId); 1197 reply.writeNoException(); 1198 reply.writeInt(res); 1199 return true; 1200 } 1201 1202 case CLEAR_APP_DATA_TRANSACTION: { 1203 data.enforceInterface(IActivityManager.descriptor); 1204 String packageName = data.readString(); 1205 IPackageDataObserver observer = IPackageDataObserver.Stub.asInterface( 1206 data.readStrongBinder()); 1207 int userId = data.readInt(); 1208 boolean res = clearApplicationUserData(packageName, observer, userId); 1209 reply.writeNoException(); 1210 reply.writeInt(res ? 1 : 0); 1211 return true; 1212 } 1213 1214 case GRANT_URI_PERMISSION_TRANSACTION: { 1215 data.enforceInterface(IActivityManager.descriptor); 1216 IBinder b = data.readStrongBinder(); 1217 IApplicationThread app = ApplicationThreadNative.asInterface(b); 1218 String targetPkg = data.readString(); 1219 Uri uri = Uri.CREATOR.createFromParcel(data); 1220 int mode = data.readInt(); 1221 int userId = data.readInt(); 1222 grantUriPermission(app, targetPkg, uri, mode, userId); 1223 reply.writeNoException(); 1224 return true; 1225 } 1226 1227 case REVOKE_URI_PERMISSION_TRANSACTION: { 1228 data.enforceInterface(IActivityManager.descriptor); 1229 IBinder b = data.readStrongBinder(); 1230 IApplicationThread app = ApplicationThreadNative.asInterface(b); 1231 Uri uri = Uri.CREATOR.createFromParcel(data); 1232 int mode = data.readInt(); 1233 int userId = data.readInt(); 1234 revokeUriPermission(app, uri, mode, userId); 1235 reply.writeNoException(); 1236 return true; 1237 } 1238 1239 case TAKE_PERSISTABLE_URI_PERMISSION_TRANSACTION: { 1240 data.enforceInterface(IActivityManager.descriptor); 1241 Uri uri = Uri.CREATOR.createFromParcel(data); 1242 int mode = data.readInt(); 1243 int userId = data.readInt(); 1244 takePersistableUriPermission(uri, mode, userId); 1245 reply.writeNoException(); 1246 return true; 1247 } 1248 1249 case RELEASE_PERSISTABLE_URI_PERMISSION_TRANSACTION: { 1250 data.enforceInterface(IActivityManager.descriptor); 1251 Uri uri = Uri.CREATOR.createFromParcel(data); 1252 int mode = data.readInt(); 1253 int userId = data.readInt(); 1254 releasePersistableUriPermission(uri, mode, userId); 1255 reply.writeNoException(); 1256 return true; 1257 } 1258 1259 case GET_PERSISTED_URI_PERMISSIONS_TRANSACTION: { 1260 data.enforceInterface(IActivityManager.descriptor); 1261 final String packageName = data.readString(); 1262 final boolean incoming = data.readInt() != 0; 1263 final ParceledListSlice<UriPermission> perms = getPersistedUriPermissions( 1264 packageName, incoming); 1265 reply.writeNoException(); 1266 perms.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1267 return true; 1268 } 1269 1270 case SHOW_WAITING_FOR_DEBUGGER_TRANSACTION: { 1271 data.enforceInterface(IActivityManager.descriptor); 1272 IBinder b = data.readStrongBinder(); 1273 IApplicationThread app = ApplicationThreadNative.asInterface(b); 1274 boolean waiting = data.readInt() != 0; 1275 showWaitingForDebugger(app, waiting); 1276 reply.writeNoException(); 1277 return true; 1278 } 1279 1280 case GET_MEMORY_INFO_TRANSACTION: { 1281 data.enforceInterface(IActivityManager.descriptor); 1282 ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo(); 1283 getMemoryInfo(mi); 1284 reply.writeNoException(); 1285 mi.writeToParcel(reply, 0); 1286 return true; 1287 } 1288 1289 case UNHANDLED_BACK_TRANSACTION: { 1290 data.enforceInterface(IActivityManager.descriptor); 1291 unhandledBack(); 1292 reply.writeNoException(); 1293 return true; 1294 } 1295 1296 case OPEN_CONTENT_URI_TRANSACTION: { 1297 data.enforceInterface(IActivityManager.descriptor); 1298 Uri uri = Uri.parse(data.readString()); 1299 ParcelFileDescriptor pfd = openContentUri(uri); 1300 reply.writeNoException(); 1301 if (pfd != null) { 1302 reply.writeInt(1); 1303 pfd.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1304 } else { 1305 reply.writeInt(0); 1306 } 1307 return true; 1308 } 1309 1310 case SET_LOCK_SCREEN_SHOWN_TRANSACTION: { 1311 data.enforceInterface(IActivityManager.descriptor); 1312 setLockScreenShown(data.readInt() != 0); 1313 reply.writeNoException(); 1314 return true; 1315 } 1316 1317 case SET_DEBUG_APP_TRANSACTION: { 1318 data.enforceInterface(IActivityManager.descriptor); 1319 String pn = data.readString(); 1320 boolean wfd = data.readInt() != 0; 1321 boolean per = data.readInt() != 0; 1322 setDebugApp(pn, wfd, per); 1323 reply.writeNoException(); 1324 return true; 1325 } 1326 1327 case SET_ALWAYS_FINISH_TRANSACTION: { 1328 data.enforceInterface(IActivityManager.descriptor); 1329 boolean enabled = data.readInt() != 0; 1330 setAlwaysFinish(enabled); 1331 reply.writeNoException(); 1332 return true; 1333 } 1334 1335 case SET_ACTIVITY_CONTROLLER_TRANSACTION: { 1336 data.enforceInterface(IActivityManager.descriptor); 1337 IActivityController watcher = IActivityController.Stub.asInterface( 1338 data.readStrongBinder()); 1339 setActivityController(watcher); 1340 reply.writeNoException(); 1341 return true; 1342 } 1343 1344 case ENTER_SAFE_MODE_TRANSACTION: { 1345 data.enforceInterface(IActivityManager.descriptor); 1346 enterSafeMode(); 1347 reply.writeNoException(); 1348 return true; 1349 } 1350 1351 case NOTE_WAKEUP_ALARM_TRANSACTION: { 1352 data.enforceInterface(IActivityManager.descriptor); 1353 IIntentSender is = IIntentSender.Stub.asInterface( 1354 data.readStrongBinder()); 1355 int sourceUid = data.readInt(); 1356 String sourcePkg = data.readString(); 1357 noteWakeupAlarm(is, sourceUid, sourcePkg); 1358 reply.writeNoException(); 1359 return true; 1360 } 1361 1362 case KILL_PIDS_TRANSACTION: { 1363 data.enforceInterface(IActivityManager.descriptor); 1364 int[] pids = data.createIntArray(); 1365 String reason = data.readString(); 1366 boolean secure = data.readInt() != 0; 1367 boolean res = killPids(pids, reason, secure); 1368 reply.writeNoException(); 1369 reply.writeInt(res ? 1 : 0); 1370 return true; 1371 } 1372 1373 case KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION: { 1374 data.enforceInterface(IActivityManager.descriptor); 1375 String reason = data.readString(); 1376 boolean res = killProcessesBelowForeground(reason); 1377 reply.writeNoException(); 1378 reply.writeInt(res ? 1 : 0); 1379 return true; 1380 } 1381 1382 case HANDLE_APPLICATION_CRASH_TRANSACTION: { 1383 data.enforceInterface(IActivityManager.descriptor); 1384 IBinder app = data.readStrongBinder(); 1385 ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data); 1386 handleApplicationCrash(app, ci); 1387 reply.writeNoException(); 1388 return true; 1389 } 1390 1391 case HANDLE_APPLICATION_WTF_TRANSACTION: { 1392 data.enforceInterface(IActivityManager.descriptor); 1393 IBinder app = data.readStrongBinder(); 1394 String tag = data.readString(); 1395 boolean system = data.readInt() != 0; 1396 ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data); 1397 boolean res = handleApplicationWtf(app, tag, system, ci); 1398 reply.writeNoException(); 1399 reply.writeInt(res ? 1 : 0); 1400 return true; 1401 } 1402 1403 case HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION: { 1404 data.enforceInterface(IActivityManager.descriptor); 1405 IBinder app = data.readStrongBinder(); 1406 int violationMask = data.readInt(); 1407 StrictMode.ViolationInfo info = new StrictMode.ViolationInfo(data); 1408 handleApplicationStrictModeViolation(app, violationMask, info); 1409 reply.writeNoException(); 1410 return true; 1411 } 1412 1413 case SIGNAL_PERSISTENT_PROCESSES_TRANSACTION: { 1414 data.enforceInterface(IActivityManager.descriptor); 1415 int sig = data.readInt(); 1416 signalPersistentProcesses(sig); 1417 reply.writeNoException(); 1418 return true; 1419 } 1420 1421 case KILL_BACKGROUND_PROCESSES_TRANSACTION: { 1422 data.enforceInterface(IActivityManager.descriptor); 1423 String packageName = data.readString(); 1424 int userId = data.readInt(); 1425 killBackgroundProcesses(packageName, userId); 1426 reply.writeNoException(); 1427 return true; 1428 } 1429 1430 case KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION: { 1431 data.enforceInterface(IActivityManager.descriptor); 1432 killAllBackgroundProcesses(); 1433 reply.writeNoException(); 1434 return true; 1435 } 1436 1437 case FORCE_STOP_PACKAGE_TRANSACTION: { 1438 data.enforceInterface(IActivityManager.descriptor); 1439 String packageName = data.readString(); 1440 int userId = data.readInt(); 1441 forceStopPackage(packageName, userId); 1442 reply.writeNoException(); 1443 return true; 1444 } 1445 1446 case GET_MY_MEMORY_STATE_TRANSACTION: { 1447 data.enforceInterface(IActivityManager.descriptor); 1448 ActivityManager.RunningAppProcessInfo info = 1449 new ActivityManager.RunningAppProcessInfo(); 1450 getMyMemoryState(info); 1451 reply.writeNoException(); 1452 info.writeToParcel(reply, 0); 1453 return true; 1454 } 1455 1456 case GET_DEVICE_CONFIGURATION_TRANSACTION: { 1457 data.enforceInterface(IActivityManager.descriptor); 1458 ConfigurationInfo config = getDeviceConfigurationInfo(); 1459 reply.writeNoException(); 1460 config.writeToParcel(reply, 0); 1461 return true; 1462 } 1463 1464 case PROFILE_CONTROL_TRANSACTION: { 1465 data.enforceInterface(IActivityManager.descriptor); 1466 String process = data.readString(); 1467 int userId = data.readInt(); 1468 boolean start = data.readInt() != 0; 1469 int profileType = data.readInt(); 1470 ProfilerInfo profilerInfo = data.readInt() != 0 1471 ? ProfilerInfo.CREATOR.createFromParcel(data) : null; 1472 boolean res = profileControl(process, userId, start, profilerInfo, profileType); 1473 reply.writeNoException(); 1474 reply.writeInt(res ? 1 : 0); 1475 return true; 1476 } 1477 1478 case SHUTDOWN_TRANSACTION: { 1479 data.enforceInterface(IActivityManager.descriptor); 1480 boolean res = shutdown(data.readInt()); 1481 reply.writeNoException(); 1482 reply.writeInt(res ? 1 : 0); 1483 return true; 1484 } 1485 1486 case STOP_APP_SWITCHES_TRANSACTION: { 1487 data.enforceInterface(IActivityManager.descriptor); 1488 stopAppSwitches(); 1489 reply.writeNoException(); 1490 return true; 1491 } 1492 1493 case RESUME_APP_SWITCHES_TRANSACTION: { 1494 data.enforceInterface(IActivityManager.descriptor); 1495 resumeAppSwitches(); 1496 reply.writeNoException(); 1497 return true; 1498 } 1499 1500 case PEEK_SERVICE_TRANSACTION: { 1501 data.enforceInterface(IActivityManager.descriptor); 1502 Intent service = Intent.CREATOR.createFromParcel(data); 1503 String resolvedType = data.readString(); 1504 IBinder binder = peekService(service, resolvedType); 1505 reply.writeNoException(); 1506 reply.writeStrongBinder(binder); 1507 return true; 1508 } 1509 1510 case START_BACKUP_AGENT_TRANSACTION: { 1511 data.enforceInterface(IActivityManager.descriptor); 1512 ApplicationInfo info = ApplicationInfo.CREATOR.createFromParcel(data); 1513 int backupRestoreMode = data.readInt(); 1514 boolean success = bindBackupAgent(info, backupRestoreMode); 1515 reply.writeNoException(); 1516 reply.writeInt(success ? 1 : 0); 1517 return true; 1518 } 1519 1520 case BACKUP_AGENT_CREATED_TRANSACTION: { 1521 data.enforceInterface(IActivityManager.descriptor); 1522 String packageName = data.readString(); 1523 IBinder agent = data.readStrongBinder(); 1524 backupAgentCreated(packageName, agent); 1525 reply.writeNoException(); 1526 return true; 1527 } 1528 1529 case UNBIND_BACKUP_AGENT_TRANSACTION: { 1530 data.enforceInterface(IActivityManager.descriptor); 1531 ApplicationInfo info = ApplicationInfo.CREATOR.createFromParcel(data); 1532 unbindBackupAgent(info); 1533 reply.writeNoException(); 1534 return true; 1535 } 1536 1537 case ADD_PACKAGE_DEPENDENCY_TRANSACTION: { 1538 data.enforceInterface(IActivityManager.descriptor); 1539 String packageName = data.readString(); 1540 addPackageDependency(packageName); 1541 reply.writeNoException(); 1542 return true; 1543 } 1544 1545 case KILL_APPLICATION_WITH_APPID_TRANSACTION: { 1546 data.enforceInterface(IActivityManager.descriptor); 1547 String pkg = data.readString(); 1548 int appid = data.readInt(); 1549 String reason = data.readString(); 1550 killApplicationWithAppId(pkg, appid, reason); 1551 reply.writeNoException(); 1552 return true; 1553 } 1554 1555 case CLOSE_SYSTEM_DIALOGS_TRANSACTION: { 1556 data.enforceInterface(IActivityManager.descriptor); 1557 String reason = data.readString(); 1558 closeSystemDialogs(reason); 1559 reply.writeNoException(); 1560 return true; 1561 } 1562 1563 case GET_PROCESS_MEMORY_INFO_TRANSACTION: { 1564 data.enforceInterface(IActivityManager.descriptor); 1565 int[] pids = data.createIntArray(); 1566 Debug.MemoryInfo[] res = getProcessMemoryInfo(pids); 1567 reply.writeNoException(); 1568 reply.writeTypedArray(res, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1569 return true; 1570 } 1571 1572 case KILL_APPLICATION_PROCESS_TRANSACTION: { 1573 data.enforceInterface(IActivityManager.descriptor); 1574 String processName = data.readString(); 1575 int uid = data.readInt(); 1576 killApplicationProcess(processName, uid); 1577 reply.writeNoException(); 1578 return true; 1579 } 1580 1581 case OVERRIDE_PENDING_TRANSITION_TRANSACTION: { 1582 data.enforceInterface(IActivityManager.descriptor); 1583 IBinder token = data.readStrongBinder(); 1584 String packageName = data.readString(); 1585 int enterAnim = data.readInt(); 1586 int exitAnim = data.readInt(); 1587 overridePendingTransition(token, packageName, enterAnim, exitAnim); 1588 reply.writeNoException(); 1589 return true; 1590 } 1591 1592 case IS_USER_A_MONKEY_TRANSACTION: { 1593 data.enforceInterface(IActivityManager.descriptor); 1594 boolean areThey = isUserAMonkey(); 1595 reply.writeNoException(); 1596 reply.writeInt(areThey ? 1 : 0); 1597 return true; 1598 } 1599 1600 case SET_USER_IS_MONKEY_TRANSACTION: { 1601 data.enforceInterface(IActivityManager.descriptor); 1602 final boolean monkey = (data.readInt() == 1); 1603 setUserIsMonkey(monkey); 1604 reply.writeNoException(); 1605 return true; 1606 } 1607 1608 case FINISH_HEAVY_WEIGHT_APP_TRANSACTION: { 1609 data.enforceInterface(IActivityManager.descriptor); 1610 finishHeavyWeightApp(); 1611 reply.writeNoException(); 1612 return true; 1613 } 1614 1615 case IS_IMMERSIVE_TRANSACTION: { 1616 data.enforceInterface(IActivityManager.descriptor); 1617 IBinder token = data.readStrongBinder(); 1618 boolean isit = isImmersive(token); 1619 reply.writeNoException(); 1620 reply.writeInt(isit ? 1 : 0); 1621 return true; 1622 } 1623 1624 case IS_TOP_OF_TASK_TRANSACTION: { 1625 data.enforceInterface(IActivityManager.descriptor); 1626 IBinder token = data.readStrongBinder(); 1627 final boolean isTopOfTask = isTopOfTask(token); 1628 reply.writeNoException(); 1629 reply.writeInt(isTopOfTask ? 1 : 0); 1630 return true; 1631 } 1632 1633 case CONVERT_FROM_TRANSLUCENT_TRANSACTION: { 1634 data.enforceInterface(IActivityManager.descriptor); 1635 IBinder token = data.readStrongBinder(); 1636 boolean converted = convertFromTranslucent(token); 1637 reply.writeNoException(); 1638 reply.writeInt(converted ? 1 : 0); 1639 return true; 1640 } 1641 1642 case CONVERT_TO_TRANSLUCENT_TRANSACTION: { 1643 data.enforceInterface(IActivityManager.descriptor); 1644 IBinder token = data.readStrongBinder(); 1645 final Bundle bundle; 1646 if (data.readInt() == 0) { 1647 bundle = null; 1648 } else { 1649 bundle = data.readBundle(); 1650 } 1651 final ActivityOptions options = bundle == null ? null : new ActivityOptions(bundle); 1652 boolean converted = convertToTranslucent(token, options); 1653 reply.writeNoException(); 1654 reply.writeInt(converted ? 1 : 0); 1655 return true; 1656 } 1657 1658 case GET_ACTIVITY_OPTIONS_TRANSACTION: { 1659 data.enforceInterface(IActivityManager.descriptor); 1660 IBinder token = data.readStrongBinder(); 1661 final ActivityOptions options = getActivityOptions(token); 1662 reply.writeNoException(); 1663 reply.writeBundle(options == null ? null : options.toBundle()); 1664 return true; 1665 } 1666 1667 case SET_IMMERSIVE_TRANSACTION: { 1668 data.enforceInterface(IActivityManager.descriptor); 1669 IBinder token = data.readStrongBinder(); 1670 boolean imm = data.readInt() == 1; 1671 setImmersive(token, imm); 1672 reply.writeNoException(); 1673 return true; 1674 } 1675 1676 case IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION: { 1677 data.enforceInterface(IActivityManager.descriptor); 1678 boolean isit = isTopActivityImmersive(); 1679 reply.writeNoException(); 1680 reply.writeInt(isit ? 1 : 0); 1681 return true; 1682 } 1683 1684 case CRASH_APPLICATION_TRANSACTION: { 1685 data.enforceInterface(IActivityManager.descriptor); 1686 int uid = data.readInt(); 1687 int initialPid = data.readInt(); 1688 String packageName = data.readString(); 1689 String message = data.readString(); 1690 crashApplication(uid, initialPid, packageName, message); 1691 reply.writeNoException(); 1692 return true; 1693 } 1694 1695 case GET_PROVIDER_MIME_TYPE_TRANSACTION: { 1696 data.enforceInterface(IActivityManager.descriptor); 1697 Uri uri = Uri.CREATOR.createFromParcel(data); 1698 int userId = data.readInt(); 1699 String type = getProviderMimeType(uri, userId); 1700 reply.writeNoException(); 1701 reply.writeString(type); 1702 return true; 1703 } 1704 1705 case NEW_URI_PERMISSION_OWNER_TRANSACTION: { 1706 data.enforceInterface(IActivityManager.descriptor); 1707 String name = data.readString(); 1708 IBinder perm = newUriPermissionOwner(name); 1709 reply.writeNoException(); 1710 reply.writeStrongBinder(perm); 1711 return true; 1712 } 1713 1714 case GRANT_URI_PERMISSION_FROM_OWNER_TRANSACTION: { 1715 data.enforceInterface(IActivityManager.descriptor); 1716 IBinder owner = data.readStrongBinder(); 1717 int fromUid = data.readInt(); 1718 String targetPkg = data.readString(); 1719 Uri uri = Uri.CREATOR.createFromParcel(data); 1720 int mode = data.readInt(); 1721 int sourceUserId = data.readInt(); 1722 int targetUserId = data.readInt(); 1723 grantUriPermissionFromOwner(owner, fromUid, targetPkg, uri, mode, sourceUserId, 1724 targetUserId); 1725 reply.writeNoException(); 1726 return true; 1727 } 1728 1729 case REVOKE_URI_PERMISSION_FROM_OWNER_TRANSACTION: { 1730 data.enforceInterface(IActivityManager.descriptor); 1731 IBinder owner = data.readStrongBinder(); 1732 Uri uri = null; 1733 if (data.readInt() != 0) { 1734 uri = Uri.CREATOR.createFromParcel(data); 1735 } 1736 int mode = data.readInt(); 1737 int userId = data.readInt(); 1738 revokeUriPermissionFromOwner(owner, uri, mode, userId); 1739 reply.writeNoException(); 1740 return true; 1741 } 1742 1743 case CHECK_GRANT_URI_PERMISSION_TRANSACTION: { 1744 data.enforceInterface(IActivityManager.descriptor); 1745 int callingUid = data.readInt(); 1746 String targetPkg = data.readString(); 1747 Uri uri = Uri.CREATOR.createFromParcel(data); 1748 int modeFlags = data.readInt(); 1749 int userId = data.readInt(); 1750 int res = checkGrantUriPermission(callingUid, targetPkg, uri, modeFlags, userId); 1751 reply.writeNoException(); 1752 reply.writeInt(res); 1753 return true; 1754 } 1755 1756 case DUMP_HEAP_TRANSACTION: { 1757 data.enforceInterface(IActivityManager.descriptor); 1758 String process = data.readString(); 1759 int userId = data.readInt(); 1760 boolean managed = data.readInt() != 0; 1761 String path = data.readString(); 1762 ParcelFileDescriptor fd = data.readInt() != 0 1763 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null; 1764 boolean res = dumpHeap(process, userId, managed, path, fd); 1765 reply.writeNoException(); 1766 reply.writeInt(res ? 1 : 0); 1767 return true; 1768 } 1769 1770 case START_ACTIVITIES_TRANSACTION: 1771 { 1772 data.enforceInterface(IActivityManager.descriptor); 1773 IBinder b = data.readStrongBinder(); 1774 IApplicationThread app = ApplicationThreadNative.asInterface(b); 1775 String callingPackage = data.readString(); 1776 Intent[] intents = data.createTypedArray(Intent.CREATOR); 1777 String[] resolvedTypes = data.createStringArray(); 1778 IBinder resultTo = data.readStrongBinder(); 1779 Bundle options = data.readInt() != 0 1780 ? Bundle.CREATOR.createFromParcel(data) : null; 1781 int userId = data.readInt(); 1782 int result = startActivities(app, callingPackage, intents, resolvedTypes, resultTo, 1783 options, userId); 1784 reply.writeNoException(); 1785 reply.writeInt(result); 1786 return true; 1787 } 1788 1789 case GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION: 1790 { 1791 data.enforceInterface(IActivityManager.descriptor); 1792 int mode = getFrontActivityScreenCompatMode(); 1793 reply.writeNoException(); 1794 reply.writeInt(mode); 1795 return true; 1796 } 1797 1798 case SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION: 1799 { 1800 data.enforceInterface(IActivityManager.descriptor); 1801 int mode = data.readInt(); 1802 setFrontActivityScreenCompatMode(mode); 1803 reply.writeNoException(); 1804 reply.writeInt(mode); 1805 return true; 1806 } 1807 1808 case GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION: 1809 { 1810 data.enforceInterface(IActivityManager.descriptor); 1811 String pkg = data.readString(); 1812 int mode = getPackageScreenCompatMode(pkg); 1813 reply.writeNoException(); 1814 reply.writeInt(mode); 1815 return true; 1816 } 1817 1818 case SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION: 1819 { 1820 data.enforceInterface(IActivityManager.descriptor); 1821 String pkg = data.readString(); 1822 int mode = data.readInt(); 1823 setPackageScreenCompatMode(pkg, mode); 1824 reply.writeNoException(); 1825 return true; 1826 } 1827 1828 case SWITCH_USER_TRANSACTION: { 1829 data.enforceInterface(IActivityManager.descriptor); 1830 int userid = data.readInt(); 1831 boolean result = switchUser(userid); 1832 reply.writeNoException(); 1833 reply.writeInt(result ? 1 : 0); 1834 return true; 1835 } 1836 1837 case START_USER_IN_BACKGROUND_TRANSACTION: { 1838 data.enforceInterface(IActivityManager.descriptor); 1839 int userid = data.readInt(); 1840 boolean result = startUserInBackground(userid); 1841 reply.writeNoException(); 1842 reply.writeInt(result ? 1 : 0); 1843 return true; 1844 } 1845 1846 case STOP_USER_TRANSACTION: { 1847 data.enforceInterface(IActivityManager.descriptor); 1848 int userid = data.readInt(); 1849 IStopUserCallback callback = IStopUserCallback.Stub.asInterface( 1850 data.readStrongBinder()); 1851 int result = stopUser(userid, callback); 1852 reply.writeNoException(); 1853 reply.writeInt(result); 1854 return true; 1855 } 1856 1857 case GET_CURRENT_USER_TRANSACTION: { 1858 data.enforceInterface(IActivityManager.descriptor); 1859 UserInfo userInfo = getCurrentUser(); 1860 reply.writeNoException(); 1861 userInfo.writeToParcel(reply, 0); 1862 return true; 1863 } 1864 1865 case IS_USER_RUNNING_TRANSACTION: { 1866 data.enforceInterface(IActivityManager.descriptor); 1867 int userid = data.readInt(); 1868 boolean orStopping = data.readInt() != 0; 1869 boolean result = isUserRunning(userid, orStopping); 1870 reply.writeNoException(); 1871 reply.writeInt(result ? 1 : 0); 1872 return true; 1873 } 1874 1875 case GET_RUNNING_USER_IDS_TRANSACTION: { 1876 data.enforceInterface(IActivityManager.descriptor); 1877 int[] result = getRunningUserIds(); 1878 reply.writeNoException(); 1879 reply.writeIntArray(result); 1880 return true; 1881 } 1882 1883 case REMOVE_TASK_TRANSACTION: 1884 { 1885 data.enforceInterface(IActivityManager.descriptor); 1886 int taskId = data.readInt(); 1887 boolean result = removeTask(taskId); 1888 reply.writeNoException(); 1889 reply.writeInt(result ? 1 : 0); 1890 return true; 1891 } 1892 1893 case REGISTER_PROCESS_OBSERVER_TRANSACTION: { 1894 data.enforceInterface(IActivityManager.descriptor); 1895 IProcessObserver observer = IProcessObserver.Stub.asInterface( 1896 data.readStrongBinder()); 1897 registerProcessObserver(observer); 1898 return true; 1899 } 1900 1901 case UNREGISTER_PROCESS_OBSERVER_TRANSACTION: { 1902 data.enforceInterface(IActivityManager.descriptor); 1903 IProcessObserver observer = IProcessObserver.Stub.asInterface( 1904 data.readStrongBinder()); 1905 unregisterProcessObserver(observer); 1906 return true; 1907 } 1908 1909 case GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION: 1910 { 1911 data.enforceInterface(IActivityManager.descriptor); 1912 String pkg = data.readString(); 1913 boolean ask = getPackageAskScreenCompat(pkg); 1914 reply.writeNoException(); 1915 reply.writeInt(ask ? 1 : 0); 1916 return true; 1917 } 1918 1919 case SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION: 1920 { 1921 data.enforceInterface(IActivityManager.descriptor); 1922 String pkg = data.readString(); 1923 boolean ask = data.readInt() != 0; 1924 setPackageAskScreenCompat(pkg, ask); 1925 reply.writeNoException(); 1926 return true; 1927 } 1928 1929 case IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION: { 1930 data.enforceInterface(IActivityManager.descriptor); 1931 IIntentSender r = IIntentSender.Stub.asInterface( 1932 data.readStrongBinder()); 1933 boolean res = isIntentSenderTargetedToPackage(r); 1934 reply.writeNoException(); 1935 reply.writeInt(res ? 1 : 0); 1936 return true; 1937 } 1938 1939 case IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION: { 1940 data.enforceInterface(IActivityManager.descriptor); 1941 IIntentSender r = IIntentSender.Stub.asInterface( 1942 data.readStrongBinder()); 1943 boolean res = isIntentSenderAnActivity(r); 1944 reply.writeNoException(); 1945 reply.writeInt(res ? 1 : 0); 1946 return true; 1947 } 1948 1949 case GET_INTENT_FOR_INTENT_SENDER_TRANSACTION: { 1950 data.enforceInterface(IActivityManager.descriptor); 1951 IIntentSender r = IIntentSender.Stub.asInterface( 1952 data.readStrongBinder()); 1953 Intent intent = getIntentForIntentSender(r); 1954 reply.writeNoException(); 1955 if (intent != null) { 1956 reply.writeInt(1); 1957 intent.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1958 } else { 1959 reply.writeInt(0); 1960 } 1961 return true; 1962 } 1963 1964 case GET_TAG_FOR_INTENT_SENDER_TRANSACTION: { 1965 data.enforceInterface(IActivityManager.descriptor); 1966 IIntentSender r = IIntentSender.Stub.asInterface( 1967 data.readStrongBinder()); 1968 String prefix = data.readString(); 1969 String tag = getTagForIntentSender(r, prefix); 1970 reply.writeNoException(); 1971 reply.writeString(tag); 1972 return true; 1973 } 1974 1975 case UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION: { 1976 data.enforceInterface(IActivityManager.descriptor); 1977 Configuration config = Configuration.CREATOR.createFromParcel(data); 1978 updatePersistentConfiguration(config); 1979 reply.writeNoException(); 1980 return true; 1981 } 1982 1983 case GET_PROCESS_PSS_TRANSACTION: { 1984 data.enforceInterface(IActivityManager.descriptor); 1985 int[] pids = data.createIntArray(); 1986 long[] pss = getProcessPss(pids); 1987 reply.writeNoException(); 1988 reply.writeLongArray(pss); 1989 return true; 1990 } 1991 1992 case SHOW_BOOT_MESSAGE_TRANSACTION: { 1993 data.enforceInterface(IActivityManager.descriptor); 1994 CharSequence msg = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data); 1995 boolean always = data.readInt() != 0; 1996 showBootMessage(msg, always); 1997 reply.writeNoException(); 1998 return true; 1999 } 2000 2001 case KEYGUARD_WAITING_FOR_ACTIVITY_DRAWN_TRANSACTION: { 2002 data.enforceInterface(IActivityManager.descriptor); 2003 keyguardWaitingForActivityDrawn(); 2004 reply.writeNoException(); 2005 return true; 2006 } 2007 2008 case SHOULD_UP_RECREATE_TASK_TRANSACTION: { 2009 data.enforceInterface(IActivityManager.descriptor); 2010 IBinder token = data.readStrongBinder(); 2011 String destAffinity = data.readString(); 2012 boolean res = shouldUpRecreateTask(token, destAffinity); 2013 reply.writeNoException(); 2014 reply.writeInt(res ? 1 : 0); 2015 return true; 2016 } 2017 2018 case NAVIGATE_UP_TO_TRANSACTION: { 2019 data.enforceInterface(IActivityManager.descriptor); 2020 IBinder token = data.readStrongBinder(); 2021 Intent target = Intent.CREATOR.createFromParcel(data); 2022 int resultCode = data.readInt(); 2023 Intent resultData = null; 2024 if (data.readInt() != 0) { 2025 resultData = Intent.CREATOR.createFromParcel(data); 2026 } 2027 boolean res = navigateUpTo(token, target, resultCode, resultData); 2028 reply.writeNoException(); 2029 reply.writeInt(res ? 1 : 0); 2030 return true; 2031 } 2032 2033 case GET_LAUNCHED_FROM_UID_TRANSACTION: { 2034 data.enforceInterface(IActivityManager.descriptor); 2035 IBinder token = data.readStrongBinder(); 2036 int res = getLaunchedFromUid(token); 2037 reply.writeNoException(); 2038 reply.writeInt(res); 2039 return true; 2040 } 2041 2042 case GET_LAUNCHED_FROM_PACKAGE_TRANSACTION: { 2043 data.enforceInterface(IActivityManager.descriptor); 2044 IBinder token = data.readStrongBinder(); 2045 String res = getLaunchedFromPackage(token); 2046 reply.writeNoException(); 2047 reply.writeString(res); 2048 return true; 2049 } 2050 2051 case REGISTER_USER_SWITCH_OBSERVER_TRANSACTION: { 2052 data.enforceInterface(IActivityManager.descriptor); 2053 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface( 2054 data.readStrongBinder()); 2055 registerUserSwitchObserver(observer); 2056 reply.writeNoException(); 2057 return true; 2058 } 2059 2060 case UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION: { 2061 data.enforceInterface(IActivityManager.descriptor); 2062 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface( 2063 data.readStrongBinder()); 2064 unregisterUserSwitchObserver(observer); 2065 reply.writeNoException(); 2066 return true; 2067 } 2068 2069 case REQUEST_BUG_REPORT_TRANSACTION: { 2070 data.enforceInterface(IActivityManager.descriptor); 2071 requestBugReport(); 2072 reply.writeNoException(); 2073 return true; 2074 } 2075 2076 case INPUT_DISPATCHING_TIMED_OUT_TRANSACTION: { 2077 data.enforceInterface(IActivityManager.descriptor); 2078 int pid = data.readInt(); 2079 boolean aboveSystem = data.readInt() != 0; 2080 String reason = data.readString(); 2081 long res = inputDispatchingTimedOut(pid, aboveSystem, reason); 2082 reply.writeNoException(); 2083 reply.writeLong(res); 2084 return true; 2085 } 2086 2087 case GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION: { 2088 data.enforceInterface(IActivityManager.descriptor); 2089 int requestType = data.readInt(); 2090 Bundle res = getAssistContextExtras(requestType); 2091 reply.writeNoException(); 2092 reply.writeBundle(res); 2093 return true; 2094 } 2095 2096 case REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION: { 2097 data.enforceInterface(IActivityManager.descriptor); 2098 IBinder token = data.readStrongBinder(); 2099 Bundle extras = data.readBundle(); 2100 reportAssistContextExtras(token, extras); 2101 reply.writeNoException(); 2102 return true; 2103 } 2104 2105 case LAUNCH_ASSIST_INTENT_TRANSACTION: { 2106 data.enforceInterface(IActivityManager.descriptor); 2107 Intent intent = Intent.CREATOR.createFromParcel(data); 2108 int requestType = data.readInt(); 2109 String hint = data.readString(); 2110 int userHandle = data.readInt(); 2111 boolean res = launchAssistIntent(intent, requestType, hint, userHandle); 2112 reply.writeNoException(); 2113 reply.writeInt(res ? 1 : 0); 2114 return true; 2115 } 2116 2117 case KILL_UID_TRANSACTION: { 2118 data.enforceInterface(IActivityManager.descriptor); 2119 int uid = data.readInt(); 2120 String reason = data.readString(); 2121 killUid(uid, reason); 2122 reply.writeNoException(); 2123 return true; 2124 } 2125 2126 case HANG_TRANSACTION: { 2127 data.enforceInterface(IActivityManager.descriptor); 2128 IBinder who = data.readStrongBinder(); 2129 boolean allowRestart = data.readInt() != 0; 2130 hang(who, allowRestart); 2131 reply.writeNoException(); 2132 return true; 2133 } 2134 2135 case REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION: { 2136 data.enforceInterface(IActivityManager.descriptor); 2137 IBinder token = data.readStrongBinder(); 2138 reportActivityFullyDrawn(token); 2139 reply.writeNoException(); 2140 return true; 2141 } 2142 2143 case NOTIFY_ACTIVITY_DRAWN_TRANSACTION: { 2144 data.enforceInterface(IActivityManager.descriptor); 2145 IBinder token = data.readStrongBinder(); 2146 notifyActivityDrawn(token); 2147 reply.writeNoException(); 2148 return true; 2149 } 2150 2151 case RESTART_TRANSACTION: { 2152 data.enforceInterface(IActivityManager.descriptor); 2153 restart(); 2154 reply.writeNoException(); 2155 return true; 2156 } 2157 2158 case PERFORM_IDLE_MAINTENANCE_TRANSACTION: { 2159 data.enforceInterface(IActivityManager.descriptor); 2160 performIdleMaintenance(); 2161 reply.writeNoException(); 2162 return true; 2163 } 2164 2165 case CREATE_ACTIVITY_CONTAINER_TRANSACTION: { 2166 data.enforceInterface(IActivityManager.descriptor); 2167 IBinder parentActivityToken = data.readStrongBinder(); 2168 IActivityContainerCallback callback = 2169 IActivityContainerCallback.Stub.asInterface(data.readStrongBinder()); 2170 IActivityContainer activityContainer = 2171 createActivityContainer(parentActivityToken, callback); 2172 reply.writeNoException(); 2173 if (activityContainer != null) { 2174 reply.writeInt(1); 2175 reply.writeStrongBinder(activityContainer.asBinder()); 2176 } else { 2177 reply.writeInt(0); 2178 } 2179 return true; 2180 } 2181 2182 case DELETE_ACTIVITY_CONTAINER_TRANSACTION: { 2183 data.enforceInterface(IActivityManager.descriptor); 2184 IActivityContainer activityContainer = 2185 IActivityContainer.Stub.asInterface(data.readStrongBinder()); 2186 deleteActivityContainer(activityContainer); 2187 reply.writeNoException(); 2188 return true; 2189 } 2190 2191 case GET_ACTIVITY_CONTAINER_TRANSACTION: { 2192 data.enforceInterface(IActivityManager.descriptor); 2193 IBinder activityToken = data.readStrongBinder(); 2194 IActivityContainer activityContainer = getEnclosingActivityContainer(activityToken); 2195 reply.writeNoException(); 2196 if (activityContainer != null) { 2197 reply.writeInt(1); 2198 reply.writeStrongBinder(activityContainer.asBinder()); 2199 } else { 2200 reply.writeInt(0); 2201 } 2202 return true; 2203 } 2204 2205 case GET_HOME_ACTIVITY_TOKEN_TRANSACTION: { 2206 data.enforceInterface(IActivityManager.descriptor); 2207 IBinder homeActivityToken = getHomeActivityToken(); 2208 reply.writeNoException(); 2209 reply.writeStrongBinder(homeActivityToken); 2210 return true; 2211 } 2212 2213 case START_LOCK_TASK_BY_TASK_ID_TRANSACTION: { 2214 data.enforceInterface(IActivityManager.descriptor); 2215 final int taskId = data.readInt(); 2216 startLockTaskMode(taskId); 2217 reply.writeNoException(); 2218 return true; 2219 } 2220 2221 case START_LOCK_TASK_BY_TOKEN_TRANSACTION: { 2222 data.enforceInterface(IActivityManager.descriptor); 2223 IBinder token = data.readStrongBinder(); 2224 startLockTaskMode(token); 2225 reply.writeNoException(); 2226 return true; 2227 } 2228 2229 case START_LOCK_TASK_BY_CURRENT_TRANSACTION: { 2230 data.enforceInterface(IActivityManager.descriptor); 2231 startLockTaskModeOnCurrent(); 2232 reply.writeNoException(); 2233 return true; 2234 } 2235 2236 case STOP_LOCK_TASK_MODE_TRANSACTION: { 2237 data.enforceInterface(IActivityManager.descriptor); 2238 stopLockTaskMode(); 2239 reply.writeNoException(); 2240 return true; 2241 } 2242 2243 case STOP_LOCK_TASK_BY_CURRENT_TRANSACTION: { 2244 data.enforceInterface(IActivityManager.descriptor); 2245 stopLockTaskModeOnCurrent(); 2246 reply.writeNoException(); 2247 return true; 2248 } 2249 2250 case IS_IN_LOCK_TASK_MODE_TRANSACTION: { 2251 data.enforceInterface(IActivityManager.descriptor); 2252 final boolean isInLockTaskMode = isInLockTaskMode(); 2253 reply.writeNoException(); 2254 reply.writeInt(isInLockTaskMode ? 1 : 0); 2255 return true; 2256 } 2257 2258 case SET_TASK_DESCRIPTION_TRANSACTION: { 2259 data.enforceInterface(IActivityManager.descriptor); 2260 IBinder token = data.readStrongBinder(); 2261 ActivityManager.TaskDescription values = 2262 ActivityManager.TaskDescription.CREATOR.createFromParcel(data); 2263 setTaskDescription(token, values); 2264 reply.writeNoException(); 2265 return true; 2266 } 2267 2268 case GET_TASK_DESCRIPTION_ICON_TRANSACTION: { 2269 data.enforceInterface(IActivityManager.descriptor); 2270 String filename = data.readString(); 2271 Bitmap icon = getTaskDescriptionIcon(filename); 2272 reply.writeNoException(); 2273 if (icon == null) { 2274 reply.writeInt(0); 2275 } else { 2276 reply.writeInt(1); 2277 icon.writeToParcel(reply, 0); 2278 } 2279 return true; 2280 } 2281 2282 case REQUEST_VISIBLE_BEHIND_TRANSACTION: { 2283 data.enforceInterface(IActivityManager.descriptor); 2284 IBinder token = data.readStrongBinder(); 2285 boolean enable = data.readInt() > 0; 2286 boolean success = requestVisibleBehind(token, enable); 2287 reply.writeNoException(); 2288 reply.writeInt(success ? 1 : 0); 2289 return true; 2290 } 2291 2292 case IS_BACKGROUND_VISIBLE_BEHIND_TRANSACTION: { 2293 data.enforceInterface(IActivityManager.descriptor); 2294 IBinder token = data.readStrongBinder(); 2295 final boolean enabled = isBackgroundVisibleBehind(token); 2296 reply.writeNoException(); 2297 reply.writeInt(enabled ? 1 : 0); 2298 return true; 2299 } 2300 2301 case BACKGROUND_RESOURCES_RELEASED_TRANSACTION: { 2302 data.enforceInterface(IActivityManager.descriptor); 2303 IBinder token = data.readStrongBinder(); 2304 backgroundResourcesReleased(token); 2305 reply.writeNoException(); 2306 return true; 2307 } 2308 2309 case NOTIFY_LAUNCH_TASK_BEHIND_COMPLETE_TRANSACTION: { 2310 data.enforceInterface(IActivityManager.descriptor); 2311 IBinder token = data.readStrongBinder(); 2312 notifyLaunchTaskBehindComplete(token); 2313 reply.writeNoException(); 2314 return true; 2315 } 2316 2317 case NOTIFY_ENTER_ANIMATION_COMPLETE_TRANSACTION: { 2318 data.enforceInterface(IActivityManager.descriptor); 2319 IBinder token = data.readStrongBinder(); 2320 notifyEnterAnimationComplete(token); 2321 reply.writeNoException(); 2322 return true; 2323 } 2324 2325 case BOOT_ANIMATION_COMPLETE_TRANSACTION: { 2326 data.enforceInterface(IActivityManager.descriptor); 2327 bootAnimationComplete(); 2328 reply.writeNoException(); 2329 return true; 2330 } 2331 } 2332 2333 return super.onTransact(code, data, reply, flags); 2334 } 2335 2336 public IBinder asBinder() { 2337 return this; 2338 } 2339 2340 private static final Singleton<IActivityManager> gDefault = new Singleton<IActivityManager>() { 2341 protected IActivityManager create() { 2342 IBinder b = ServiceManager.getService("activity"); 2343 if (false) { 2344 Log.v("ActivityManager", "default service binder = " + b); 2345 } 2346 IActivityManager am = asInterface(b); 2347 if (false) { 2348 Log.v("ActivityManager", "default service = " + am); 2349 } 2350 return am; 2351 } 2352 }; 2353} 2354 2355class ActivityManagerProxy implements IActivityManager 2356{ 2357 public ActivityManagerProxy(IBinder remote) 2358 { 2359 mRemote = remote; 2360 } 2361 2362 public IBinder asBinder() 2363 { 2364 return mRemote; 2365 } 2366 2367 public int startActivity(IApplicationThread caller, String callingPackage, Intent intent, 2368 String resolvedType, IBinder resultTo, String resultWho, int requestCode, 2369 int startFlags, ProfilerInfo profilerInfo, Bundle options) throws RemoteException { 2370 Parcel data = Parcel.obtain(); 2371 Parcel reply = Parcel.obtain(); 2372 data.writeInterfaceToken(IActivityManager.descriptor); 2373 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2374 data.writeString(callingPackage); 2375 intent.writeToParcel(data, 0); 2376 data.writeString(resolvedType); 2377 data.writeStrongBinder(resultTo); 2378 data.writeString(resultWho); 2379 data.writeInt(requestCode); 2380 data.writeInt(startFlags); 2381 if (profilerInfo != null) { 2382 data.writeInt(1); 2383 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2384 } else { 2385 data.writeInt(0); 2386 } 2387 if (options != null) { 2388 data.writeInt(1); 2389 options.writeToParcel(data, 0); 2390 } else { 2391 data.writeInt(0); 2392 } 2393 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0); 2394 reply.readException(); 2395 int result = reply.readInt(); 2396 reply.recycle(); 2397 data.recycle(); 2398 return result; 2399 } 2400 2401 public int startActivityAsUser(IApplicationThread caller, String callingPackage, Intent intent, 2402 String resolvedType, IBinder resultTo, String resultWho, int requestCode, 2403 int startFlags, ProfilerInfo profilerInfo, Bundle options, 2404 int userId) throws RemoteException { 2405 Parcel data = Parcel.obtain(); 2406 Parcel reply = Parcel.obtain(); 2407 data.writeInterfaceToken(IActivityManager.descriptor); 2408 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2409 data.writeString(callingPackage); 2410 intent.writeToParcel(data, 0); 2411 data.writeString(resolvedType); 2412 data.writeStrongBinder(resultTo); 2413 data.writeString(resultWho); 2414 data.writeInt(requestCode); 2415 data.writeInt(startFlags); 2416 if (profilerInfo != null) { 2417 data.writeInt(1); 2418 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2419 } else { 2420 data.writeInt(0); 2421 } 2422 if (options != null) { 2423 data.writeInt(1); 2424 options.writeToParcel(data, 0); 2425 } else { 2426 data.writeInt(0); 2427 } 2428 data.writeInt(userId); 2429 mRemote.transact(START_ACTIVITY_AS_USER_TRANSACTION, data, reply, 0); 2430 reply.readException(); 2431 int result = reply.readInt(); 2432 reply.recycle(); 2433 data.recycle(); 2434 return result; 2435 } 2436 public int startActivityAsCaller(IApplicationThread caller, String callingPackage, 2437 Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode, 2438 int startFlags, ProfilerInfo profilerInfo, Bundle options, int userId) throws RemoteException { 2439 Parcel data = Parcel.obtain(); 2440 Parcel reply = Parcel.obtain(); 2441 data.writeInterfaceToken(IActivityManager.descriptor); 2442 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2443 data.writeString(callingPackage); 2444 intent.writeToParcel(data, 0); 2445 data.writeString(resolvedType); 2446 data.writeStrongBinder(resultTo); 2447 data.writeString(resultWho); 2448 data.writeInt(requestCode); 2449 data.writeInt(startFlags); 2450 if (profilerInfo != null) { 2451 data.writeInt(1); 2452 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2453 } else { 2454 data.writeInt(0); 2455 } 2456 if (options != null) { 2457 data.writeInt(1); 2458 options.writeToParcel(data, 0); 2459 } else { 2460 data.writeInt(0); 2461 } 2462 data.writeInt(userId); 2463 mRemote.transact(START_ACTIVITY_AS_CALLER_TRANSACTION, data, reply, 0); 2464 reply.readException(); 2465 int result = reply.readInt(); 2466 reply.recycle(); 2467 data.recycle(); 2468 return result; 2469 } 2470 public WaitResult startActivityAndWait(IApplicationThread caller, String callingPackage, 2471 Intent intent, String resolvedType, IBinder resultTo, String resultWho, 2472 int requestCode, int startFlags, ProfilerInfo profilerInfo, Bundle options, 2473 int userId) throws RemoteException { 2474 Parcel data = Parcel.obtain(); 2475 Parcel reply = Parcel.obtain(); 2476 data.writeInterfaceToken(IActivityManager.descriptor); 2477 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2478 data.writeString(callingPackage); 2479 intent.writeToParcel(data, 0); 2480 data.writeString(resolvedType); 2481 data.writeStrongBinder(resultTo); 2482 data.writeString(resultWho); 2483 data.writeInt(requestCode); 2484 data.writeInt(startFlags); 2485 if (profilerInfo != null) { 2486 data.writeInt(1); 2487 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2488 } else { 2489 data.writeInt(0); 2490 } 2491 if (options != null) { 2492 data.writeInt(1); 2493 options.writeToParcel(data, 0); 2494 } else { 2495 data.writeInt(0); 2496 } 2497 data.writeInt(userId); 2498 mRemote.transact(START_ACTIVITY_AND_WAIT_TRANSACTION, data, reply, 0); 2499 reply.readException(); 2500 WaitResult result = WaitResult.CREATOR.createFromParcel(reply); 2501 reply.recycle(); 2502 data.recycle(); 2503 return result; 2504 } 2505 public int startActivityWithConfig(IApplicationThread caller, String callingPackage, 2506 Intent intent, String resolvedType, IBinder resultTo, String resultWho, 2507 int requestCode, int startFlags, Configuration config, 2508 Bundle options, int userId) throws RemoteException { 2509 Parcel data = Parcel.obtain(); 2510 Parcel reply = Parcel.obtain(); 2511 data.writeInterfaceToken(IActivityManager.descriptor); 2512 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2513 data.writeString(callingPackage); 2514 intent.writeToParcel(data, 0); 2515 data.writeString(resolvedType); 2516 data.writeStrongBinder(resultTo); 2517 data.writeString(resultWho); 2518 data.writeInt(requestCode); 2519 data.writeInt(startFlags); 2520 config.writeToParcel(data, 0); 2521 if (options != null) { 2522 data.writeInt(1); 2523 options.writeToParcel(data, 0); 2524 } else { 2525 data.writeInt(0); 2526 } 2527 data.writeInt(userId); 2528 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0); 2529 reply.readException(); 2530 int result = reply.readInt(); 2531 reply.recycle(); 2532 data.recycle(); 2533 return result; 2534 } 2535 public int startActivityIntentSender(IApplicationThread caller, 2536 IntentSender intent, Intent fillInIntent, String resolvedType, 2537 IBinder resultTo, String resultWho, int requestCode, 2538 int flagsMask, int flagsValues, Bundle options) throws RemoteException { 2539 Parcel data = Parcel.obtain(); 2540 Parcel reply = Parcel.obtain(); 2541 data.writeInterfaceToken(IActivityManager.descriptor); 2542 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2543 intent.writeToParcel(data, 0); 2544 if (fillInIntent != null) { 2545 data.writeInt(1); 2546 fillInIntent.writeToParcel(data, 0); 2547 } else { 2548 data.writeInt(0); 2549 } 2550 data.writeString(resolvedType); 2551 data.writeStrongBinder(resultTo); 2552 data.writeString(resultWho); 2553 data.writeInt(requestCode); 2554 data.writeInt(flagsMask); 2555 data.writeInt(flagsValues); 2556 if (options != null) { 2557 data.writeInt(1); 2558 options.writeToParcel(data, 0); 2559 } else { 2560 data.writeInt(0); 2561 } 2562 mRemote.transact(START_ACTIVITY_INTENT_SENDER_TRANSACTION, data, reply, 0); 2563 reply.readException(); 2564 int result = reply.readInt(); 2565 reply.recycle(); 2566 data.recycle(); 2567 return result; 2568 } 2569 public int startVoiceActivity(String callingPackage, int callingPid, int callingUid, 2570 Intent intent, String resolvedType, IVoiceInteractionSession session, 2571 IVoiceInteractor interactor, int startFlags, ProfilerInfo profilerInfo, 2572 Bundle options, int userId) throws RemoteException { 2573 Parcel data = Parcel.obtain(); 2574 Parcel reply = Parcel.obtain(); 2575 data.writeInterfaceToken(IActivityManager.descriptor); 2576 data.writeString(callingPackage); 2577 data.writeInt(callingPid); 2578 data.writeInt(callingUid); 2579 intent.writeToParcel(data, 0); 2580 data.writeString(resolvedType); 2581 data.writeStrongBinder(session.asBinder()); 2582 data.writeStrongBinder(interactor.asBinder()); 2583 data.writeInt(startFlags); 2584 if (profilerInfo != null) { 2585 data.writeInt(1); 2586 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2587 } else { 2588 data.writeInt(0); 2589 } 2590 if (options != null) { 2591 data.writeInt(1); 2592 options.writeToParcel(data, 0); 2593 } else { 2594 data.writeInt(0); 2595 } 2596 data.writeInt(userId); 2597 mRemote.transact(START_VOICE_ACTIVITY_TRANSACTION, data, reply, 0); 2598 reply.readException(); 2599 int result = reply.readInt(); 2600 reply.recycle(); 2601 data.recycle(); 2602 return result; 2603 } 2604 public boolean startNextMatchingActivity(IBinder callingActivity, 2605 Intent intent, Bundle options) throws RemoteException { 2606 Parcel data = Parcel.obtain(); 2607 Parcel reply = Parcel.obtain(); 2608 data.writeInterfaceToken(IActivityManager.descriptor); 2609 data.writeStrongBinder(callingActivity); 2610 intent.writeToParcel(data, 0); 2611 if (options != null) { 2612 data.writeInt(1); 2613 options.writeToParcel(data, 0); 2614 } else { 2615 data.writeInt(0); 2616 } 2617 mRemote.transact(START_NEXT_MATCHING_ACTIVITY_TRANSACTION, data, reply, 0); 2618 reply.readException(); 2619 int result = reply.readInt(); 2620 reply.recycle(); 2621 data.recycle(); 2622 return result != 0; 2623 } 2624 public int startActivityFromRecents(int taskId, Bundle options) throws RemoteException { 2625 Parcel data = Parcel.obtain(); 2626 Parcel reply = Parcel.obtain(); 2627 data.writeInterfaceToken(IActivityManager.descriptor); 2628 data.writeInt(taskId); 2629 if (options == null) { 2630 data.writeInt(0); 2631 } else { 2632 data.writeInt(1); 2633 options.writeToParcel(data, 0); 2634 } 2635 mRemote.transact(START_ACTIVITY_FROM_RECENTS_TRANSACTION, data, reply, 0); 2636 reply.readException(); 2637 int result = reply.readInt(); 2638 reply.recycle(); 2639 data.recycle(); 2640 return result; 2641 } 2642 public boolean finishActivity(IBinder token, int resultCode, Intent resultData, boolean finishTask) 2643 throws RemoteException { 2644 Parcel data = Parcel.obtain(); 2645 Parcel reply = Parcel.obtain(); 2646 data.writeInterfaceToken(IActivityManager.descriptor); 2647 data.writeStrongBinder(token); 2648 data.writeInt(resultCode); 2649 if (resultData != null) { 2650 data.writeInt(1); 2651 resultData.writeToParcel(data, 0); 2652 } else { 2653 data.writeInt(0); 2654 } 2655 data.writeInt(finishTask ? 1 : 0); 2656 mRemote.transact(FINISH_ACTIVITY_TRANSACTION, data, reply, 0); 2657 reply.readException(); 2658 boolean res = reply.readInt() != 0; 2659 data.recycle(); 2660 reply.recycle(); 2661 return res; 2662 } 2663 public void finishSubActivity(IBinder token, String resultWho, int requestCode) throws RemoteException 2664 { 2665 Parcel data = Parcel.obtain(); 2666 Parcel reply = Parcel.obtain(); 2667 data.writeInterfaceToken(IActivityManager.descriptor); 2668 data.writeStrongBinder(token); 2669 data.writeString(resultWho); 2670 data.writeInt(requestCode); 2671 mRemote.transact(FINISH_SUB_ACTIVITY_TRANSACTION, data, reply, 0); 2672 reply.readException(); 2673 data.recycle(); 2674 reply.recycle(); 2675 } 2676 public boolean finishActivityAffinity(IBinder token) throws RemoteException { 2677 Parcel data = Parcel.obtain(); 2678 Parcel reply = Parcel.obtain(); 2679 data.writeInterfaceToken(IActivityManager.descriptor); 2680 data.writeStrongBinder(token); 2681 mRemote.transact(FINISH_ACTIVITY_AFFINITY_TRANSACTION, data, reply, 0); 2682 reply.readException(); 2683 boolean res = reply.readInt() != 0; 2684 data.recycle(); 2685 reply.recycle(); 2686 return res; 2687 } 2688 public void finishVoiceTask(IVoiceInteractionSession session) throws RemoteException { 2689 Parcel data = Parcel.obtain(); 2690 Parcel reply = Parcel.obtain(); 2691 data.writeInterfaceToken(IActivityManager.descriptor); 2692 data.writeStrongBinder(session.asBinder()); 2693 mRemote.transact(FINISH_VOICE_TASK_TRANSACTION, data, reply, 0); 2694 reply.readException(); 2695 data.recycle(); 2696 reply.recycle(); 2697 } 2698 public boolean releaseActivityInstance(IBinder token) throws RemoteException { 2699 Parcel data = Parcel.obtain(); 2700 Parcel reply = Parcel.obtain(); 2701 data.writeInterfaceToken(IActivityManager.descriptor); 2702 data.writeStrongBinder(token); 2703 mRemote.transact(RELEASE_ACTIVITY_INSTANCE_TRANSACTION, data, reply, 0); 2704 reply.readException(); 2705 boolean res = reply.readInt() != 0; 2706 data.recycle(); 2707 reply.recycle(); 2708 return res; 2709 } 2710 public void releaseSomeActivities(IApplicationThread app) throws RemoteException { 2711 Parcel data = Parcel.obtain(); 2712 Parcel reply = Parcel.obtain(); 2713 data.writeInterfaceToken(IActivityManager.descriptor); 2714 data.writeStrongBinder(app.asBinder()); 2715 mRemote.transact(RELEASE_SOME_ACTIVITIES_TRANSACTION, data, reply, 0); 2716 reply.readException(); 2717 data.recycle(); 2718 reply.recycle(); 2719 } 2720 public boolean willActivityBeVisible(IBinder token) throws RemoteException { 2721 Parcel data = Parcel.obtain(); 2722 Parcel reply = Parcel.obtain(); 2723 data.writeInterfaceToken(IActivityManager.descriptor); 2724 data.writeStrongBinder(token); 2725 mRemote.transact(WILL_ACTIVITY_BE_VISIBLE_TRANSACTION, data, reply, 0); 2726 reply.readException(); 2727 boolean res = reply.readInt() != 0; 2728 data.recycle(); 2729 reply.recycle(); 2730 return res; 2731 } 2732 public Intent registerReceiver(IApplicationThread caller, String packageName, 2733 IIntentReceiver receiver, 2734 IntentFilter filter, String perm, int userId) throws RemoteException 2735 { 2736 Parcel data = Parcel.obtain(); 2737 Parcel reply = Parcel.obtain(); 2738 data.writeInterfaceToken(IActivityManager.descriptor); 2739 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2740 data.writeString(packageName); 2741 data.writeStrongBinder(receiver != null ? receiver.asBinder() : null); 2742 filter.writeToParcel(data, 0); 2743 data.writeString(perm); 2744 data.writeInt(userId); 2745 mRemote.transact(REGISTER_RECEIVER_TRANSACTION, data, reply, 0); 2746 reply.readException(); 2747 Intent intent = null; 2748 int haveIntent = reply.readInt(); 2749 if (haveIntent != 0) { 2750 intent = Intent.CREATOR.createFromParcel(reply); 2751 } 2752 reply.recycle(); 2753 data.recycle(); 2754 return intent; 2755 } 2756 public void unregisterReceiver(IIntentReceiver receiver) throws RemoteException 2757 { 2758 Parcel data = Parcel.obtain(); 2759 Parcel reply = Parcel.obtain(); 2760 data.writeInterfaceToken(IActivityManager.descriptor); 2761 data.writeStrongBinder(receiver.asBinder()); 2762 mRemote.transact(UNREGISTER_RECEIVER_TRANSACTION, data, reply, 0); 2763 reply.readException(); 2764 data.recycle(); 2765 reply.recycle(); 2766 } 2767 public int broadcastIntent(IApplicationThread caller, 2768 Intent intent, String resolvedType, IIntentReceiver resultTo, 2769 int resultCode, String resultData, Bundle map, 2770 String requiredPermission, int appOp, boolean serialized, 2771 boolean sticky, int userId) throws RemoteException 2772 { 2773 Parcel data = Parcel.obtain(); 2774 Parcel reply = Parcel.obtain(); 2775 data.writeInterfaceToken(IActivityManager.descriptor); 2776 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2777 intent.writeToParcel(data, 0); 2778 data.writeString(resolvedType); 2779 data.writeStrongBinder(resultTo != null ? resultTo.asBinder() : null); 2780 data.writeInt(resultCode); 2781 data.writeString(resultData); 2782 data.writeBundle(map); 2783 data.writeString(requiredPermission); 2784 data.writeInt(appOp); 2785 data.writeInt(serialized ? 1 : 0); 2786 data.writeInt(sticky ? 1 : 0); 2787 data.writeInt(userId); 2788 mRemote.transact(BROADCAST_INTENT_TRANSACTION, data, reply, 0); 2789 reply.readException(); 2790 int res = reply.readInt(); 2791 reply.recycle(); 2792 data.recycle(); 2793 return res; 2794 } 2795 public void unbroadcastIntent(IApplicationThread caller, Intent intent, int userId) 2796 throws RemoteException 2797 { 2798 Parcel data = Parcel.obtain(); 2799 Parcel reply = Parcel.obtain(); 2800 data.writeInterfaceToken(IActivityManager.descriptor); 2801 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2802 intent.writeToParcel(data, 0); 2803 data.writeInt(userId); 2804 mRemote.transact(UNBROADCAST_INTENT_TRANSACTION, data, reply, 0); 2805 reply.readException(); 2806 data.recycle(); 2807 reply.recycle(); 2808 } 2809 public void finishReceiver(IBinder who, int resultCode, String resultData, Bundle map, boolean abortBroadcast) throws RemoteException 2810 { 2811 Parcel data = Parcel.obtain(); 2812 Parcel reply = Parcel.obtain(); 2813 data.writeInterfaceToken(IActivityManager.descriptor); 2814 data.writeStrongBinder(who); 2815 data.writeInt(resultCode); 2816 data.writeString(resultData); 2817 data.writeBundle(map); 2818 data.writeInt(abortBroadcast ? 1 : 0); 2819 mRemote.transact(FINISH_RECEIVER_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2820 reply.readException(); 2821 data.recycle(); 2822 reply.recycle(); 2823 } 2824 public void attachApplication(IApplicationThread app) throws RemoteException 2825 { 2826 Parcel data = Parcel.obtain(); 2827 Parcel reply = Parcel.obtain(); 2828 data.writeInterfaceToken(IActivityManager.descriptor); 2829 data.writeStrongBinder(app.asBinder()); 2830 mRemote.transact(ATTACH_APPLICATION_TRANSACTION, data, reply, 0); 2831 reply.readException(); 2832 data.recycle(); 2833 reply.recycle(); 2834 } 2835 public void activityIdle(IBinder token, Configuration config, boolean stopProfiling) 2836 throws RemoteException 2837 { 2838 Parcel data = Parcel.obtain(); 2839 Parcel reply = Parcel.obtain(); 2840 data.writeInterfaceToken(IActivityManager.descriptor); 2841 data.writeStrongBinder(token); 2842 if (config != null) { 2843 data.writeInt(1); 2844 config.writeToParcel(data, 0); 2845 } else { 2846 data.writeInt(0); 2847 } 2848 data.writeInt(stopProfiling ? 1 : 0); 2849 mRemote.transact(ACTIVITY_IDLE_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2850 reply.readException(); 2851 data.recycle(); 2852 reply.recycle(); 2853 } 2854 public void activityResumed(IBinder token) throws RemoteException 2855 { 2856 Parcel data = Parcel.obtain(); 2857 Parcel reply = Parcel.obtain(); 2858 data.writeInterfaceToken(IActivityManager.descriptor); 2859 data.writeStrongBinder(token); 2860 mRemote.transact(ACTIVITY_RESUMED_TRANSACTION, data, reply, 0); 2861 reply.readException(); 2862 data.recycle(); 2863 reply.recycle(); 2864 } 2865 public void activityPaused(IBinder token) throws RemoteException 2866 { 2867 Parcel data = Parcel.obtain(); 2868 Parcel reply = Parcel.obtain(); 2869 data.writeInterfaceToken(IActivityManager.descriptor); 2870 data.writeStrongBinder(token); 2871 mRemote.transact(ACTIVITY_PAUSED_TRANSACTION, data, reply, 0); 2872 reply.readException(); 2873 data.recycle(); 2874 reply.recycle(); 2875 } 2876 public void activityStopped(IBinder token, Bundle state, 2877 PersistableBundle persistentState, CharSequence description) throws RemoteException 2878 { 2879 Parcel data = Parcel.obtain(); 2880 Parcel reply = Parcel.obtain(); 2881 data.writeInterfaceToken(IActivityManager.descriptor); 2882 data.writeStrongBinder(token); 2883 data.writeBundle(state); 2884 data.writePersistableBundle(persistentState); 2885 TextUtils.writeToParcel(description, data, 0); 2886 mRemote.transact(ACTIVITY_STOPPED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2887 reply.readException(); 2888 data.recycle(); 2889 reply.recycle(); 2890 } 2891 public void activitySlept(IBinder token) throws RemoteException 2892 { 2893 Parcel data = Parcel.obtain(); 2894 Parcel reply = Parcel.obtain(); 2895 data.writeInterfaceToken(IActivityManager.descriptor); 2896 data.writeStrongBinder(token); 2897 mRemote.transact(ACTIVITY_SLEPT_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2898 reply.readException(); 2899 data.recycle(); 2900 reply.recycle(); 2901 } 2902 public void activityDestroyed(IBinder token) throws RemoteException 2903 { 2904 Parcel data = Parcel.obtain(); 2905 Parcel reply = Parcel.obtain(); 2906 data.writeInterfaceToken(IActivityManager.descriptor); 2907 data.writeStrongBinder(token); 2908 mRemote.transact(ACTIVITY_DESTROYED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2909 reply.readException(); 2910 data.recycle(); 2911 reply.recycle(); 2912 } 2913 public String getCallingPackage(IBinder token) throws RemoteException 2914 { 2915 Parcel data = Parcel.obtain(); 2916 Parcel reply = Parcel.obtain(); 2917 data.writeInterfaceToken(IActivityManager.descriptor); 2918 data.writeStrongBinder(token); 2919 mRemote.transact(GET_CALLING_PACKAGE_TRANSACTION, data, reply, 0); 2920 reply.readException(); 2921 String res = reply.readString(); 2922 data.recycle(); 2923 reply.recycle(); 2924 return res; 2925 } 2926 public ComponentName getCallingActivity(IBinder token) 2927 throws RemoteException { 2928 Parcel data = Parcel.obtain(); 2929 Parcel reply = Parcel.obtain(); 2930 data.writeInterfaceToken(IActivityManager.descriptor); 2931 data.writeStrongBinder(token); 2932 mRemote.transact(GET_CALLING_ACTIVITY_TRANSACTION, data, reply, 0); 2933 reply.readException(); 2934 ComponentName res = ComponentName.readFromParcel(reply); 2935 data.recycle(); 2936 reply.recycle(); 2937 return res; 2938 } 2939 public List<IAppTask> getAppTasks(String callingPackage) throws RemoteException { 2940 Parcel data = Parcel.obtain(); 2941 Parcel reply = Parcel.obtain(); 2942 data.writeInterfaceToken(IActivityManager.descriptor); 2943 data.writeString(callingPackage); 2944 mRemote.transact(GET_APP_TASKS_TRANSACTION, data, reply, 0); 2945 reply.readException(); 2946 ArrayList<IAppTask> list = null; 2947 int N = reply.readInt(); 2948 if (N >= 0) { 2949 list = new ArrayList<IAppTask>(); 2950 while (N > 0) { 2951 IAppTask task = IAppTask.Stub.asInterface(reply.readStrongBinder()); 2952 list.add(task); 2953 N--; 2954 } 2955 } 2956 data.recycle(); 2957 reply.recycle(); 2958 return list; 2959 } 2960 public int addAppTask(IBinder activityToken, Intent intent, 2961 ActivityManager.TaskDescription description, Bitmap thumbnail) throws RemoteException { 2962 Parcel data = Parcel.obtain(); 2963 Parcel reply = Parcel.obtain(); 2964 data.writeInterfaceToken(IActivityManager.descriptor); 2965 data.writeStrongBinder(activityToken); 2966 intent.writeToParcel(data, 0); 2967 description.writeToParcel(data, 0); 2968 thumbnail.writeToParcel(data, 0); 2969 mRemote.transact(ADD_APP_TASK_TRANSACTION, data, reply, 0); 2970 reply.readException(); 2971 int res = reply.readInt(); 2972 data.recycle(); 2973 reply.recycle(); 2974 return res; 2975 } 2976 public Point getAppTaskThumbnailSize() throws RemoteException { 2977 Parcel data = Parcel.obtain(); 2978 Parcel reply = Parcel.obtain(); 2979 data.writeInterfaceToken(IActivityManager.descriptor); 2980 mRemote.transact(GET_APP_TASK_THUMBNAIL_SIZE_TRANSACTION, data, reply, 0); 2981 reply.readException(); 2982 Point size = Point.CREATOR.createFromParcel(reply); 2983 data.recycle(); 2984 reply.recycle(); 2985 return size; 2986 } 2987 public List getTasks(int maxNum, int flags) throws RemoteException { 2988 Parcel data = Parcel.obtain(); 2989 Parcel reply = Parcel.obtain(); 2990 data.writeInterfaceToken(IActivityManager.descriptor); 2991 data.writeInt(maxNum); 2992 data.writeInt(flags); 2993 mRemote.transact(GET_TASKS_TRANSACTION, data, reply, 0); 2994 reply.readException(); 2995 ArrayList list = null; 2996 int N = reply.readInt(); 2997 if (N >= 0) { 2998 list = new ArrayList(); 2999 while (N > 0) { 3000 ActivityManager.RunningTaskInfo info = 3001 ActivityManager.RunningTaskInfo.CREATOR 3002 .createFromParcel(reply); 3003 list.add(info); 3004 N--; 3005 } 3006 } 3007 data.recycle(); 3008 reply.recycle(); 3009 return list; 3010 } 3011 public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, 3012 int flags, int userId) throws RemoteException { 3013 Parcel data = Parcel.obtain(); 3014 Parcel reply = Parcel.obtain(); 3015 data.writeInterfaceToken(IActivityManager.descriptor); 3016 data.writeInt(maxNum); 3017 data.writeInt(flags); 3018 data.writeInt(userId); 3019 mRemote.transact(GET_RECENT_TASKS_TRANSACTION, data, reply, 0); 3020 reply.readException(); 3021 ArrayList<ActivityManager.RecentTaskInfo> list 3022 = reply.createTypedArrayList(ActivityManager.RecentTaskInfo.CREATOR); 3023 data.recycle(); 3024 reply.recycle(); 3025 return list; 3026 } 3027 public ActivityManager.TaskThumbnail getTaskThumbnail(int id) throws RemoteException { 3028 Parcel data = Parcel.obtain(); 3029 Parcel reply = Parcel.obtain(); 3030 data.writeInterfaceToken(IActivityManager.descriptor); 3031 data.writeInt(id); 3032 mRemote.transact(GET_TASK_THUMBNAIL_TRANSACTION, data, reply, 0); 3033 reply.readException(); 3034 ActivityManager.TaskThumbnail taskThumbnail = null; 3035 if (reply.readInt() != 0) { 3036 taskThumbnail = ActivityManager.TaskThumbnail.CREATOR.createFromParcel(reply); 3037 } 3038 data.recycle(); 3039 reply.recycle(); 3040 return taskThumbnail; 3041 } 3042 public List getServices(int maxNum, int flags) throws RemoteException { 3043 Parcel data = Parcel.obtain(); 3044 Parcel reply = Parcel.obtain(); 3045 data.writeInterfaceToken(IActivityManager.descriptor); 3046 data.writeInt(maxNum); 3047 data.writeInt(flags); 3048 mRemote.transact(GET_SERVICES_TRANSACTION, data, reply, 0); 3049 reply.readException(); 3050 ArrayList list = null; 3051 int N = reply.readInt(); 3052 if (N >= 0) { 3053 list = new ArrayList(); 3054 while (N > 0) { 3055 ActivityManager.RunningServiceInfo info = 3056 ActivityManager.RunningServiceInfo.CREATOR 3057 .createFromParcel(reply); 3058 list.add(info); 3059 N--; 3060 } 3061 } 3062 data.recycle(); 3063 reply.recycle(); 3064 return list; 3065 } 3066 public List<ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState() 3067 throws RemoteException { 3068 Parcel data = Parcel.obtain(); 3069 Parcel reply = Parcel.obtain(); 3070 data.writeInterfaceToken(IActivityManager.descriptor); 3071 mRemote.transact(GET_PROCESSES_IN_ERROR_STATE_TRANSACTION, data, reply, 0); 3072 reply.readException(); 3073 ArrayList<ActivityManager.ProcessErrorStateInfo> list 3074 = reply.createTypedArrayList(ActivityManager.ProcessErrorStateInfo.CREATOR); 3075 data.recycle(); 3076 reply.recycle(); 3077 return list; 3078 } 3079 public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses() 3080 throws RemoteException { 3081 Parcel data = Parcel.obtain(); 3082 Parcel reply = Parcel.obtain(); 3083 data.writeInterfaceToken(IActivityManager.descriptor); 3084 mRemote.transact(GET_RUNNING_APP_PROCESSES_TRANSACTION, data, reply, 0); 3085 reply.readException(); 3086 ArrayList<ActivityManager.RunningAppProcessInfo> list 3087 = reply.createTypedArrayList(ActivityManager.RunningAppProcessInfo.CREATOR); 3088 data.recycle(); 3089 reply.recycle(); 3090 return list; 3091 } 3092 public List<ApplicationInfo> getRunningExternalApplications() 3093 throws RemoteException { 3094 Parcel data = Parcel.obtain(); 3095 Parcel reply = Parcel.obtain(); 3096 data.writeInterfaceToken(IActivityManager.descriptor); 3097 mRemote.transact(GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION, data, reply, 0); 3098 reply.readException(); 3099 ArrayList<ApplicationInfo> list 3100 = reply.createTypedArrayList(ApplicationInfo.CREATOR); 3101 data.recycle(); 3102 reply.recycle(); 3103 return list; 3104 } 3105 public void moveTaskToFront(int task, int flags, Bundle options) throws RemoteException 3106 { 3107 Parcel data = Parcel.obtain(); 3108 Parcel reply = Parcel.obtain(); 3109 data.writeInterfaceToken(IActivityManager.descriptor); 3110 data.writeInt(task); 3111 data.writeInt(flags); 3112 if (options != null) { 3113 data.writeInt(1); 3114 options.writeToParcel(data, 0); 3115 } else { 3116 data.writeInt(0); 3117 } 3118 mRemote.transact(MOVE_TASK_TO_FRONT_TRANSACTION, data, reply, 0); 3119 reply.readException(); 3120 data.recycle(); 3121 reply.recycle(); 3122 } 3123 public void moveTaskToBack(int task) throws RemoteException 3124 { 3125 Parcel data = Parcel.obtain(); 3126 Parcel reply = Parcel.obtain(); 3127 data.writeInterfaceToken(IActivityManager.descriptor); 3128 data.writeInt(task); 3129 mRemote.transact(MOVE_TASK_TO_BACK_TRANSACTION, data, reply, 0); 3130 reply.readException(); 3131 data.recycle(); 3132 reply.recycle(); 3133 } 3134 public boolean moveActivityTaskToBack(IBinder token, boolean nonRoot) 3135 throws RemoteException { 3136 Parcel data = Parcel.obtain(); 3137 Parcel reply = Parcel.obtain(); 3138 data.writeInterfaceToken(IActivityManager.descriptor); 3139 data.writeStrongBinder(token); 3140 data.writeInt(nonRoot ? 1 : 0); 3141 mRemote.transact(MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION, data, reply, 0); 3142 reply.readException(); 3143 boolean res = reply.readInt() != 0; 3144 data.recycle(); 3145 reply.recycle(); 3146 return res; 3147 } 3148 public void moveTaskBackwards(int task) throws RemoteException 3149 { 3150 Parcel data = Parcel.obtain(); 3151 Parcel reply = Parcel.obtain(); 3152 data.writeInterfaceToken(IActivityManager.descriptor); 3153 data.writeInt(task); 3154 mRemote.transact(MOVE_TASK_BACKWARDS_TRANSACTION, data, reply, 0); 3155 reply.readException(); 3156 data.recycle(); 3157 reply.recycle(); 3158 } 3159 @Override 3160 public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException 3161 { 3162 Parcel data = Parcel.obtain(); 3163 Parcel reply = Parcel.obtain(); 3164 data.writeInterfaceToken(IActivityManager.descriptor); 3165 data.writeInt(taskId); 3166 data.writeInt(stackId); 3167 data.writeInt(toTop ? 1 : 0); 3168 mRemote.transact(MOVE_TASK_TO_STACK_TRANSACTION, data, reply, 0); 3169 reply.readException(); 3170 data.recycle(); 3171 reply.recycle(); 3172 } 3173 @Override 3174 public void resizeStack(int stackBoxId, Rect r) throws RemoteException 3175 { 3176 Parcel data = Parcel.obtain(); 3177 Parcel reply = Parcel.obtain(); 3178 data.writeInterfaceToken(IActivityManager.descriptor); 3179 data.writeInt(stackBoxId); 3180 r.writeToParcel(data, 0); 3181 mRemote.transact(RESIZE_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3182 reply.readException(); 3183 data.recycle(); 3184 reply.recycle(); 3185 } 3186 @Override 3187 public List<StackInfo> getAllStackInfos() throws RemoteException 3188 { 3189 Parcel data = Parcel.obtain(); 3190 Parcel reply = Parcel.obtain(); 3191 data.writeInterfaceToken(IActivityManager.descriptor); 3192 mRemote.transact(GET_ALL_STACK_INFOS_TRANSACTION, data, reply, 0); 3193 reply.readException(); 3194 ArrayList<StackInfo> list = reply.createTypedArrayList(StackInfo.CREATOR); 3195 data.recycle(); 3196 reply.recycle(); 3197 return list; 3198 } 3199 @Override 3200 public StackInfo getStackInfo(int stackId) throws RemoteException 3201 { 3202 Parcel data = Parcel.obtain(); 3203 Parcel reply = Parcel.obtain(); 3204 data.writeInterfaceToken(IActivityManager.descriptor); 3205 data.writeInt(stackId); 3206 mRemote.transact(GET_STACK_INFO_TRANSACTION, data, reply, 0); 3207 reply.readException(); 3208 int res = reply.readInt(); 3209 StackInfo info = null; 3210 if (res != 0) { 3211 info = StackInfo.CREATOR.createFromParcel(reply); 3212 } 3213 data.recycle(); 3214 reply.recycle(); 3215 return info; 3216 } 3217 @Override 3218 public boolean isInHomeStack(int taskId) throws RemoteException { 3219 Parcel data = Parcel.obtain(); 3220 Parcel reply = Parcel.obtain(); 3221 data.writeInterfaceToken(IActivityManager.descriptor); 3222 data.writeInt(taskId); 3223 mRemote.transact(IS_IN_HOME_STACK_TRANSACTION, data, reply, 0); 3224 reply.readException(); 3225 boolean isInHomeStack = reply.readInt() > 0; 3226 data.recycle(); 3227 reply.recycle(); 3228 return isInHomeStack; 3229 } 3230 @Override 3231 public void setFocusedStack(int stackId) throws RemoteException 3232 { 3233 Parcel data = Parcel.obtain(); 3234 Parcel reply = Parcel.obtain(); 3235 data.writeInterfaceToken(IActivityManager.descriptor); 3236 data.writeInt(stackId); 3237 mRemote.transact(SET_FOCUSED_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3238 reply.readException(); 3239 data.recycle(); 3240 reply.recycle(); 3241 } 3242 public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException 3243 { 3244 Parcel data = Parcel.obtain(); 3245 Parcel reply = Parcel.obtain(); 3246 data.writeInterfaceToken(IActivityManager.descriptor); 3247 data.writeStrongBinder(token); 3248 data.writeInt(onlyRoot ? 1 : 0); 3249 mRemote.transact(GET_TASK_FOR_ACTIVITY_TRANSACTION, data, reply, 0); 3250 reply.readException(); 3251 int res = reply.readInt(); 3252 data.recycle(); 3253 reply.recycle(); 3254 return res; 3255 } 3256 public ContentProviderHolder getContentProvider(IApplicationThread caller, 3257 String name, int userId, boolean stable) throws RemoteException { 3258 Parcel data = Parcel.obtain(); 3259 Parcel reply = Parcel.obtain(); 3260 data.writeInterfaceToken(IActivityManager.descriptor); 3261 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3262 data.writeString(name); 3263 data.writeInt(userId); 3264 data.writeInt(stable ? 1 : 0); 3265 mRemote.transact(GET_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 3266 reply.readException(); 3267 int res = reply.readInt(); 3268 ContentProviderHolder cph = null; 3269 if (res != 0) { 3270 cph = ContentProviderHolder.CREATOR.createFromParcel(reply); 3271 } 3272 data.recycle(); 3273 reply.recycle(); 3274 return cph; 3275 } 3276 public ContentProviderHolder getContentProviderExternal(String name, int userId, IBinder token) 3277 throws RemoteException { 3278 Parcel data = Parcel.obtain(); 3279 Parcel reply = Parcel.obtain(); 3280 data.writeInterfaceToken(IActivityManager.descriptor); 3281 data.writeString(name); 3282 data.writeInt(userId); 3283 data.writeStrongBinder(token); 3284 mRemote.transact(GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0); 3285 reply.readException(); 3286 int res = reply.readInt(); 3287 ContentProviderHolder cph = null; 3288 if (res != 0) { 3289 cph = ContentProviderHolder.CREATOR.createFromParcel(reply); 3290 } 3291 data.recycle(); 3292 reply.recycle(); 3293 return cph; 3294 } 3295 public void publishContentProviders(IApplicationThread caller, 3296 List<ContentProviderHolder> providers) throws RemoteException 3297 { 3298 Parcel data = Parcel.obtain(); 3299 Parcel reply = Parcel.obtain(); 3300 data.writeInterfaceToken(IActivityManager.descriptor); 3301 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3302 data.writeTypedList(providers); 3303 mRemote.transact(PUBLISH_CONTENT_PROVIDERS_TRANSACTION, data, reply, 0); 3304 reply.readException(); 3305 data.recycle(); 3306 reply.recycle(); 3307 } 3308 public boolean refContentProvider(IBinder connection, int stable, int unstable) 3309 throws RemoteException { 3310 Parcel data = Parcel.obtain(); 3311 Parcel reply = Parcel.obtain(); 3312 data.writeInterfaceToken(IActivityManager.descriptor); 3313 data.writeStrongBinder(connection); 3314 data.writeInt(stable); 3315 data.writeInt(unstable); 3316 mRemote.transact(REF_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 3317 reply.readException(); 3318 boolean res = reply.readInt() != 0; 3319 data.recycle(); 3320 reply.recycle(); 3321 return res; 3322 } 3323 3324 public void unstableProviderDied(IBinder connection) throws RemoteException { 3325 Parcel data = Parcel.obtain(); 3326 Parcel reply = Parcel.obtain(); 3327 data.writeInterfaceToken(IActivityManager.descriptor); 3328 data.writeStrongBinder(connection); 3329 mRemote.transact(UNSTABLE_PROVIDER_DIED_TRANSACTION, data, reply, 0); 3330 reply.readException(); 3331 data.recycle(); 3332 reply.recycle(); 3333 } 3334 3335 @Override 3336 public void appNotRespondingViaProvider(IBinder connection) throws RemoteException { 3337 Parcel data = Parcel.obtain(); 3338 Parcel reply = Parcel.obtain(); 3339 data.writeInterfaceToken(IActivityManager.descriptor); 3340 data.writeStrongBinder(connection); 3341 mRemote.transact(APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION, data, reply, 0); 3342 reply.readException(); 3343 data.recycle(); 3344 reply.recycle(); 3345 } 3346 3347 public void removeContentProvider(IBinder connection, boolean stable) throws RemoteException { 3348 Parcel data = Parcel.obtain(); 3349 Parcel reply = Parcel.obtain(); 3350 data.writeInterfaceToken(IActivityManager.descriptor); 3351 data.writeStrongBinder(connection); 3352 data.writeInt(stable ? 1 : 0); 3353 mRemote.transact(REMOVE_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 3354 reply.readException(); 3355 data.recycle(); 3356 reply.recycle(); 3357 } 3358 3359 public void removeContentProviderExternal(String name, IBinder token) throws RemoteException { 3360 Parcel data = Parcel.obtain(); 3361 Parcel reply = Parcel.obtain(); 3362 data.writeInterfaceToken(IActivityManager.descriptor); 3363 data.writeString(name); 3364 data.writeStrongBinder(token); 3365 mRemote.transact(REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0); 3366 reply.readException(); 3367 data.recycle(); 3368 reply.recycle(); 3369 } 3370 3371 public PendingIntent getRunningServiceControlPanel(ComponentName service) 3372 throws RemoteException 3373 { 3374 Parcel data = Parcel.obtain(); 3375 Parcel reply = Parcel.obtain(); 3376 data.writeInterfaceToken(IActivityManager.descriptor); 3377 service.writeToParcel(data, 0); 3378 mRemote.transact(GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION, data, reply, 0); 3379 reply.readException(); 3380 PendingIntent res = PendingIntent.readPendingIntentOrNullFromParcel(reply); 3381 data.recycle(); 3382 reply.recycle(); 3383 return res; 3384 } 3385 3386 public ComponentName startService(IApplicationThread caller, Intent service, 3387 String resolvedType, int userId) throws RemoteException 3388 { 3389 Parcel data = Parcel.obtain(); 3390 Parcel reply = Parcel.obtain(); 3391 data.writeInterfaceToken(IActivityManager.descriptor); 3392 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3393 service.writeToParcel(data, 0); 3394 data.writeString(resolvedType); 3395 data.writeInt(userId); 3396 mRemote.transact(START_SERVICE_TRANSACTION, data, reply, 0); 3397 reply.readException(); 3398 ComponentName res = ComponentName.readFromParcel(reply); 3399 data.recycle(); 3400 reply.recycle(); 3401 return res; 3402 } 3403 public int stopService(IApplicationThread caller, Intent service, 3404 String resolvedType, int userId) throws RemoteException 3405 { 3406 Parcel data = Parcel.obtain(); 3407 Parcel reply = Parcel.obtain(); 3408 data.writeInterfaceToken(IActivityManager.descriptor); 3409 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3410 service.writeToParcel(data, 0); 3411 data.writeString(resolvedType); 3412 data.writeInt(userId); 3413 mRemote.transact(STOP_SERVICE_TRANSACTION, data, reply, 0); 3414 reply.readException(); 3415 int res = reply.readInt(); 3416 reply.recycle(); 3417 data.recycle(); 3418 return res; 3419 } 3420 public boolean stopServiceToken(ComponentName className, IBinder token, 3421 int startId) throws RemoteException { 3422 Parcel data = Parcel.obtain(); 3423 Parcel reply = Parcel.obtain(); 3424 data.writeInterfaceToken(IActivityManager.descriptor); 3425 ComponentName.writeToParcel(className, data); 3426 data.writeStrongBinder(token); 3427 data.writeInt(startId); 3428 mRemote.transact(STOP_SERVICE_TOKEN_TRANSACTION, data, reply, 0); 3429 reply.readException(); 3430 boolean res = reply.readInt() != 0; 3431 data.recycle(); 3432 reply.recycle(); 3433 return res; 3434 } 3435 public void setServiceForeground(ComponentName className, IBinder token, 3436 int id, Notification notification, boolean removeNotification) throws RemoteException { 3437 Parcel data = Parcel.obtain(); 3438 Parcel reply = Parcel.obtain(); 3439 data.writeInterfaceToken(IActivityManager.descriptor); 3440 ComponentName.writeToParcel(className, data); 3441 data.writeStrongBinder(token); 3442 data.writeInt(id); 3443 if (notification != null) { 3444 data.writeInt(1); 3445 notification.writeToParcel(data, 0); 3446 } else { 3447 data.writeInt(0); 3448 } 3449 data.writeInt(removeNotification ? 1 : 0); 3450 mRemote.transact(SET_SERVICE_FOREGROUND_TRANSACTION, data, reply, 0); 3451 reply.readException(); 3452 data.recycle(); 3453 reply.recycle(); 3454 } 3455 public int bindService(IApplicationThread caller, IBinder token, 3456 Intent service, String resolvedType, IServiceConnection connection, 3457 int flags, int userId) throws RemoteException { 3458 Parcel data = Parcel.obtain(); 3459 Parcel reply = Parcel.obtain(); 3460 data.writeInterfaceToken(IActivityManager.descriptor); 3461 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3462 data.writeStrongBinder(token); 3463 service.writeToParcel(data, 0); 3464 data.writeString(resolvedType); 3465 data.writeStrongBinder(connection.asBinder()); 3466 data.writeInt(flags); 3467 data.writeInt(userId); 3468 mRemote.transact(BIND_SERVICE_TRANSACTION, data, reply, 0); 3469 reply.readException(); 3470 int res = reply.readInt(); 3471 data.recycle(); 3472 reply.recycle(); 3473 return res; 3474 } 3475 public boolean unbindService(IServiceConnection connection) throws RemoteException 3476 { 3477 Parcel data = Parcel.obtain(); 3478 Parcel reply = Parcel.obtain(); 3479 data.writeInterfaceToken(IActivityManager.descriptor); 3480 data.writeStrongBinder(connection.asBinder()); 3481 mRemote.transact(UNBIND_SERVICE_TRANSACTION, data, reply, 0); 3482 reply.readException(); 3483 boolean res = reply.readInt() != 0; 3484 data.recycle(); 3485 reply.recycle(); 3486 return res; 3487 } 3488 3489 public void publishService(IBinder token, 3490 Intent intent, IBinder service) throws RemoteException { 3491 Parcel data = Parcel.obtain(); 3492 Parcel reply = Parcel.obtain(); 3493 data.writeInterfaceToken(IActivityManager.descriptor); 3494 data.writeStrongBinder(token); 3495 intent.writeToParcel(data, 0); 3496 data.writeStrongBinder(service); 3497 mRemote.transact(PUBLISH_SERVICE_TRANSACTION, data, reply, 0); 3498 reply.readException(); 3499 data.recycle(); 3500 reply.recycle(); 3501 } 3502 3503 public void unbindFinished(IBinder token, Intent intent, boolean doRebind) 3504 throws RemoteException { 3505 Parcel data = Parcel.obtain(); 3506 Parcel reply = Parcel.obtain(); 3507 data.writeInterfaceToken(IActivityManager.descriptor); 3508 data.writeStrongBinder(token); 3509 intent.writeToParcel(data, 0); 3510 data.writeInt(doRebind ? 1 : 0); 3511 mRemote.transact(UNBIND_FINISHED_TRANSACTION, data, reply, 0); 3512 reply.readException(); 3513 data.recycle(); 3514 reply.recycle(); 3515 } 3516 3517 public void serviceDoneExecuting(IBinder token, int type, int startId, 3518 int res) throws RemoteException { 3519 Parcel data = Parcel.obtain(); 3520 Parcel reply = Parcel.obtain(); 3521 data.writeInterfaceToken(IActivityManager.descriptor); 3522 data.writeStrongBinder(token); 3523 data.writeInt(type); 3524 data.writeInt(startId); 3525 data.writeInt(res); 3526 mRemote.transact(SERVICE_DONE_EXECUTING_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3527 reply.readException(); 3528 data.recycle(); 3529 reply.recycle(); 3530 } 3531 3532 public IBinder peekService(Intent service, String resolvedType) throws RemoteException { 3533 Parcel data = Parcel.obtain(); 3534 Parcel reply = Parcel.obtain(); 3535 data.writeInterfaceToken(IActivityManager.descriptor); 3536 service.writeToParcel(data, 0); 3537 data.writeString(resolvedType); 3538 mRemote.transact(PEEK_SERVICE_TRANSACTION, data, reply, 0); 3539 reply.readException(); 3540 IBinder binder = reply.readStrongBinder(); 3541 reply.recycle(); 3542 data.recycle(); 3543 return binder; 3544 } 3545 3546 public boolean bindBackupAgent(ApplicationInfo app, int backupRestoreMode) 3547 throws RemoteException { 3548 Parcel data = Parcel.obtain(); 3549 Parcel reply = Parcel.obtain(); 3550 data.writeInterfaceToken(IActivityManager.descriptor); 3551 app.writeToParcel(data, 0); 3552 data.writeInt(backupRestoreMode); 3553 mRemote.transact(START_BACKUP_AGENT_TRANSACTION, data, reply, 0); 3554 reply.readException(); 3555 boolean success = reply.readInt() != 0; 3556 reply.recycle(); 3557 data.recycle(); 3558 return success; 3559 } 3560 3561 public void clearPendingBackup() throws RemoteException { 3562 Parcel data = Parcel.obtain(); 3563 Parcel reply = Parcel.obtain(); 3564 data.writeInterfaceToken(IActivityManager.descriptor); 3565 mRemote.transact(CLEAR_PENDING_BACKUP_TRANSACTION, data, reply, 0); 3566 reply.recycle(); 3567 data.recycle(); 3568 } 3569 3570 public void backupAgentCreated(String packageName, IBinder agent) throws RemoteException { 3571 Parcel data = Parcel.obtain(); 3572 Parcel reply = Parcel.obtain(); 3573 data.writeInterfaceToken(IActivityManager.descriptor); 3574 data.writeString(packageName); 3575 data.writeStrongBinder(agent); 3576 mRemote.transact(BACKUP_AGENT_CREATED_TRANSACTION, data, reply, 0); 3577 reply.recycle(); 3578 data.recycle(); 3579 } 3580 3581 public void unbindBackupAgent(ApplicationInfo app) throws RemoteException { 3582 Parcel data = Parcel.obtain(); 3583 Parcel reply = Parcel.obtain(); 3584 data.writeInterfaceToken(IActivityManager.descriptor); 3585 app.writeToParcel(data, 0); 3586 mRemote.transact(UNBIND_BACKUP_AGENT_TRANSACTION, data, reply, 0); 3587 reply.readException(); 3588 reply.recycle(); 3589 data.recycle(); 3590 } 3591 3592 public boolean startInstrumentation(ComponentName className, String profileFile, 3593 int flags, Bundle arguments, IInstrumentationWatcher watcher, 3594 IUiAutomationConnection connection, int userId, String instructionSet) 3595 throws RemoteException { 3596 Parcel data = Parcel.obtain(); 3597 Parcel reply = Parcel.obtain(); 3598 data.writeInterfaceToken(IActivityManager.descriptor); 3599 ComponentName.writeToParcel(className, data); 3600 data.writeString(profileFile); 3601 data.writeInt(flags); 3602 data.writeBundle(arguments); 3603 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null); 3604 data.writeStrongBinder(connection != null ? connection.asBinder() : null); 3605 data.writeInt(userId); 3606 data.writeString(instructionSet); 3607 mRemote.transact(START_INSTRUMENTATION_TRANSACTION, data, reply, 0); 3608 reply.readException(); 3609 boolean res = reply.readInt() != 0; 3610 reply.recycle(); 3611 data.recycle(); 3612 return res; 3613 } 3614 3615 public void finishInstrumentation(IApplicationThread target, 3616 int resultCode, Bundle results) throws RemoteException { 3617 Parcel data = Parcel.obtain(); 3618 Parcel reply = Parcel.obtain(); 3619 data.writeInterfaceToken(IActivityManager.descriptor); 3620 data.writeStrongBinder(target != null ? target.asBinder() : null); 3621 data.writeInt(resultCode); 3622 data.writeBundle(results); 3623 mRemote.transact(FINISH_INSTRUMENTATION_TRANSACTION, data, reply, 0); 3624 reply.readException(); 3625 data.recycle(); 3626 reply.recycle(); 3627 } 3628 public Configuration getConfiguration() throws RemoteException 3629 { 3630 Parcel data = Parcel.obtain(); 3631 Parcel reply = Parcel.obtain(); 3632 data.writeInterfaceToken(IActivityManager.descriptor); 3633 mRemote.transact(GET_CONFIGURATION_TRANSACTION, data, reply, 0); 3634 reply.readException(); 3635 Configuration res = Configuration.CREATOR.createFromParcel(reply); 3636 reply.recycle(); 3637 data.recycle(); 3638 return res; 3639 } 3640 public void updateConfiguration(Configuration values) throws RemoteException 3641 { 3642 Parcel data = Parcel.obtain(); 3643 Parcel reply = Parcel.obtain(); 3644 data.writeInterfaceToken(IActivityManager.descriptor); 3645 values.writeToParcel(data, 0); 3646 mRemote.transact(UPDATE_CONFIGURATION_TRANSACTION, data, reply, 0); 3647 reply.readException(); 3648 data.recycle(); 3649 reply.recycle(); 3650 } 3651 public void setRequestedOrientation(IBinder token, int requestedOrientation) 3652 throws RemoteException { 3653 Parcel data = Parcel.obtain(); 3654 Parcel reply = Parcel.obtain(); 3655 data.writeInterfaceToken(IActivityManager.descriptor); 3656 data.writeStrongBinder(token); 3657 data.writeInt(requestedOrientation); 3658 mRemote.transact(SET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0); 3659 reply.readException(); 3660 data.recycle(); 3661 reply.recycle(); 3662 } 3663 public int getRequestedOrientation(IBinder token) throws RemoteException { 3664 Parcel data = Parcel.obtain(); 3665 Parcel reply = Parcel.obtain(); 3666 data.writeInterfaceToken(IActivityManager.descriptor); 3667 data.writeStrongBinder(token); 3668 mRemote.transact(GET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0); 3669 reply.readException(); 3670 int res = reply.readInt(); 3671 data.recycle(); 3672 reply.recycle(); 3673 return res; 3674 } 3675 public ComponentName getActivityClassForToken(IBinder token) 3676 throws RemoteException { 3677 Parcel data = Parcel.obtain(); 3678 Parcel reply = Parcel.obtain(); 3679 data.writeInterfaceToken(IActivityManager.descriptor); 3680 data.writeStrongBinder(token); 3681 mRemote.transact(GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION, data, reply, 0); 3682 reply.readException(); 3683 ComponentName res = ComponentName.readFromParcel(reply); 3684 data.recycle(); 3685 reply.recycle(); 3686 return res; 3687 } 3688 public String getPackageForToken(IBinder token) throws RemoteException 3689 { 3690 Parcel data = Parcel.obtain(); 3691 Parcel reply = Parcel.obtain(); 3692 data.writeInterfaceToken(IActivityManager.descriptor); 3693 data.writeStrongBinder(token); 3694 mRemote.transact(GET_PACKAGE_FOR_TOKEN_TRANSACTION, data, reply, 0); 3695 reply.readException(); 3696 String res = reply.readString(); 3697 data.recycle(); 3698 reply.recycle(); 3699 return res; 3700 } 3701 public IIntentSender getIntentSender(int type, 3702 String packageName, IBinder token, String resultWho, 3703 int requestCode, Intent[] intents, String[] resolvedTypes, int flags, 3704 Bundle options, int userId) throws RemoteException { 3705 Parcel data = Parcel.obtain(); 3706 Parcel reply = Parcel.obtain(); 3707 data.writeInterfaceToken(IActivityManager.descriptor); 3708 data.writeInt(type); 3709 data.writeString(packageName); 3710 data.writeStrongBinder(token); 3711 data.writeString(resultWho); 3712 data.writeInt(requestCode); 3713 if (intents != null) { 3714 data.writeInt(1); 3715 data.writeTypedArray(intents, 0); 3716 data.writeStringArray(resolvedTypes); 3717 } else { 3718 data.writeInt(0); 3719 } 3720 data.writeInt(flags); 3721 if (options != null) { 3722 data.writeInt(1); 3723 options.writeToParcel(data, 0); 3724 } else { 3725 data.writeInt(0); 3726 } 3727 data.writeInt(userId); 3728 mRemote.transact(GET_INTENT_SENDER_TRANSACTION, data, reply, 0); 3729 reply.readException(); 3730 IIntentSender res = IIntentSender.Stub.asInterface( 3731 reply.readStrongBinder()); 3732 data.recycle(); 3733 reply.recycle(); 3734 return res; 3735 } 3736 public void cancelIntentSender(IIntentSender sender) throws RemoteException { 3737 Parcel data = Parcel.obtain(); 3738 Parcel reply = Parcel.obtain(); 3739 data.writeInterfaceToken(IActivityManager.descriptor); 3740 data.writeStrongBinder(sender.asBinder()); 3741 mRemote.transact(CANCEL_INTENT_SENDER_TRANSACTION, data, reply, 0); 3742 reply.readException(); 3743 data.recycle(); 3744 reply.recycle(); 3745 } 3746 public String getPackageForIntentSender(IIntentSender sender) throws RemoteException { 3747 Parcel data = Parcel.obtain(); 3748 Parcel reply = Parcel.obtain(); 3749 data.writeInterfaceToken(IActivityManager.descriptor); 3750 data.writeStrongBinder(sender.asBinder()); 3751 mRemote.transact(GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 3752 reply.readException(); 3753 String res = reply.readString(); 3754 data.recycle(); 3755 reply.recycle(); 3756 return res; 3757 } 3758 public int getUidForIntentSender(IIntentSender sender) throws RemoteException { 3759 Parcel data = Parcel.obtain(); 3760 Parcel reply = Parcel.obtain(); 3761 data.writeInterfaceToken(IActivityManager.descriptor); 3762 data.writeStrongBinder(sender.asBinder()); 3763 mRemote.transact(GET_UID_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 3764 reply.readException(); 3765 int res = reply.readInt(); 3766 data.recycle(); 3767 reply.recycle(); 3768 return res; 3769 } 3770 public int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll, 3771 boolean requireFull, String name, String callerPackage) throws RemoteException { 3772 Parcel data = Parcel.obtain(); 3773 Parcel reply = Parcel.obtain(); 3774 data.writeInterfaceToken(IActivityManager.descriptor); 3775 data.writeInt(callingPid); 3776 data.writeInt(callingUid); 3777 data.writeInt(userId); 3778 data.writeInt(allowAll ? 1 : 0); 3779 data.writeInt(requireFull ? 1 : 0); 3780 data.writeString(name); 3781 data.writeString(callerPackage); 3782 mRemote.transact(HANDLE_INCOMING_USER_TRANSACTION, data, reply, 0); 3783 reply.readException(); 3784 int res = reply.readInt(); 3785 data.recycle(); 3786 reply.recycle(); 3787 return res; 3788 } 3789 public void setProcessLimit(int max) throws RemoteException 3790 { 3791 Parcel data = Parcel.obtain(); 3792 Parcel reply = Parcel.obtain(); 3793 data.writeInterfaceToken(IActivityManager.descriptor); 3794 data.writeInt(max); 3795 mRemote.transact(SET_PROCESS_LIMIT_TRANSACTION, data, reply, 0); 3796 reply.readException(); 3797 data.recycle(); 3798 reply.recycle(); 3799 } 3800 public int getProcessLimit() throws RemoteException 3801 { 3802 Parcel data = Parcel.obtain(); 3803 Parcel reply = Parcel.obtain(); 3804 data.writeInterfaceToken(IActivityManager.descriptor); 3805 mRemote.transact(GET_PROCESS_LIMIT_TRANSACTION, data, reply, 0); 3806 reply.readException(); 3807 int res = reply.readInt(); 3808 data.recycle(); 3809 reply.recycle(); 3810 return res; 3811 } 3812 public void setProcessForeground(IBinder token, int pid, 3813 boolean isForeground) throws RemoteException { 3814 Parcel data = Parcel.obtain(); 3815 Parcel reply = Parcel.obtain(); 3816 data.writeInterfaceToken(IActivityManager.descriptor); 3817 data.writeStrongBinder(token); 3818 data.writeInt(pid); 3819 data.writeInt(isForeground ? 1 : 0); 3820 mRemote.transact(SET_PROCESS_FOREGROUND_TRANSACTION, data, reply, 0); 3821 reply.readException(); 3822 data.recycle(); 3823 reply.recycle(); 3824 } 3825 public int checkPermission(String permission, int pid, int uid) 3826 throws RemoteException { 3827 Parcel data = Parcel.obtain(); 3828 Parcel reply = Parcel.obtain(); 3829 data.writeInterfaceToken(IActivityManager.descriptor); 3830 data.writeString(permission); 3831 data.writeInt(pid); 3832 data.writeInt(uid); 3833 mRemote.transact(CHECK_PERMISSION_TRANSACTION, data, reply, 0); 3834 reply.readException(); 3835 int res = reply.readInt(); 3836 data.recycle(); 3837 reply.recycle(); 3838 return res; 3839 } 3840 public boolean clearApplicationUserData(final String packageName, 3841 final IPackageDataObserver observer, final int userId) throws RemoteException { 3842 Parcel data = Parcel.obtain(); 3843 Parcel reply = Parcel.obtain(); 3844 data.writeInterfaceToken(IActivityManager.descriptor); 3845 data.writeString(packageName); 3846 data.writeStrongBinder((observer != null) ? observer.asBinder() : null); 3847 data.writeInt(userId); 3848 mRemote.transact(CLEAR_APP_DATA_TRANSACTION, data, reply, 0); 3849 reply.readException(); 3850 boolean res = reply.readInt() != 0; 3851 data.recycle(); 3852 reply.recycle(); 3853 return res; 3854 } 3855 public int checkUriPermission(Uri uri, int pid, int uid, int mode, int userId) 3856 throws RemoteException { 3857 Parcel data = Parcel.obtain(); 3858 Parcel reply = Parcel.obtain(); 3859 data.writeInterfaceToken(IActivityManager.descriptor); 3860 uri.writeToParcel(data, 0); 3861 data.writeInt(pid); 3862 data.writeInt(uid); 3863 data.writeInt(mode); 3864 data.writeInt(userId); 3865 mRemote.transact(CHECK_URI_PERMISSION_TRANSACTION, data, reply, 0); 3866 reply.readException(); 3867 int res = reply.readInt(); 3868 data.recycle(); 3869 reply.recycle(); 3870 return res; 3871 } 3872 public void grantUriPermission(IApplicationThread caller, String targetPkg, 3873 Uri uri, int mode, int userId) throws RemoteException { 3874 Parcel data = Parcel.obtain(); 3875 Parcel reply = Parcel.obtain(); 3876 data.writeInterfaceToken(IActivityManager.descriptor); 3877 data.writeStrongBinder(caller.asBinder()); 3878 data.writeString(targetPkg); 3879 uri.writeToParcel(data, 0); 3880 data.writeInt(mode); 3881 data.writeInt(userId); 3882 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 3883 reply.readException(); 3884 data.recycle(); 3885 reply.recycle(); 3886 } 3887 public void revokeUriPermission(IApplicationThread caller, Uri uri, 3888 int mode, int userId) throws RemoteException { 3889 Parcel data = Parcel.obtain(); 3890 Parcel reply = Parcel.obtain(); 3891 data.writeInterfaceToken(IActivityManager.descriptor); 3892 data.writeStrongBinder(caller.asBinder()); 3893 uri.writeToParcel(data, 0); 3894 data.writeInt(mode); 3895 data.writeInt(userId); 3896 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0); 3897 reply.readException(); 3898 data.recycle(); 3899 reply.recycle(); 3900 } 3901 3902 @Override 3903 public void takePersistableUriPermission(Uri uri, int mode, int userId) 3904 throws RemoteException { 3905 Parcel data = Parcel.obtain(); 3906 Parcel reply = Parcel.obtain(); 3907 data.writeInterfaceToken(IActivityManager.descriptor); 3908 uri.writeToParcel(data, 0); 3909 data.writeInt(mode); 3910 data.writeInt(userId); 3911 mRemote.transact(TAKE_PERSISTABLE_URI_PERMISSION_TRANSACTION, data, reply, 0); 3912 reply.readException(); 3913 data.recycle(); 3914 reply.recycle(); 3915 } 3916 3917 @Override 3918 public void releasePersistableUriPermission(Uri uri, int mode, int userId) 3919 throws RemoteException { 3920 Parcel data = Parcel.obtain(); 3921 Parcel reply = Parcel.obtain(); 3922 data.writeInterfaceToken(IActivityManager.descriptor); 3923 uri.writeToParcel(data, 0); 3924 data.writeInt(mode); 3925 data.writeInt(userId); 3926 mRemote.transact(RELEASE_PERSISTABLE_URI_PERMISSION_TRANSACTION, data, reply, 0); 3927 reply.readException(); 3928 data.recycle(); 3929 reply.recycle(); 3930 } 3931 3932 @Override 3933 public ParceledListSlice<UriPermission> getPersistedUriPermissions( 3934 String packageName, boolean incoming) throws RemoteException { 3935 Parcel data = Parcel.obtain(); 3936 Parcel reply = Parcel.obtain(); 3937 data.writeInterfaceToken(IActivityManager.descriptor); 3938 data.writeString(packageName); 3939 data.writeInt(incoming ? 1 : 0); 3940 mRemote.transact(GET_PERSISTED_URI_PERMISSIONS_TRANSACTION, data, reply, 0); 3941 reply.readException(); 3942 final ParceledListSlice<UriPermission> perms = ParceledListSlice.CREATOR.createFromParcel( 3943 reply); 3944 data.recycle(); 3945 reply.recycle(); 3946 return perms; 3947 } 3948 3949 public void showWaitingForDebugger(IApplicationThread who, boolean waiting) 3950 throws RemoteException { 3951 Parcel data = Parcel.obtain(); 3952 Parcel reply = Parcel.obtain(); 3953 data.writeInterfaceToken(IActivityManager.descriptor); 3954 data.writeStrongBinder(who.asBinder()); 3955 data.writeInt(waiting ? 1 : 0); 3956 mRemote.transact(SHOW_WAITING_FOR_DEBUGGER_TRANSACTION, data, reply, 0); 3957 reply.readException(); 3958 data.recycle(); 3959 reply.recycle(); 3960 } 3961 public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) throws RemoteException { 3962 Parcel data = Parcel.obtain(); 3963 Parcel reply = Parcel.obtain(); 3964 data.writeInterfaceToken(IActivityManager.descriptor); 3965 mRemote.transact(GET_MEMORY_INFO_TRANSACTION, data, reply, 0); 3966 reply.readException(); 3967 outInfo.readFromParcel(reply); 3968 data.recycle(); 3969 reply.recycle(); 3970 } 3971 public void unhandledBack() throws RemoteException 3972 { 3973 Parcel data = Parcel.obtain(); 3974 Parcel reply = Parcel.obtain(); 3975 data.writeInterfaceToken(IActivityManager.descriptor); 3976 mRemote.transact(UNHANDLED_BACK_TRANSACTION, data, reply, 0); 3977 reply.readException(); 3978 data.recycle(); 3979 reply.recycle(); 3980 } 3981 public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException 3982 { 3983 Parcel data = Parcel.obtain(); 3984 Parcel reply = Parcel.obtain(); 3985 data.writeInterfaceToken(IActivityManager.descriptor); 3986 mRemote.transact(OPEN_CONTENT_URI_TRANSACTION, data, reply, 0); 3987 reply.readException(); 3988 ParcelFileDescriptor pfd = null; 3989 if (reply.readInt() != 0) { 3990 pfd = ParcelFileDescriptor.CREATOR.createFromParcel(reply); 3991 } 3992 data.recycle(); 3993 reply.recycle(); 3994 return pfd; 3995 } 3996 public void setLockScreenShown(boolean shown) throws RemoteException 3997 { 3998 Parcel data = Parcel.obtain(); 3999 Parcel reply = Parcel.obtain(); 4000 data.writeInterfaceToken(IActivityManager.descriptor); 4001 data.writeInt(shown ? 1 : 0); 4002 mRemote.transact(SET_LOCK_SCREEN_SHOWN_TRANSACTION, data, reply, 0); 4003 reply.readException(); 4004 data.recycle(); 4005 reply.recycle(); 4006 } 4007 public void setDebugApp( 4008 String packageName, boolean waitForDebugger, boolean persistent) 4009 throws RemoteException 4010 { 4011 Parcel data = Parcel.obtain(); 4012 Parcel reply = Parcel.obtain(); 4013 data.writeInterfaceToken(IActivityManager.descriptor); 4014 data.writeString(packageName); 4015 data.writeInt(waitForDebugger ? 1 : 0); 4016 data.writeInt(persistent ? 1 : 0); 4017 mRemote.transact(SET_DEBUG_APP_TRANSACTION, data, reply, 0); 4018 reply.readException(); 4019 data.recycle(); 4020 reply.recycle(); 4021 } 4022 public void setAlwaysFinish(boolean enabled) throws RemoteException 4023 { 4024 Parcel data = Parcel.obtain(); 4025 Parcel reply = Parcel.obtain(); 4026 data.writeInterfaceToken(IActivityManager.descriptor); 4027 data.writeInt(enabled ? 1 : 0); 4028 mRemote.transact(SET_ALWAYS_FINISH_TRANSACTION, data, reply, 0); 4029 reply.readException(); 4030 data.recycle(); 4031 reply.recycle(); 4032 } 4033 public void setActivityController(IActivityController watcher) throws RemoteException 4034 { 4035 Parcel data = Parcel.obtain(); 4036 Parcel reply = Parcel.obtain(); 4037 data.writeInterfaceToken(IActivityManager.descriptor); 4038 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null); 4039 mRemote.transact(SET_ACTIVITY_CONTROLLER_TRANSACTION, data, reply, 0); 4040 reply.readException(); 4041 data.recycle(); 4042 reply.recycle(); 4043 } 4044 public void enterSafeMode() throws RemoteException { 4045 Parcel data = Parcel.obtain(); 4046 data.writeInterfaceToken(IActivityManager.descriptor); 4047 mRemote.transact(ENTER_SAFE_MODE_TRANSACTION, data, null, 0); 4048 data.recycle(); 4049 } 4050 public void noteWakeupAlarm(IIntentSender sender, int sourceUid, String sourcePkg) 4051 throws RemoteException { 4052 Parcel data = Parcel.obtain(); 4053 data.writeInterfaceToken(IActivityManager.descriptor); 4054 data.writeStrongBinder(sender.asBinder()); 4055 data.writeInt(sourceUid); 4056 data.writeString(sourcePkg); 4057 mRemote.transact(NOTE_WAKEUP_ALARM_TRANSACTION, data, null, 0); 4058 data.recycle(); 4059 } 4060 public boolean killPids(int[] pids, String reason, boolean secure) throws RemoteException { 4061 Parcel data = Parcel.obtain(); 4062 Parcel reply = Parcel.obtain(); 4063 data.writeInterfaceToken(IActivityManager.descriptor); 4064 data.writeIntArray(pids); 4065 data.writeString(reason); 4066 data.writeInt(secure ? 1 : 0); 4067 mRemote.transact(KILL_PIDS_TRANSACTION, data, reply, 0); 4068 reply.readException(); 4069 boolean res = reply.readInt() != 0; 4070 data.recycle(); 4071 reply.recycle(); 4072 return res; 4073 } 4074 @Override 4075 public boolean killProcessesBelowForeground(String reason) throws RemoteException { 4076 Parcel data = Parcel.obtain(); 4077 Parcel reply = Parcel.obtain(); 4078 data.writeInterfaceToken(IActivityManager.descriptor); 4079 data.writeString(reason); 4080 mRemote.transact(KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION, data, reply, 0); 4081 boolean res = reply.readInt() != 0; 4082 data.recycle(); 4083 reply.recycle(); 4084 return res; 4085 } 4086 public boolean testIsSystemReady() 4087 { 4088 /* this base class version is never called */ 4089 return true; 4090 } 4091 public void handleApplicationCrash(IBinder app, 4092 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException 4093 { 4094 Parcel data = Parcel.obtain(); 4095 Parcel reply = Parcel.obtain(); 4096 data.writeInterfaceToken(IActivityManager.descriptor); 4097 data.writeStrongBinder(app); 4098 crashInfo.writeToParcel(data, 0); 4099 mRemote.transact(HANDLE_APPLICATION_CRASH_TRANSACTION, data, reply, 0); 4100 reply.readException(); 4101 reply.recycle(); 4102 data.recycle(); 4103 } 4104 4105 public boolean handleApplicationWtf(IBinder app, String tag, boolean system, 4106 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException 4107 { 4108 Parcel data = Parcel.obtain(); 4109 Parcel reply = Parcel.obtain(); 4110 data.writeInterfaceToken(IActivityManager.descriptor); 4111 data.writeStrongBinder(app); 4112 data.writeString(tag); 4113 data.writeInt(system ? 1 : 0); 4114 crashInfo.writeToParcel(data, 0); 4115 mRemote.transact(HANDLE_APPLICATION_WTF_TRANSACTION, data, reply, 0); 4116 reply.readException(); 4117 boolean res = reply.readInt() != 0; 4118 reply.recycle(); 4119 data.recycle(); 4120 return res; 4121 } 4122 4123 public void handleApplicationStrictModeViolation(IBinder app, 4124 int violationMask, 4125 StrictMode.ViolationInfo info) throws RemoteException 4126 { 4127 Parcel data = Parcel.obtain(); 4128 Parcel reply = Parcel.obtain(); 4129 data.writeInterfaceToken(IActivityManager.descriptor); 4130 data.writeStrongBinder(app); 4131 data.writeInt(violationMask); 4132 info.writeToParcel(data, 0); 4133 mRemote.transact(HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION, data, reply, 0); 4134 reply.readException(); 4135 reply.recycle(); 4136 data.recycle(); 4137 } 4138 4139 public void signalPersistentProcesses(int sig) throws RemoteException { 4140 Parcel data = Parcel.obtain(); 4141 Parcel reply = Parcel.obtain(); 4142 data.writeInterfaceToken(IActivityManager.descriptor); 4143 data.writeInt(sig); 4144 mRemote.transact(SIGNAL_PERSISTENT_PROCESSES_TRANSACTION, data, reply, 0); 4145 reply.readException(); 4146 data.recycle(); 4147 reply.recycle(); 4148 } 4149 4150 public void killBackgroundProcesses(String packageName, int userId) throws RemoteException { 4151 Parcel data = Parcel.obtain(); 4152 Parcel reply = Parcel.obtain(); 4153 data.writeInterfaceToken(IActivityManager.descriptor); 4154 data.writeString(packageName); 4155 data.writeInt(userId); 4156 mRemote.transact(KILL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0); 4157 reply.readException(); 4158 data.recycle(); 4159 reply.recycle(); 4160 } 4161 4162 public void killAllBackgroundProcesses() throws RemoteException { 4163 Parcel data = Parcel.obtain(); 4164 Parcel reply = Parcel.obtain(); 4165 data.writeInterfaceToken(IActivityManager.descriptor); 4166 mRemote.transact(KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0); 4167 reply.readException(); 4168 data.recycle(); 4169 reply.recycle(); 4170 } 4171 4172 public void forceStopPackage(String packageName, int userId) throws RemoteException { 4173 Parcel data = Parcel.obtain(); 4174 Parcel reply = Parcel.obtain(); 4175 data.writeInterfaceToken(IActivityManager.descriptor); 4176 data.writeString(packageName); 4177 data.writeInt(userId); 4178 mRemote.transact(FORCE_STOP_PACKAGE_TRANSACTION, data, reply, 0); 4179 reply.readException(); 4180 data.recycle(); 4181 reply.recycle(); 4182 } 4183 4184 public void getMyMemoryState(ActivityManager.RunningAppProcessInfo outInfo) 4185 throws RemoteException 4186 { 4187 Parcel data = Parcel.obtain(); 4188 Parcel reply = Parcel.obtain(); 4189 data.writeInterfaceToken(IActivityManager.descriptor); 4190 mRemote.transact(GET_MY_MEMORY_STATE_TRANSACTION, data, reply, 0); 4191 reply.readException(); 4192 outInfo.readFromParcel(reply); 4193 reply.recycle(); 4194 data.recycle(); 4195 } 4196 4197 public ConfigurationInfo getDeviceConfigurationInfo() throws RemoteException 4198 { 4199 Parcel data = Parcel.obtain(); 4200 Parcel reply = Parcel.obtain(); 4201 data.writeInterfaceToken(IActivityManager.descriptor); 4202 mRemote.transact(GET_DEVICE_CONFIGURATION_TRANSACTION, data, reply, 0); 4203 reply.readException(); 4204 ConfigurationInfo res = ConfigurationInfo.CREATOR.createFromParcel(reply); 4205 reply.recycle(); 4206 data.recycle(); 4207 return res; 4208 } 4209 4210 public boolean profileControl(String process, int userId, boolean start, 4211 ProfilerInfo profilerInfo, int profileType) throws RemoteException 4212 { 4213 Parcel data = Parcel.obtain(); 4214 Parcel reply = Parcel.obtain(); 4215 data.writeInterfaceToken(IActivityManager.descriptor); 4216 data.writeString(process); 4217 data.writeInt(userId); 4218 data.writeInt(start ? 1 : 0); 4219 data.writeInt(profileType); 4220 if (profilerInfo != null) { 4221 data.writeInt(1); 4222 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 4223 } else { 4224 data.writeInt(0); 4225 } 4226 mRemote.transact(PROFILE_CONTROL_TRANSACTION, data, reply, 0); 4227 reply.readException(); 4228 boolean res = reply.readInt() != 0; 4229 reply.recycle(); 4230 data.recycle(); 4231 return res; 4232 } 4233 4234 public boolean shutdown(int timeout) throws RemoteException 4235 { 4236 Parcel data = Parcel.obtain(); 4237 Parcel reply = Parcel.obtain(); 4238 data.writeInterfaceToken(IActivityManager.descriptor); 4239 data.writeInt(timeout); 4240 mRemote.transact(SHUTDOWN_TRANSACTION, data, reply, 0); 4241 reply.readException(); 4242 boolean res = reply.readInt() != 0; 4243 reply.recycle(); 4244 data.recycle(); 4245 return res; 4246 } 4247 4248 public void stopAppSwitches() throws RemoteException { 4249 Parcel data = Parcel.obtain(); 4250 Parcel reply = Parcel.obtain(); 4251 data.writeInterfaceToken(IActivityManager.descriptor); 4252 mRemote.transact(STOP_APP_SWITCHES_TRANSACTION, data, reply, 0); 4253 reply.readException(); 4254 reply.recycle(); 4255 data.recycle(); 4256 } 4257 4258 public void resumeAppSwitches() throws RemoteException { 4259 Parcel data = Parcel.obtain(); 4260 Parcel reply = Parcel.obtain(); 4261 data.writeInterfaceToken(IActivityManager.descriptor); 4262 mRemote.transact(RESUME_APP_SWITCHES_TRANSACTION, data, reply, 0); 4263 reply.readException(); 4264 reply.recycle(); 4265 data.recycle(); 4266 } 4267 4268 public void addPackageDependency(String packageName) throws RemoteException { 4269 Parcel data = Parcel.obtain(); 4270 Parcel reply = Parcel.obtain(); 4271 data.writeInterfaceToken(IActivityManager.descriptor); 4272 data.writeString(packageName); 4273 mRemote.transact(ADD_PACKAGE_DEPENDENCY_TRANSACTION, data, reply, 0); 4274 reply.readException(); 4275 data.recycle(); 4276 reply.recycle(); 4277 } 4278 4279 public void killApplicationWithAppId(String pkg, int appid, String reason) 4280 throws RemoteException { 4281 Parcel data = Parcel.obtain(); 4282 Parcel reply = Parcel.obtain(); 4283 data.writeInterfaceToken(IActivityManager.descriptor); 4284 data.writeString(pkg); 4285 data.writeInt(appid); 4286 data.writeString(reason); 4287 mRemote.transact(KILL_APPLICATION_WITH_APPID_TRANSACTION, data, reply, 0); 4288 reply.readException(); 4289 data.recycle(); 4290 reply.recycle(); 4291 } 4292 4293 public void closeSystemDialogs(String reason) throws RemoteException { 4294 Parcel data = Parcel.obtain(); 4295 Parcel reply = Parcel.obtain(); 4296 data.writeInterfaceToken(IActivityManager.descriptor); 4297 data.writeString(reason); 4298 mRemote.transact(CLOSE_SYSTEM_DIALOGS_TRANSACTION, data, reply, 0); 4299 reply.readException(); 4300 data.recycle(); 4301 reply.recycle(); 4302 } 4303 4304 public Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids) 4305 throws RemoteException { 4306 Parcel data = Parcel.obtain(); 4307 Parcel reply = Parcel.obtain(); 4308 data.writeInterfaceToken(IActivityManager.descriptor); 4309 data.writeIntArray(pids); 4310 mRemote.transact(GET_PROCESS_MEMORY_INFO_TRANSACTION, data, reply, 0); 4311 reply.readException(); 4312 Debug.MemoryInfo[] res = reply.createTypedArray(Debug.MemoryInfo.CREATOR); 4313 data.recycle(); 4314 reply.recycle(); 4315 return res; 4316 } 4317 4318 public void killApplicationProcess(String processName, int uid) throws RemoteException { 4319 Parcel data = Parcel.obtain(); 4320 Parcel reply = Parcel.obtain(); 4321 data.writeInterfaceToken(IActivityManager.descriptor); 4322 data.writeString(processName); 4323 data.writeInt(uid); 4324 mRemote.transact(KILL_APPLICATION_PROCESS_TRANSACTION, data, reply, 0); 4325 reply.readException(); 4326 data.recycle(); 4327 reply.recycle(); 4328 } 4329 4330 public void overridePendingTransition(IBinder token, String packageName, 4331 int enterAnim, int exitAnim) throws RemoteException { 4332 Parcel data = Parcel.obtain(); 4333 Parcel reply = Parcel.obtain(); 4334 data.writeInterfaceToken(IActivityManager.descriptor); 4335 data.writeStrongBinder(token); 4336 data.writeString(packageName); 4337 data.writeInt(enterAnim); 4338 data.writeInt(exitAnim); 4339 mRemote.transact(OVERRIDE_PENDING_TRANSITION_TRANSACTION, data, reply, 0); 4340 reply.readException(); 4341 data.recycle(); 4342 reply.recycle(); 4343 } 4344 4345 public boolean isUserAMonkey() throws RemoteException { 4346 Parcel data = Parcel.obtain(); 4347 Parcel reply = Parcel.obtain(); 4348 data.writeInterfaceToken(IActivityManager.descriptor); 4349 mRemote.transact(IS_USER_A_MONKEY_TRANSACTION, data, reply, 0); 4350 reply.readException(); 4351 boolean res = reply.readInt() != 0; 4352 data.recycle(); 4353 reply.recycle(); 4354 return res; 4355 } 4356 4357 public void setUserIsMonkey(boolean monkey) throws RemoteException { 4358 Parcel data = Parcel.obtain(); 4359 Parcel reply = Parcel.obtain(); 4360 data.writeInterfaceToken(IActivityManager.descriptor); 4361 data.writeInt(monkey ? 1 : 0); 4362 mRemote.transact(SET_USER_IS_MONKEY_TRANSACTION, data, reply, 0); 4363 reply.readException(); 4364 data.recycle(); 4365 reply.recycle(); 4366 } 4367 4368 public void finishHeavyWeightApp() throws RemoteException { 4369 Parcel data = Parcel.obtain(); 4370 Parcel reply = Parcel.obtain(); 4371 data.writeInterfaceToken(IActivityManager.descriptor); 4372 mRemote.transact(FINISH_HEAVY_WEIGHT_APP_TRANSACTION, data, reply, 0); 4373 reply.readException(); 4374 data.recycle(); 4375 reply.recycle(); 4376 } 4377 4378 public boolean convertFromTranslucent(IBinder token) 4379 throws RemoteException { 4380 Parcel data = Parcel.obtain(); 4381 Parcel reply = Parcel.obtain(); 4382 data.writeInterfaceToken(IActivityManager.descriptor); 4383 data.writeStrongBinder(token); 4384 mRemote.transact(CONVERT_FROM_TRANSLUCENT_TRANSACTION, data, reply, 0); 4385 reply.readException(); 4386 boolean res = reply.readInt() != 0; 4387 data.recycle(); 4388 reply.recycle(); 4389 return res; 4390 } 4391 4392 public boolean convertToTranslucent(IBinder token, ActivityOptions options) 4393 throws RemoteException { 4394 Parcel data = Parcel.obtain(); 4395 Parcel reply = Parcel.obtain(); 4396 data.writeInterfaceToken(IActivityManager.descriptor); 4397 data.writeStrongBinder(token); 4398 if (options == null) { 4399 data.writeInt(0); 4400 } else { 4401 data.writeInt(1); 4402 data.writeBundle(options.toBundle()); 4403 } 4404 mRemote.transact(CONVERT_TO_TRANSLUCENT_TRANSACTION, data, reply, 0); 4405 reply.readException(); 4406 boolean res = reply.readInt() != 0; 4407 data.recycle(); 4408 reply.recycle(); 4409 return res; 4410 } 4411 4412 public ActivityOptions getActivityOptions(IBinder token) throws RemoteException { 4413 Parcel data = Parcel.obtain(); 4414 Parcel reply = Parcel.obtain(); 4415 data.writeInterfaceToken(IActivityManager.descriptor); 4416 data.writeStrongBinder(token); 4417 mRemote.transact(GET_ACTIVITY_OPTIONS_TRANSACTION, data, reply, 0); 4418 reply.readException(); 4419 Bundle bundle = reply.readBundle(); 4420 ActivityOptions options = bundle == null ? null : new ActivityOptions(bundle); 4421 data.recycle(); 4422 reply.recycle(); 4423 return options; 4424 } 4425 4426 public void setImmersive(IBinder token, boolean immersive) 4427 throws RemoteException { 4428 Parcel data = Parcel.obtain(); 4429 Parcel reply = Parcel.obtain(); 4430 data.writeInterfaceToken(IActivityManager.descriptor); 4431 data.writeStrongBinder(token); 4432 data.writeInt(immersive ? 1 : 0); 4433 mRemote.transact(SET_IMMERSIVE_TRANSACTION, data, reply, 0); 4434 reply.readException(); 4435 data.recycle(); 4436 reply.recycle(); 4437 } 4438 4439 public boolean isImmersive(IBinder token) 4440 throws RemoteException { 4441 Parcel data = Parcel.obtain(); 4442 Parcel reply = Parcel.obtain(); 4443 data.writeInterfaceToken(IActivityManager.descriptor); 4444 data.writeStrongBinder(token); 4445 mRemote.transact(IS_IMMERSIVE_TRANSACTION, data, reply, 0); 4446 reply.readException(); 4447 boolean res = reply.readInt() == 1; 4448 data.recycle(); 4449 reply.recycle(); 4450 return res; 4451 } 4452 4453 public boolean isTopOfTask(IBinder token) throws RemoteException { 4454 Parcel data = Parcel.obtain(); 4455 Parcel reply = Parcel.obtain(); 4456 data.writeInterfaceToken(IActivityManager.descriptor); 4457 data.writeStrongBinder(token); 4458 mRemote.transact(IS_TOP_OF_TASK_TRANSACTION, data, reply, 0); 4459 reply.readException(); 4460 boolean res = reply.readInt() == 1; 4461 data.recycle(); 4462 reply.recycle(); 4463 return res; 4464 } 4465 4466 public boolean isTopActivityImmersive() 4467 throws RemoteException { 4468 Parcel data = Parcel.obtain(); 4469 Parcel reply = Parcel.obtain(); 4470 data.writeInterfaceToken(IActivityManager.descriptor); 4471 mRemote.transact(IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION, data, reply, 0); 4472 reply.readException(); 4473 boolean res = reply.readInt() == 1; 4474 data.recycle(); 4475 reply.recycle(); 4476 return res; 4477 } 4478 4479 public void crashApplication(int uid, int initialPid, String packageName, 4480 String message) throws RemoteException { 4481 Parcel data = Parcel.obtain(); 4482 Parcel reply = Parcel.obtain(); 4483 data.writeInterfaceToken(IActivityManager.descriptor); 4484 data.writeInt(uid); 4485 data.writeInt(initialPid); 4486 data.writeString(packageName); 4487 data.writeString(message); 4488 mRemote.transact(CRASH_APPLICATION_TRANSACTION, data, reply, 0); 4489 reply.readException(); 4490 data.recycle(); 4491 reply.recycle(); 4492 } 4493 4494 public String getProviderMimeType(Uri uri, int userId) throws RemoteException { 4495 Parcel data = Parcel.obtain(); 4496 Parcel reply = Parcel.obtain(); 4497 data.writeInterfaceToken(IActivityManager.descriptor); 4498 uri.writeToParcel(data, 0); 4499 data.writeInt(userId); 4500 mRemote.transact(GET_PROVIDER_MIME_TYPE_TRANSACTION, data, reply, 0); 4501 reply.readException(); 4502 String res = reply.readString(); 4503 data.recycle(); 4504 reply.recycle(); 4505 return res; 4506 } 4507 4508 public IBinder newUriPermissionOwner(String name) 4509 throws RemoteException { 4510 Parcel data = Parcel.obtain(); 4511 Parcel reply = Parcel.obtain(); 4512 data.writeInterfaceToken(IActivityManager.descriptor); 4513 data.writeString(name); 4514 mRemote.transact(NEW_URI_PERMISSION_OWNER_TRANSACTION, data, reply, 0); 4515 reply.readException(); 4516 IBinder res = reply.readStrongBinder(); 4517 data.recycle(); 4518 reply.recycle(); 4519 return res; 4520 } 4521 4522 public void grantUriPermissionFromOwner(IBinder owner, int fromUid, String targetPkg, 4523 Uri uri, int mode, int sourceUserId, int targetUserId) throws RemoteException { 4524 Parcel data = Parcel.obtain(); 4525 Parcel reply = Parcel.obtain(); 4526 data.writeInterfaceToken(IActivityManager.descriptor); 4527 data.writeStrongBinder(owner); 4528 data.writeInt(fromUid); 4529 data.writeString(targetPkg); 4530 uri.writeToParcel(data, 0); 4531 data.writeInt(mode); 4532 data.writeInt(sourceUserId); 4533 data.writeInt(targetUserId); 4534 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 4535 reply.readException(); 4536 data.recycle(); 4537 reply.recycle(); 4538 } 4539 4540 public void revokeUriPermissionFromOwner(IBinder owner, Uri uri, 4541 int mode, int userId) throws RemoteException { 4542 Parcel data = Parcel.obtain(); 4543 Parcel reply = Parcel.obtain(); 4544 data.writeInterfaceToken(IActivityManager.descriptor); 4545 data.writeStrongBinder(owner); 4546 if (uri != null) { 4547 data.writeInt(1); 4548 uri.writeToParcel(data, 0); 4549 } else { 4550 data.writeInt(0); 4551 } 4552 data.writeInt(mode); 4553 data.writeInt(userId); 4554 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0); 4555 reply.readException(); 4556 data.recycle(); 4557 reply.recycle(); 4558 } 4559 4560 public int checkGrantUriPermission(int callingUid, String targetPkg, 4561 Uri uri, int modeFlags, int userId) throws RemoteException { 4562 Parcel data = Parcel.obtain(); 4563 Parcel reply = Parcel.obtain(); 4564 data.writeInterfaceToken(IActivityManager.descriptor); 4565 data.writeInt(callingUid); 4566 data.writeString(targetPkg); 4567 uri.writeToParcel(data, 0); 4568 data.writeInt(modeFlags); 4569 data.writeInt(userId); 4570 mRemote.transact(CHECK_GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 4571 reply.readException(); 4572 int res = reply.readInt(); 4573 data.recycle(); 4574 reply.recycle(); 4575 return res; 4576 } 4577 4578 public boolean dumpHeap(String process, int userId, boolean managed, 4579 String path, ParcelFileDescriptor fd) throws RemoteException { 4580 Parcel data = Parcel.obtain(); 4581 Parcel reply = Parcel.obtain(); 4582 data.writeInterfaceToken(IActivityManager.descriptor); 4583 data.writeString(process); 4584 data.writeInt(userId); 4585 data.writeInt(managed ? 1 : 0); 4586 data.writeString(path); 4587 if (fd != null) { 4588 data.writeInt(1); 4589 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 4590 } else { 4591 data.writeInt(0); 4592 } 4593 mRemote.transact(DUMP_HEAP_TRANSACTION, data, reply, 0); 4594 reply.readException(); 4595 boolean res = reply.readInt() != 0; 4596 reply.recycle(); 4597 data.recycle(); 4598 return res; 4599 } 4600 4601 public int startActivities(IApplicationThread caller, String callingPackage, 4602 Intent[] intents, String[] resolvedTypes, IBinder resultTo, 4603 Bundle options, int userId) throws RemoteException { 4604 Parcel data = Parcel.obtain(); 4605 Parcel reply = Parcel.obtain(); 4606 data.writeInterfaceToken(IActivityManager.descriptor); 4607 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 4608 data.writeString(callingPackage); 4609 data.writeTypedArray(intents, 0); 4610 data.writeStringArray(resolvedTypes); 4611 data.writeStrongBinder(resultTo); 4612 if (options != null) { 4613 data.writeInt(1); 4614 options.writeToParcel(data, 0); 4615 } else { 4616 data.writeInt(0); 4617 } 4618 data.writeInt(userId); 4619 mRemote.transact(START_ACTIVITIES_TRANSACTION, data, reply, 0); 4620 reply.readException(); 4621 int result = reply.readInt(); 4622 reply.recycle(); 4623 data.recycle(); 4624 return result; 4625 } 4626 4627 public int getFrontActivityScreenCompatMode() throws RemoteException { 4628 Parcel data = Parcel.obtain(); 4629 Parcel reply = Parcel.obtain(); 4630 data.writeInterfaceToken(IActivityManager.descriptor); 4631 mRemote.transact(GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4632 reply.readException(); 4633 int mode = reply.readInt(); 4634 reply.recycle(); 4635 data.recycle(); 4636 return mode; 4637 } 4638 4639 public void setFrontActivityScreenCompatMode(int mode) throws RemoteException { 4640 Parcel data = Parcel.obtain(); 4641 Parcel reply = Parcel.obtain(); 4642 data.writeInterfaceToken(IActivityManager.descriptor); 4643 data.writeInt(mode); 4644 mRemote.transact(SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4645 reply.readException(); 4646 reply.recycle(); 4647 data.recycle(); 4648 } 4649 4650 public int getPackageScreenCompatMode(String packageName) throws RemoteException { 4651 Parcel data = Parcel.obtain(); 4652 Parcel reply = Parcel.obtain(); 4653 data.writeInterfaceToken(IActivityManager.descriptor); 4654 data.writeString(packageName); 4655 mRemote.transact(GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4656 reply.readException(); 4657 int mode = reply.readInt(); 4658 reply.recycle(); 4659 data.recycle(); 4660 return mode; 4661 } 4662 4663 public void setPackageScreenCompatMode(String packageName, int mode) 4664 throws RemoteException { 4665 Parcel data = Parcel.obtain(); 4666 Parcel reply = Parcel.obtain(); 4667 data.writeInterfaceToken(IActivityManager.descriptor); 4668 data.writeString(packageName); 4669 data.writeInt(mode); 4670 mRemote.transact(SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4671 reply.readException(); 4672 reply.recycle(); 4673 data.recycle(); 4674 } 4675 4676 public boolean getPackageAskScreenCompat(String packageName) throws RemoteException { 4677 Parcel data = Parcel.obtain(); 4678 Parcel reply = Parcel.obtain(); 4679 data.writeInterfaceToken(IActivityManager.descriptor); 4680 data.writeString(packageName); 4681 mRemote.transact(GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0); 4682 reply.readException(); 4683 boolean ask = reply.readInt() != 0; 4684 reply.recycle(); 4685 data.recycle(); 4686 return ask; 4687 } 4688 4689 public void setPackageAskScreenCompat(String packageName, boolean ask) 4690 throws RemoteException { 4691 Parcel data = Parcel.obtain(); 4692 Parcel reply = Parcel.obtain(); 4693 data.writeInterfaceToken(IActivityManager.descriptor); 4694 data.writeString(packageName); 4695 data.writeInt(ask ? 1 : 0); 4696 mRemote.transact(SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0); 4697 reply.readException(); 4698 reply.recycle(); 4699 data.recycle(); 4700 } 4701 4702 public boolean switchUser(int userid) throws RemoteException { 4703 Parcel data = Parcel.obtain(); 4704 Parcel reply = Parcel.obtain(); 4705 data.writeInterfaceToken(IActivityManager.descriptor); 4706 data.writeInt(userid); 4707 mRemote.transact(SWITCH_USER_TRANSACTION, data, reply, 0); 4708 reply.readException(); 4709 boolean result = reply.readInt() != 0; 4710 reply.recycle(); 4711 data.recycle(); 4712 return result; 4713 } 4714 4715 public boolean startUserInBackground(int userid) throws RemoteException { 4716 Parcel data = Parcel.obtain(); 4717 Parcel reply = Parcel.obtain(); 4718 data.writeInterfaceToken(IActivityManager.descriptor); 4719 data.writeInt(userid); 4720 mRemote.transact(START_USER_IN_BACKGROUND_TRANSACTION, data, reply, 0); 4721 reply.readException(); 4722 boolean result = reply.readInt() != 0; 4723 reply.recycle(); 4724 data.recycle(); 4725 return result; 4726 } 4727 4728 public int stopUser(int userid, IStopUserCallback callback) throws RemoteException { 4729 Parcel data = Parcel.obtain(); 4730 Parcel reply = Parcel.obtain(); 4731 data.writeInterfaceToken(IActivityManager.descriptor); 4732 data.writeInt(userid); 4733 data.writeStrongInterface(callback); 4734 mRemote.transact(STOP_USER_TRANSACTION, data, reply, 0); 4735 reply.readException(); 4736 int result = reply.readInt(); 4737 reply.recycle(); 4738 data.recycle(); 4739 return result; 4740 } 4741 4742 public UserInfo getCurrentUser() throws RemoteException { 4743 Parcel data = Parcel.obtain(); 4744 Parcel reply = Parcel.obtain(); 4745 data.writeInterfaceToken(IActivityManager.descriptor); 4746 mRemote.transact(GET_CURRENT_USER_TRANSACTION, data, reply, 0); 4747 reply.readException(); 4748 UserInfo userInfo = UserInfo.CREATOR.createFromParcel(reply); 4749 reply.recycle(); 4750 data.recycle(); 4751 return userInfo; 4752 } 4753 4754 public boolean isUserRunning(int userid, boolean orStopping) throws RemoteException { 4755 Parcel data = Parcel.obtain(); 4756 Parcel reply = Parcel.obtain(); 4757 data.writeInterfaceToken(IActivityManager.descriptor); 4758 data.writeInt(userid); 4759 data.writeInt(orStopping ? 1 : 0); 4760 mRemote.transact(IS_USER_RUNNING_TRANSACTION, data, reply, 0); 4761 reply.readException(); 4762 boolean result = reply.readInt() != 0; 4763 reply.recycle(); 4764 data.recycle(); 4765 return result; 4766 } 4767 4768 public int[] getRunningUserIds() throws RemoteException { 4769 Parcel data = Parcel.obtain(); 4770 Parcel reply = Parcel.obtain(); 4771 data.writeInterfaceToken(IActivityManager.descriptor); 4772 mRemote.transact(GET_RUNNING_USER_IDS_TRANSACTION, data, reply, 0); 4773 reply.readException(); 4774 int[] result = reply.createIntArray(); 4775 reply.recycle(); 4776 data.recycle(); 4777 return result; 4778 } 4779 4780 public boolean removeTask(int taskId) throws RemoteException { 4781 Parcel data = Parcel.obtain(); 4782 Parcel reply = Parcel.obtain(); 4783 data.writeInterfaceToken(IActivityManager.descriptor); 4784 data.writeInt(taskId); 4785 mRemote.transact(REMOVE_TASK_TRANSACTION, data, reply, 0); 4786 reply.readException(); 4787 boolean result = reply.readInt() != 0; 4788 reply.recycle(); 4789 data.recycle(); 4790 return result; 4791 } 4792 4793 public void registerProcessObserver(IProcessObserver observer) throws RemoteException { 4794 Parcel data = Parcel.obtain(); 4795 Parcel reply = Parcel.obtain(); 4796 data.writeInterfaceToken(IActivityManager.descriptor); 4797 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 4798 mRemote.transact(REGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0); 4799 reply.readException(); 4800 data.recycle(); 4801 reply.recycle(); 4802 } 4803 4804 public void unregisterProcessObserver(IProcessObserver observer) throws RemoteException { 4805 Parcel data = Parcel.obtain(); 4806 Parcel reply = Parcel.obtain(); 4807 data.writeInterfaceToken(IActivityManager.descriptor); 4808 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 4809 mRemote.transact(UNREGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0); 4810 reply.readException(); 4811 data.recycle(); 4812 reply.recycle(); 4813 } 4814 4815 public boolean isIntentSenderTargetedToPackage(IIntentSender sender) throws RemoteException { 4816 Parcel data = Parcel.obtain(); 4817 Parcel reply = Parcel.obtain(); 4818 data.writeInterfaceToken(IActivityManager.descriptor); 4819 data.writeStrongBinder(sender.asBinder()); 4820 mRemote.transact(IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION, data, reply, 0); 4821 reply.readException(); 4822 boolean res = reply.readInt() != 0; 4823 data.recycle(); 4824 reply.recycle(); 4825 return res; 4826 } 4827 4828 public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException { 4829 Parcel data = Parcel.obtain(); 4830 Parcel reply = Parcel.obtain(); 4831 data.writeInterfaceToken(IActivityManager.descriptor); 4832 data.writeStrongBinder(sender.asBinder()); 4833 mRemote.transact(IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION, data, reply, 0); 4834 reply.readException(); 4835 boolean res = reply.readInt() != 0; 4836 data.recycle(); 4837 reply.recycle(); 4838 return res; 4839 } 4840 4841 public Intent getIntentForIntentSender(IIntentSender sender) throws RemoteException { 4842 Parcel data = Parcel.obtain(); 4843 Parcel reply = Parcel.obtain(); 4844 data.writeInterfaceToken(IActivityManager.descriptor); 4845 data.writeStrongBinder(sender.asBinder()); 4846 mRemote.transact(GET_INTENT_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 4847 reply.readException(); 4848 Intent res = reply.readInt() != 0 4849 ? Intent.CREATOR.createFromParcel(reply) : null; 4850 data.recycle(); 4851 reply.recycle(); 4852 return res; 4853 } 4854 4855 public String getTagForIntentSender(IIntentSender sender, String prefix) 4856 throws RemoteException { 4857 Parcel data = Parcel.obtain(); 4858 Parcel reply = Parcel.obtain(); 4859 data.writeInterfaceToken(IActivityManager.descriptor); 4860 data.writeStrongBinder(sender.asBinder()); 4861 data.writeString(prefix); 4862 mRemote.transact(GET_TAG_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 4863 reply.readException(); 4864 String res = reply.readString(); 4865 data.recycle(); 4866 reply.recycle(); 4867 return res; 4868 } 4869 4870 public void updatePersistentConfiguration(Configuration values) throws RemoteException 4871 { 4872 Parcel data = Parcel.obtain(); 4873 Parcel reply = Parcel.obtain(); 4874 data.writeInterfaceToken(IActivityManager.descriptor); 4875 values.writeToParcel(data, 0); 4876 mRemote.transact(UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION, data, reply, 0); 4877 reply.readException(); 4878 data.recycle(); 4879 reply.recycle(); 4880 } 4881 4882 public long[] getProcessPss(int[] pids) throws RemoteException { 4883 Parcel data = Parcel.obtain(); 4884 Parcel reply = Parcel.obtain(); 4885 data.writeInterfaceToken(IActivityManager.descriptor); 4886 data.writeIntArray(pids); 4887 mRemote.transact(GET_PROCESS_PSS_TRANSACTION, data, reply, 0); 4888 reply.readException(); 4889 long[] res = reply.createLongArray(); 4890 data.recycle(); 4891 reply.recycle(); 4892 return res; 4893 } 4894 4895 public void showBootMessage(CharSequence msg, boolean always) throws RemoteException { 4896 Parcel data = Parcel.obtain(); 4897 Parcel reply = Parcel.obtain(); 4898 data.writeInterfaceToken(IActivityManager.descriptor); 4899 TextUtils.writeToParcel(msg, data, 0); 4900 data.writeInt(always ? 1 : 0); 4901 mRemote.transact(SHOW_BOOT_MESSAGE_TRANSACTION, data, reply, 0); 4902 reply.readException(); 4903 data.recycle(); 4904 reply.recycle(); 4905 } 4906 4907 public void keyguardWaitingForActivityDrawn() throws RemoteException { 4908 Parcel data = Parcel.obtain(); 4909 Parcel reply = Parcel.obtain(); 4910 data.writeInterfaceToken(IActivityManager.descriptor); 4911 mRemote.transact(KEYGUARD_WAITING_FOR_ACTIVITY_DRAWN_TRANSACTION, data, reply, 0); 4912 reply.readException(); 4913 data.recycle(); 4914 reply.recycle(); 4915 } 4916 4917 public boolean shouldUpRecreateTask(IBinder token, String destAffinity) 4918 throws RemoteException { 4919 Parcel data = Parcel.obtain(); 4920 Parcel reply = Parcel.obtain(); 4921 data.writeInterfaceToken(IActivityManager.descriptor); 4922 data.writeStrongBinder(token); 4923 data.writeString(destAffinity); 4924 mRemote.transact(SHOULD_UP_RECREATE_TASK_TRANSACTION, data, reply, 0); 4925 reply.readException(); 4926 boolean result = reply.readInt() != 0; 4927 data.recycle(); 4928 reply.recycle(); 4929 return result; 4930 } 4931 4932 public boolean navigateUpTo(IBinder token, Intent target, int resultCode, Intent resultData) 4933 throws RemoteException { 4934 Parcel data = Parcel.obtain(); 4935 Parcel reply = Parcel.obtain(); 4936 data.writeInterfaceToken(IActivityManager.descriptor); 4937 data.writeStrongBinder(token); 4938 target.writeToParcel(data, 0); 4939 data.writeInt(resultCode); 4940 if (resultData != null) { 4941 data.writeInt(1); 4942 resultData.writeToParcel(data, 0); 4943 } else { 4944 data.writeInt(0); 4945 } 4946 mRemote.transact(NAVIGATE_UP_TO_TRANSACTION, data, reply, 0); 4947 reply.readException(); 4948 boolean result = reply.readInt() != 0; 4949 data.recycle(); 4950 reply.recycle(); 4951 return result; 4952 } 4953 4954 public int getLaunchedFromUid(IBinder activityToken) throws RemoteException { 4955 Parcel data = Parcel.obtain(); 4956 Parcel reply = Parcel.obtain(); 4957 data.writeInterfaceToken(IActivityManager.descriptor); 4958 data.writeStrongBinder(activityToken); 4959 mRemote.transact(GET_LAUNCHED_FROM_UID_TRANSACTION, data, reply, 0); 4960 reply.readException(); 4961 int result = reply.readInt(); 4962 data.recycle(); 4963 reply.recycle(); 4964 return result; 4965 } 4966 4967 public String getLaunchedFromPackage(IBinder activityToken) throws RemoteException { 4968 Parcel data = Parcel.obtain(); 4969 Parcel reply = Parcel.obtain(); 4970 data.writeInterfaceToken(IActivityManager.descriptor); 4971 data.writeStrongBinder(activityToken); 4972 mRemote.transact(GET_LAUNCHED_FROM_PACKAGE_TRANSACTION, data, reply, 0); 4973 reply.readException(); 4974 String result = reply.readString(); 4975 data.recycle(); 4976 reply.recycle(); 4977 return result; 4978 } 4979 4980 public void registerUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException { 4981 Parcel data = Parcel.obtain(); 4982 Parcel reply = Parcel.obtain(); 4983 data.writeInterfaceToken(IActivityManager.descriptor); 4984 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 4985 mRemote.transact(REGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0); 4986 reply.readException(); 4987 data.recycle(); 4988 reply.recycle(); 4989 } 4990 4991 public void unregisterUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException { 4992 Parcel data = Parcel.obtain(); 4993 Parcel reply = Parcel.obtain(); 4994 data.writeInterfaceToken(IActivityManager.descriptor); 4995 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 4996 mRemote.transact(UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0); 4997 reply.readException(); 4998 data.recycle(); 4999 reply.recycle(); 5000 } 5001 5002 public void requestBugReport() throws RemoteException { 5003 Parcel data = Parcel.obtain(); 5004 Parcel reply = Parcel.obtain(); 5005 data.writeInterfaceToken(IActivityManager.descriptor); 5006 mRemote.transact(REQUEST_BUG_REPORT_TRANSACTION, data, reply, 0); 5007 reply.readException(); 5008 data.recycle(); 5009 reply.recycle(); 5010 } 5011 5012 public long inputDispatchingTimedOut(int pid, boolean aboveSystem, String reason) 5013 throws RemoteException { 5014 Parcel data = Parcel.obtain(); 5015 Parcel reply = Parcel.obtain(); 5016 data.writeInterfaceToken(IActivityManager.descriptor); 5017 data.writeInt(pid); 5018 data.writeInt(aboveSystem ? 1 : 0); 5019 data.writeString(reason); 5020 mRemote.transact(INPUT_DISPATCHING_TIMED_OUT_TRANSACTION, data, reply, 0); 5021 reply.readException(); 5022 long res = reply.readInt(); 5023 data.recycle(); 5024 reply.recycle(); 5025 return res; 5026 } 5027 5028 public Bundle getAssistContextExtras(int requestType) throws RemoteException { 5029 Parcel data = Parcel.obtain(); 5030 Parcel reply = Parcel.obtain(); 5031 data.writeInterfaceToken(IActivityManager.descriptor); 5032 data.writeInt(requestType); 5033 mRemote.transact(GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0); 5034 reply.readException(); 5035 Bundle res = reply.readBundle(); 5036 data.recycle(); 5037 reply.recycle(); 5038 return res; 5039 } 5040 5041 public void reportAssistContextExtras(IBinder token, Bundle extras) 5042 throws RemoteException { 5043 Parcel data = Parcel.obtain(); 5044 Parcel reply = Parcel.obtain(); 5045 data.writeInterfaceToken(IActivityManager.descriptor); 5046 data.writeStrongBinder(token); 5047 data.writeBundle(extras); 5048 mRemote.transact(REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0); 5049 reply.readException(); 5050 data.recycle(); 5051 reply.recycle(); 5052 } 5053 5054 public boolean launchAssistIntent(Intent intent, int requestType, String hint, int userHandle) 5055 throws RemoteException { 5056 Parcel data = Parcel.obtain(); 5057 Parcel reply = Parcel.obtain(); 5058 data.writeInterfaceToken(IActivityManager.descriptor); 5059 intent.writeToParcel(data, 0); 5060 data.writeInt(requestType); 5061 data.writeString(hint); 5062 data.writeInt(userHandle); 5063 mRemote.transact(LAUNCH_ASSIST_INTENT_TRANSACTION, data, reply, 0); 5064 reply.readException(); 5065 boolean res = reply.readInt() != 0; 5066 data.recycle(); 5067 reply.recycle(); 5068 return res; 5069 } 5070 5071 public void killUid(int uid, String reason) throws RemoteException { 5072 Parcel data = Parcel.obtain(); 5073 Parcel reply = Parcel.obtain(); 5074 data.writeInterfaceToken(IActivityManager.descriptor); 5075 data.writeInt(uid); 5076 data.writeString(reason); 5077 mRemote.transact(KILL_UID_TRANSACTION, data, reply, 0); 5078 reply.readException(); 5079 data.recycle(); 5080 reply.recycle(); 5081 } 5082 5083 public void hang(IBinder who, boolean allowRestart) throws RemoteException { 5084 Parcel data = Parcel.obtain(); 5085 Parcel reply = Parcel.obtain(); 5086 data.writeInterfaceToken(IActivityManager.descriptor); 5087 data.writeStrongBinder(who); 5088 data.writeInt(allowRestart ? 1 : 0); 5089 mRemote.transact(HANG_TRANSACTION, data, reply, 0); 5090 reply.readException(); 5091 data.recycle(); 5092 reply.recycle(); 5093 } 5094 5095 public void reportActivityFullyDrawn(IBinder token) throws RemoteException { 5096 Parcel data = Parcel.obtain(); 5097 Parcel reply = Parcel.obtain(); 5098 data.writeInterfaceToken(IActivityManager.descriptor); 5099 data.writeStrongBinder(token); 5100 mRemote.transact(REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION, data, reply, 0); 5101 reply.readException(); 5102 data.recycle(); 5103 reply.recycle(); 5104 } 5105 5106 public void notifyActivityDrawn(IBinder token) throws RemoteException { 5107 Parcel data = Parcel.obtain(); 5108 Parcel reply = Parcel.obtain(); 5109 data.writeInterfaceToken(IActivityManager.descriptor); 5110 data.writeStrongBinder(token); 5111 mRemote.transact(NOTIFY_ACTIVITY_DRAWN_TRANSACTION, data, reply, 0); 5112 reply.readException(); 5113 data.recycle(); 5114 reply.recycle(); 5115 } 5116 5117 public void restart() throws RemoteException { 5118 Parcel data = Parcel.obtain(); 5119 Parcel reply = Parcel.obtain(); 5120 data.writeInterfaceToken(IActivityManager.descriptor); 5121 mRemote.transact(RESTART_TRANSACTION, data, reply, 0); 5122 reply.readException(); 5123 data.recycle(); 5124 reply.recycle(); 5125 } 5126 5127 public void performIdleMaintenance() throws RemoteException { 5128 Parcel data = Parcel.obtain(); 5129 Parcel reply = Parcel.obtain(); 5130 data.writeInterfaceToken(IActivityManager.descriptor); 5131 mRemote.transact(PERFORM_IDLE_MAINTENANCE_TRANSACTION, data, reply, 0); 5132 reply.readException(); 5133 data.recycle(); 5134 reply.recycle(); 5135 } 5136 5137 public IActivityContainer createActivityContainer(IBinder parentActivityToken, 5138 IActivityContainerCallback callback) throws RemoteException { 5139 Parcel data = Parcel.obtain(); 5140 Parcel reply = Parcel.obtain(); 5141 data.writeInterfaceToken(IActivityManager.descriptor); 5142 data.writeStrongBinder(parentActivityToken); 5143 data.writeStrongBinder(callback == null ? null : callback.asBinder()); 5144 mRemote.transact(CREATE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); 5145 reply.readException(); 5146 final int result = reply.readInt(); 5147 final IActivityContainer res; 5148 if (result == 1) { 5149 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder()); 5150 } else { 5151 res = null; 5152 } 5153 data.recycle(); 5154 reply.recycle(); 5155 return res; 5156 } 5157 5158 public void deleteActivityContainer(IActivityContainer activityContainer) 5159 throws RemoteException { 5160 Parcel data = Parcel.obtain(); 5161 Parcel reply = Parcel.obtain(); 5162 data.writeInterfaceToken(IActivityManager.descriptor); 5163 data.writeStrongBinder(activityContainer.asBinder()); 5164 mRemote.transact(DELETE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); 5165 reply.readException(); 5166 data.recycle(); 5167 reply.recycle(); 5168 } 5169 5170 public IActivityContainer getEnclosingActivityContainer(IBinder activityToken) 5171 throws RemoteException { 5172 Parcel data = Parcel.obtain(); 5173 Parcel reply = Parcel.obtain(); 5174 data.writeInterfaceToken(IActivityManager.descriptor); 5175 data.writeStrongBinder(activityToken); 5176 mRemote.transact(GET_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); 5177 reply.readException(); 5178 final int result = reply.readInt(); 5179 final IActivityContainer res; 5180 if (result == 1) { 5181 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder()); 5182 } else { 5183 res = null; 5184 } 5185 data.recycle(); 5186 reply.recycle(); 5187 return res; 5188 } 5189 5190 public IBinder getHomeActivityToken() throws RemoteException { 5191 Parcel data = Parcel.obtain(); 5192 Parcel reply = Parcel.obtain(); 5193 data.writeInterfaceToken(IActivityManager.descriptor); 5194 mRemote.transact(GET_HOME_ACTIVITY_TOKEN_TRANSACTION, data, reply, 0); 5195 reply.readException(); 5196 IBinder res = reply.readStrongBinder(); 5197 data.recycle(); 5198 reply.recycle(); 5199 return res; 5200 } 5201 5202 @Override 5203 public void startLockTaskMode(int taskId) throws RemoteException { 5204 Parcel data = Parcel.obtain(); 5205 Parcel reply = Parcel.obtain(); 5206 data.writeInterfaceToken(IActivityManager.descriptor); 5207 data.writeInt(taskId); 5208 mRemote.transact(START_LOCK_TASK_BY_TASK_ID_TRANSACTION, data, reply, 0); 5209 reply.readException(); 5210 data.recycle(); 5211 reply.recycle(); 5212 } 5213 5214 @Override 5215 public void startLockTaskMode(IBinder token) throws RemoteException { 5216 Parcel data = Parcel.obtain(); 5217 Parcel reply = Parcel.obtain(); 5218 data.writeInterfaceToken(IActivityManager.descriptor); 5219 data.writeStrongBinder(token); 5220 mRemote.transact(START_LOCK_TASK_BY_TOKEN_TRANSACTION, data, reply, 0); 5221 reply.readException(); 5222 data.recycle(); 5223 reply.recycle(); 5224 } 5225 5226 @Override 5227 public void startLockTaskModeOnCurrent() throws RemoteException { 5228 Parcel data = Parcel.obtain(); 5229 Parcel reply = Parcel.obtain(); 5230 data.writeInterfaceToken(IActivityManager.descriptor); 5231 mRemote.transact(START_LOCK_TASK_BY_CURRENT_TRANSACTION, data, reply, 0); 5232 reply.readException(); 5233 data.recycle(); 5234 reply.recycle(); 5235 } 5236 5237 @Override 5238 public void stopLockTaskMode() throws RemoteException { 5239 Parcel data = Parcel.obtain(); 5240 Parcel reply = Parcel.obtain(); 5241 data.writeInterfaceToken(IActivityManager.descriptor); 5242 mRemote.transact(STOP_LOCK_TASK_MODE_TRANSACTION, data, reply, 0); 5243 reply.readException(); 5244 data.recycle(); 5245 reply.recycle(); 5246 } 5247 5248 @Override 5249 public void stopLockTaskModeOnCurrent() throws RemoteException { 5250 Parcel data = Parcel.obtain(); 5251 Parcel reply = Parcel.obtain(); 5252 data.writeInterfaceToken(IActivityManager.descriptor); 5253 mRemote.transact(STOP_LOCK_TASK_BY_CURRENT_TRANSACTION, data, reply, 0); 5254 reply.readException(); 5255 data.recycle(); 5256 reply.recycle(); 5257 } 5258 5259 @Override 5260 public boolean isInLockTaskMode() throws RemoteException { 5261 Parcel data = Parcel.obtain(); 5262 Parcel reply = Parcel.obtain(); 5263 data.writeInterfaceToken(IActivityManager.descriptor); 5264 mRemote.transact(IS_IN_LOCK_TASK_MODE_TRANSACTION, data, reply, 0); 5265 reply.readException(); 5266 boolean isInLockTaskMode = reply.readInt() == 1; 5267 data.recycle(); 5268 reply.recycle(); 5269 return isInLockTaskMode; 5270 } 5271 5272 @Override 5273 public void setTaskDescription(IBinder token, ActivityManager.TaskDescription values) 5274 throws RemoteException { 5275 Parcel data = Parcel.obtain(); 5276 Parcel reply = Parcel.obtain(); 5277 data.writeInterfaceToken(IActivityManager.descriptor); 5278 data.writeStrongBinder(token); 5279 values.writeToParcel(data, 0); 5280 mRemote.transact(SET_TASK_DESCRIPTION_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 5281 reply.readException(); 5282 data.recycle(); 5283 reply.recycle(); 5284 } 5285 5286 @Override 5287 public Bitmap getTaskDescriptionIcon(String filename) throws RemoteException { 5288 Parcel data = Parcel.obtain(); 5289 Parcel reply = Parcel.obtain(); 5290 data.writeInterfaceToken(IActivityManager.descriptor); 5291 data.writeString(filename); 5292 mRemote.transact(GET_TASK_DESCRIPTION_ICON_TRANSACTION, data, reply, 0); 5293 reply.readException(); 5294 final Bitmap icon = reply.readInt() == 0 ? null : Bitmap.CREATOR.createFromParcel(reply); 5295 data.recycle(); 5296 reply.recycle(); 5297 return icon; 5298 } 5299 5300 @Override 5301 public boolean requestVisibleBehind(IBinder token, boolean visible) throws RemoteException { 5302 Parcel data = Parcel.obtain(); 5303 Parcel reply = Parcel.obtain(); 5304 data.writeInterfaceToken(IActivityManager.descriptor); 5305 data.writeStrongBinder(token); 5306 data.writeInt(visible ? 1 : 0); 5307 mRemote.transact(REQUEST_VISIBLE_BEHIND_TRANSACTION, data, reply, 0); 5308 reply.readException(); 5309 boolean success = reply.readInt() > 0; 5310 data.recycle(); 5311 reply.recycle(); 5312 return success; 5313 } 5314 5315 @Override 5316 public boolean isBackgroundVisibleBehind(IBinder token) throws RemoteException { 5317 Parcel data = Parcel.obtain(); 5318 Parcel reply = Parcel.obtain(); 5319 data.writeInterfaceToken(IActivityManager.descriptor); 5320 data.writeStrongBinder(token); 5321 mRemote.transact(IS_BACKGROUND_VISIBLE_BEHIND_TRANSACTION, data, reply, 0); 5322 reply.readException(); 5323 final boolean visible = reply.readInt() > 0; 5324 data.recycle(); 5325 reply.recycle(); 5326 return visible; 5327 } 5328 5329 @Override 5330 public void backgroundResourcesReleased(IBinder token) throws RemoteException { 5331 Parcel data = Parcel.obtain(); 5332 Parcel reply = Parcel.obtain(); 5333 data.writeInterfaceToken(IActivityManager.descriptor); 5334 data.writeStrongBinder(token); 5335 mRemote.transact(BACKGROUND_RESOURCES_RELEASED_TRANSACTION, data, reply, 5336 IBinder.FLAG_ONEWAY); 5337 reply.readException(); 5338 data.recycle(); 5339 reply.recycle(); 5340 } 5341 5342 @Override 5343 public void notifyLaunchTaskBehindComplete(IBinder token) throws RemoteException { 5344 Parcel data = Parcel.obtain(); 5345 Parcel reply = Parcel.obtain(); 5346 data.writeInterfaceToken(IActivityManager.descriptor); 5347 data.writeStrongBinder(token); 5348 mRemote.transact(NOTIFY_LAUNCH_TASK_BEHIND_COMPLETE_TRANSACTION, data, reply, 5349 IBinder.FLAG_ONEWAY); 5350 reply.readException(); 5351 data.recycle(); 5352 reply.recycle(); 5353 } 5354 5355 @Override 5356 public void notifyEnterAnimationComplete(IBinder token) throws RemoteException { 5357 Parcel data = Parcel.obtain(); 5358 Parcel reply = Parcel.obtain(); 5359 data.writeInterfaceToken(IActivityManager.descriptor); 5360 data.writeStrongBinder(token); 5361 mRemote.transact(NOTIFY_ENTER_ANIMATION_COMPLETE_TRANSACTION, data, reply, 5362 IBinder.FLAG_ONEWAY); 5363 reply.readException(); 5364 data.recycle(); 5365 reply.recycle(); 5366 } 5367 5368 @Override 5369 public void bootAnimationComplete() throws RemoteException { 5370 Parcel data = Parcel.obtain(); 5371 Parcel reply = Parcel.obtain(); 5372 data.writeInterfaceToken(IActivityManager.descriptor); 5373 mRemote.transact(BOOT_ANIMATION_COMPLETE_TRANSACTION, data, reply, 0); 5374 reply.readException(); 5375 data.recycle(); 5376 reply.recycle(); 5377 } 5378 5379 private IBinder mRemote; 5380} 5381