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