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