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