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