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