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