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