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