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