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