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