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