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