ActivityManagerNative.java revision 044d52934e57a337665f707aa4be1d423ee3fb29
1/* 2 * Copyright (C) 2006 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.app; 18 19import android.app.ActivityManager.StackInfo; 20import android.app.ProfilerInfo; 21import android.content.ComponentName; 22import android.content.IIntentReceiver; 23import android.content.IIntentSender; 24import android.content.Intent; 25import android.content.IntentFilter; 26import android.content.IntentSender; 27import android.content.UriPermission; 28import android.content.pm.ApplicationInfo; 29import android.content.pm.ConfigurationInfo; 30import android.content.pm.IPackageDataObserver; 31import android.content.pm.ParceledListSlice; 32import android.content.pm.UserInfo; 33import android.content.res.Configuration; 34import android.graphics.Bitmap; 35import android.graphics.Point; 36import android.graphics.Rect; 37import android.net.Uri; 38import android.os.Binder; 39import android.os.Bundle; 40import android.os.Debug; 41import android.os.IBinder; 42import android.os.Parcel; 43import android.os.ParcelFileDescriptor; 44import android.os.Parcelable; 45import android.os.PersistableBundle; 46import android.os.RemoteException; 47import android.os.ServiceManager; 48import android.os.StrictMode; 49import android.service.voice.IVoiceInteractionSession; 50import android.text.TextUtils; 51import android.util.Log; 52import android.util.Singleton; 53import com.android.internal.app.IVoiceInteractor; 54 55import java.util.ArrayList; 56import java.util.List; 57 58/** {@hide} */ 59public 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 boolean result = removeTask(taskId); 1888 reply.writeNoException(); 1889 reply.writeInt(result ? 1 : 0); 1890 return true; 1891 } 1892 1893 case REGISTER_PROCESS_OBSERVER_TRANSACTION: { 1894 data.enforceInterface(IActivityManager.descriptor); 1895 IProcessObserver observer = IProcessObserver.Stub.asInterface( 1896 data.readStrongBinder()); 1897 registerProcessObserver(observer); 1898 return true; 1899 } 1900 1901 case UNREGISTER_PROCESS_OBSERVER_TRANSACTION: { 1902 data.enforceInterface(IActivityManager.descriptor); 1903 IProcessObserver observer = IProcessObserver.Stub.asInterface( 1904 data.readStrongBinder()); 1905 unregisterProcessObserver(observer); 1906 return true; 1907 } 1908 1909 case GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION: 1910 { 1911 data.enforceInterface(IActivityManager.descriptor); 1912 String pkg = data.readString(); 1913 boolean ask = getPackageAskScreenCompat(pkg); 1914 reply.writeNoException(); 1915 reply.writeInt(ask ? 1 : 0); 1916 return true; 1917 } 1918 1919 case SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION: 1920 { 1921 data.enforceInterface(IActivityManager.descriptor); 1922 String pkg = data.readString(); 1923 boolean ask = data.readInt() != 0; 1924 setPackageAskScreenCompat(pkg, ask); 1925 reply.writeNoException(); 1926 return true; 1927 } 1928 1929 case IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION: { 1930 data.enforceInterface(IActivityManager.descriptor); 1931 IIntentSender r = IIntentSender.Stub.asInterface( 1932 data.readStrongBinder()); 1933 boolean res = isIntentSenderTargetedToPackage(r); 1934 reply.writeNoException(); 1935 reply.writeInt(res ? 1 : 0); 1936 return true; 1937 } 1938 1939 case IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION: { 1940 data.enforceInterface(IActivityManager.descriptor); 1941 IIntentSender r = IIntentSender.Stub.asInterface( 1942 data.readStrongBinder()); 1943 boolean res = isIntentSenderAnActivity(r); 1944 reply.writeNoException(); 1945 reply.writeInt(res ? 1 : 0); 1946 return true; 1947 } 1948 1949 case GET_INTENT_FOR_INTENT_SENDER_TRANSACTION: { 1950 data.enforceInterface(IActivityManager.descriptor); 1951 IIntentSender r = IIntentSender.Stub.asInterface( 1952 data.readStrongBinder()); 1953 Intent intent = getIntentForIntentSender(r); 1954 reply.writeNoException(); 1955 if (intent != null) { 1956 reply.writeInt(1); 1957 intent.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1958 } else { 1959 reply.writeInt(0); 1960 } 1961 return true; 1962 } 1963 1964 case GET_TAG_FOR_INTENT_SENDER_TRANSACTION: { 1965 data.enforceInterface(IActivityManager.descriptor); 1966 IIntentSender r = IIntentSender.Stub.asInterface( 1967 data.readStrongBinder()); 1968 String prefix = data.readString(); 1969 String tag = getTagForIntentSender(r, prefix); 1970 reply.writeNoException(); 1971 reply.writeString(tag); 1972 return true; 1973 } 1974 1975 case UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION: { 1976 data.enforceInterface(IActivityManager.descriptor); 1977 Configuration config = Configuration.CREATOR.createFromParcel(data); 1978 updatePersistentConfiguration(config); 1979 reply.writeNoException(); 1980 return true; 1981 } 1982 1983 case GET_PROCESS_PSS_TRANSACTION: { 1984 data.enforceInterface(IActivityManager.descriptor); 1985 int[] pids = data.createIntArray(); 1986 long[] pss = getProcessPss(pids); 1987 reply.writeNoException(); 1988 reply.writeLongArray(pss); 1989 return true; 1990 } 1991 1992 case SHOW_BOOT_MESSAGE_TRANSACTION: { 1993 data.enforceInterface(IActivityManager.descriptor); 1994 CharSequence msg = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data); 1995 boolean always = data.readInt() != 0; 1996 showBootMessage(msg, always); 1997 reply.writeNoException(); 1998 return true; 1999 } 2000 2001 case KEYGUARD_WAITING_FOR_ACTIVITY_DRAWN_TRANSACTION: { 2002 data.enforceInterface(IActivityManager.descriptor); 2003 keyguardWaitingForActivityDrawn(); 2004 reply.writeNoException(); 2005 return true; 2006 } 2007 2008 case SHOULD_UP_RECREATE_TASK_TRANSACTION: { 2009 data.enforceInterface(IActivityManager.descriptor); 2010 IBinder token = data.readStrongBinder(); 2011 String destAffinity = data.readString(); 2012 boolean res = shouldUpRecreateTask(token, destAffinity); 2013 reply.writeNoException(); 2014 reply.writeInt(res ? 1 : 0); 2015 return true; 2016 } 2017 2018 case NAVIGATE_UP_TO_TRANSACTION: { 2019 data.enforceInterface(IActivityManager.descriptor); 2020 IBinder token = data.readStrongBinder(); 2021 Intent target = Intent.CREATOR.createFromParcel(data); 2022 int resultCode = data.readInt(); 2023 Intent resultData = null; 2024 if (data.readInt() != 0) { 2025 resultData = Intent.CREATOR.createFromParcel(data); 2026 } 2027 boolean res = navigateUpTo(token, target, resultCode, resultData); 2028 reply.writeNoException(); 2029 reply.writeInt(res ? 1 : 0); 2030 return true; 2031 } 2032 2033 case GET_LAUNCHED_FROM_UID_TRANSACTION: { 2034 data.enforceInterface(IActivityManager.descriptor); 2035 IBinder token = data.readStrongBinder(); 2036 int res = getLaunchedFromUid(token); 2037 reply.writeNoException(); 2038 reply.writeInt(res); 2039 return true; 2040 } 2041 2042 case GET_LAUNCHED_FROM_PACKAGE_TRANSACTION: { 2043 data.enforceInterface(IActivityManager.descriptor); 2044 IBinder token = data.readStrongBinder(); 2045 String res = getLaunchedFromPackage(token); 2046 reply.writeNoException(); 2047 reply.writeString(res); 2048 return true; 2049 } 2050 2051 case REGISTER_USER_SWITCH_OBSERVER_TRANSACTION: { 2052 data.enforceInterface(IActivityManager.descriptor); 2053 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface( 2054 data.readStrongBinder()); 2055 registerUserSwitchObserver(observer); 2056 reply.writeNoException(); 2057 return true; 2058 } 2059 2060 case UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION: { 2061 data.enforceInterface(IActivityManager.descriptor); 2062 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface( 2063 data.readStrongBinder()); 2064 unregisterUserSwitchObserver(observer); 2065 reply.writeNoException(); 2066 return true; 2067 } 2068 2069 case REQUEST_BUG_REPORT_TRANSACTION: { 2070 data.enforceInterface(IActivityManager.descriptor); 2071 requestBugReport(); 2072 reply.writeNoException(); 2073 return true; 2074 } 2075 2076 case INPUT_DISPATCHING_TIMED_OUT_TRANSACTION: { 2077 data.enforceInterface(IActivityManager.descriptor); 2078 int pid = data.readInt(); 2079 boolean aboveSystem = data.readInt() != 0; 2080 String reason = data.readString(); 2081 long res = inputDispatchingTimedOut(pid, aboveSystem, reason); 2082 reply.writeNoException(); 2083 reply.writeLong(res); 2084 return true; 2085 } 2086 2087 case GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION: { 2088 data.enforceInterface(IActivityManager.descriptor); 2089 int requestType = data.readInt(); 2090 Bundle res = getAssistContextExtras(requestType); 2091 reply.writeNoException(); 2092 reply.writeBundle(res); 2093 return true; 2094 } 2095 2096 case REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION: { 2097 data.enforceInterface(IActivityManager.descriptor); 2098 IBinder token = data.readStrongBinder(); 2099 Bundle extras = data.readBundle(); 2100 reportAssistContextExtras(token, extras); 2101 reply.writeNoException(); 2102 return true; 2103 } 2104 2105 case LAUNCH_ASSIST_INTENT_TRANSACTION: { 2106 data.enforceInterface(IActivityManager.descriptor); 2107 Intent intent = Intent.CREATOR.createFromParcel(data); 2108 int requestType = data.readInt(); 2109 String hint = data.readString(); 2110 int userHandle = data.readInt(); 2111 boolean res = launchAssistIntent(intent, requestType, hint, userHandle); 2112 reply.writeNoException(); 2113 reply.writeInt(res ? 1 : 0); 2114 return true; 2115 } 2116 2117 case KILL_UID_TRANSACTION: { 2118 data.enforceInterface(IActivityManager.descriptor); 2119 int uid = data.readInt(); 2120 String reason = data.readString(); 2121 killUid(uid, reason); 2122 reply.writeNoException(); 2123 return true; 2124 } 2125 2126 case HANG_TRANSACTION: { 2127 data.enforceInterface(IActivityManager.descriptor); 2128 IBinder who = data.readStrongBinder(); 2129 boolean allowRestart = data.readInt() != 0; 2130 hang(who, allowRestart); 2131 reply.writeNoException(); 2132 return true; 2133 } 2134 2135 case REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION: { 2136 data.enforceInterface(IActivityManager.descriptor); 2137 IBinder token = data.readStrongBinder(); 2138 reportActivityFullyDrawn(token); 2139 reply.writeNoException(); 2140 return true; 2141 } 2142 2143 case NOTIFY_ACTIVITY_DRAWN_TRANSACTION: { 2144 data.enforceInterface(IActivityManager.descriptor); 2145 IBinder token = data.readStrongBinder(); 2146 notifyActivityDrawn(token); 2147 reply.writeNoException(); 2148 return true; 2149 } 2150 2151 case RESTART_TRANSACTION: { 2152 data.enforceInterface(IActivityManager.descriptor); 2153 restart(); 2154 reply.writeNoException(); 2155 return true; 2156 } 2157 2158 case PERFORM_IDLE_MAINTENANCE_TRANSACTION: { 2159 data.enforceInterface(IActivityManager.descriptor); 2160 performIdleMaintenance(); 2161 reply.writeNoException(); 2162 return true; 2163 } 2164 2165 case CREATE_ACTIVITY_CONTAINER_TRANSACTION: { 2166 data.enforceInterface(IActivityManager.descriptor); 2167 IBinder parentActivityToken = data.readStrongBinder(); 2168 IActivityContainerCallback callback = 2169 IActivityContainerCallback.Stub.asInterface(data.readStrongBinder()); 2170 IActivityContainer activityContainer = 2171 createActivityContainer(parentActivityToken, callback); 2172 reply.writeNoException(); 2173 if (activityContainer != null) { 2174 reply.writeInt(1); 2175 reply.writeStrongBinder(activityContainer.asBinder()); 2176 } else { 2177 reply.writeInt(0); 2178 } 2179 return true; 2180 } 2181 2182 case DELETE_ACTIVITY_CONTAINER_TRANSACTION: { 2183 data.enforceInterface(IActivityManager.descriptor); 2184 IActivityContainer activityContainer = 2185 IActivityContainer.Stub.asInterface(data.readStrongBinder()); 2186 deleteActivityContainer(activityContainer); 2187 reply.writeNoException(); 2188 return true; 2189 } 2190 2191 case GET_ACTIVITY_CONTAINER_TRANSACTION: { 2192 data.enforceInterface(IActivityManager.descriptor); 2193 IBinder activityToken = data.readStrongBinder(); 2194 IActivityContainer activityContainer = getEnclosingActivityContainer(activityToken); 2195 reply.writeNoException(); 2196 if (activityContainer != null) { 2197 reply.writeInt(1); 2198 reply.writeStrongBinder(activityContainer.asBinder()); 2199 } else { 2200 reply.writeInt(0); 2201 } 2202 return true; 2203 } 2204 2205 case GET_HOME_ACTIVITY_TOKEN_TRANSACTION: { 2206 data.enforceInterface(IActivityManager.descriptor); 2207 IBinder homeActivityToken = getHomeActivityToken(); 2208 reply.writeNoException(); 2209 reply.writeStrongBinder(homeActivityToken); 2210 return true; 2211 } 2212 2213 case START_LOCK_TASK_BY_TASK_ID_TRANSACTION: { 2214 data.enforceInterface(IActivityManager.descriptor); 2215 final int taskId = data.readInt(); 2216 startLockTaskMode(taskId); 2217 reply.writeNoException(); 2218 return true; 2219 } 2220 2221 case START_LOCK_TASK_BY_TOKEN_TRANSACTION: { 2222 data.enforceInterface(IActivityManager.descriptor); 2223 IBinder token = data.readStrongBinder(); 2224 startLockTaskMode(token); 2225 reply.writeNoException(); 2226 return true; 2227 } 2228 2229 case START_LOCK_TASK_BY_CURRENT_TRANSACTION: { 2230 data.enforceInterface(IActivityManager.descriptor); 2231 startLockTaskModeOnCurrent(); 2232 reply.writeNoException(); 2233 return true; 2234 } 2235 2236 case STOP_LOCK_TASK_MODE_TRANSACTION: { 2237 data.enforceInterface(IActivityManager.descriptor); 2238 stopLockTaskMode(); 2239 reply.writeNoException(); 2240 return true; 2241 } 2242 2243 case STOP_LOCK_TASK_BY_CURRENT_TRANSACTION: { 2244 data.enforceInterface(IActivityManager.descriptor); 2245 stopLockTaskModeOnCurrent(); 2246 reply.writeNoException(); 2247 return true; 2248 } 2249 2250 case IS_IN_LOCK_TASK_MODE_TRANSACTION: { 2251 data.enforceInterface(IActivityManager.descriptor); 2252 final boolean isInLockTaskMode = isInLockTaskMode(); 2253 reply.writeNoException(); 2254 reply.writeInt(isInLockTaskMode ? 1 : 0); 2255 return true; 2256 } 2257 2258 case SET_TASK_DESCRIPTION_TRANSACTION: { 2259 data.enforceInterface(IActivityManager.descriptor); 2260 IBinder token = data.readStrongBinder(); 2261 ActivityManager.TaskDescription values = 2262 ActivityManager.TaskDescription.CREATOR.createFromParcel(data); 2263 setTaskDescription(token, values); 2264 reply.writeNoException(); 2265 return true; 2266 } 2267 2268 case GET_TASK_DESCRIPTION_ICON_TRANSACTION: { 2269 data.enforceInterface(IActivityManager.descriptor); 2270 String filename = data.readString(); 2271 Bitmap icon = getTaskDescriptionIcon(filename); 2272 reply.writeNoException(); 2273 if (icon == null) { 2274 reply.writeInt(0); 2275 } else { 2276 reply.writeInt(1); 2277 icon.writeToParcel(reply, 0); 2278 } 2279 return true; 2280 } 2281 2282 case START_IN_PLACE_ANIMATION_TRANSACTION: { 2283 data.enforceInterface(IActivityManager.descriptor); 2284 final Bundle bundle; 2285 if (data.readInt() == 0) { 2286 bundle = null; 2287 } else { 2288 bundle = data.readBundle(); 2289 } 2290 final ActivityOptions options = bundle == null ? null : new ActivityOptions(bundle); 2291 startInPlaceAnimationOnFrontMostApplication(options); 2292 reply.writeNoException(); 2293 return true; 2294 } 2295 2296 case REQUEST_VISIBLE_BEHIND_TRANSACTION: { 2297 data.enforceInterface(IActivityManager.descriptor); 2298 IBinder token = data.readStrongBinder(); 2299 boolean enable = data.readInt() > 0; 2300 boolean success = requestVisibleBehind(token, enable); 2301 reply.writeNoException(); 2302 reply.writeInt(success ? 1 : 0); 2303 return true; 2304 } 2305 2306 case IS_BACKGROUND_VISIBLE_BEHIND_TRANSACTION: { 2307 data.enforceInterface(IActivityManager.descriptor); 2308 IBinder token = data.readStrongBinder(); 2309 final boolean enabled = isBackgroundVisibleBehind(token); 2310 reply.writeNoException(); 2311 reply.writeInt(enabled ? 1 : 0); 2312 return true; 2313 } 2314 2315 case BACKGROUND_RESOURCES_RELEASED_TRANSACTION: { 2316 data.enforceInterface(IActivityManager.descriptor); 2317 IBinder token = data.readStrongBinder(); 2318 backgroundResourcesReleased(token); 2319 reply.writeNoException(); 2320 return true; 2321 } 2322 2323 case NOTIFY_LAUNCH_TASK_BEHIND_COMPLETE_TRANSACTION: { 2324 data.enforceInterface(IActivityManager.descriptor); 2325 IBinder token = data.readStrongBinder(); 2326 notifyLaunchTaskBehindComplete(token); 2327 reply.writeNoException(); 2328 return true; 2329 } 2330 2331 case NOTIFY_ENTER_ANIMATION_COMPLETE_TRANSACTION: { 2332 data.enforceInterface(IActivityManager.descriptor); 2333 IBinder token = data.readStrongBinder(); 2334 notifyEnterAnimationComplete(token); 2335 reply.writeNoException(); 2336 return true; 2337 } 2338 2339 case BOOT_ANIMATION_COMPLETE_TRANSACTION: { 2340 data.enforceInterface(IActivityManager.descriptor); 2341 bootAnimationComplete(); 2342 reply.writeNoException(); 2343 return true; 2344 } 2345 } 2346 2347 return super.onTransact(code, data, reply, flags); 2348 } 2349 2350 public IBinder asBinder() { 2351 return this; 2352 } 2353 2354 private static final Singleton<IActivityManager> gDefault = new Singleton<IActivityManager>() { 2355 protected IActivityManager create() { 2356 IBinder b = ServiceManager.getService("activity"); 2357 if (false) { 2358 Log.v("ActivityManager", "default service binder = " + b); 2359 } 2360 IActivityManager am = asInterface(b); 2361 if (false) { 2362 Log.v("ActivityManager", "default service = " + am); 2363 } 2364 return am; 2365 } 2366 }; 2367} 2368 2369class ActivityManagerProxy implements IActivityManager 2370{ 2371 public ActivityManagerProxy(IBinder remote) 2372 { 2373 mRemote = remote; 2374 } 2375 2376 public IBinder asBinder() 2377 { 2378 return mRemote; 2379 } 2380 2381 public int startActivity(IApplicationThread caller, String callingPackage, Intent intent, 2382 String resolvedType, IBinder resultTo, String resultWho, int requestCode, 2383 int startFlags, ProfilerInfo profilerInfo, Bundle options) throws RemoteException { 2384 Parcel data = Parcel.obtain(); 2385 Parcel reply = Parcel.obtain(); 2386 data.writeInterfaceToken(IActivityManager.descriptor); 2387 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2388 data.writeString(callingPackage); 2389 intent.writeToParcel(data, 0); 2390 data.writeString(resolvedType); 2391 data.writeStrongBinder(resultTo); 2392 data.writeString(resultWho); 2393 data.writeInt(requestCode); 2394 data.writeInt(startFlags); 2395 if (profilerInfo != null) { 2396 data.writeInt(1); 2397 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2398 } else { 2399 data.writeInt(0); 2400 } 2401 if (options != null) { 2402 data.writeInt(1); 2403 options.writeToParcel(data, 0); 2404 } else { 2405 data.writeInt(0); 2406 } 2407 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0); 2408 reply.readException(); 2409 int result = reply.readInt(); 2410 reply.recycle(); 2411 data.recycle(); 2412 return result; 2413 } 2414 2415 public int startActivityAsUser(IApplicationThread caller, String callingPackage, Intent intent, 2416 String resolvedType, IBinder resultTo, String resultWho, int requestCode, 2417 int startFlags, ProfilerInfo profilerInfo, Bundle options, 2418 int userId) throws RemoteException { 2419 Parcel data = Parcel.obtain(); 2420 Parcel reply = Parcel.obtain(); 2421 data.writeInterfaceToken(IActivityManager.descriptor); 2422 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2423 data.writeString(callingPackage); 2424 intent.writeToParcel(data, 0); 2425 data.writeString(resolvedType); 2426 data.writeStrongBinder(resultTo); 2427 data.writeString(resultWho); 2428 data.writeInt(requestCode); 2429 data.writeInt(startFlags); 2430 if (profilerInfo != null) { 2431 data.writeInt(1); 2432 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2433 } else { 2434 data.writeInt(0); 2435 } 2436 if (options != null) { 2437 data.writeInt(1); 2438 options.writeToParcel(data, 0); 2439 } else { 2440 data.writeInt(0); 2441 } 2442 data.writeInt(userId); 2443 mRemote.transact(START_ACTIVITY_AS_USER_TRANSACTION, data, reply, 0); 2444 reply.readException(); 2445 int result = reply.readInt(); 2446 reply.recycle(); 2447 data.recycle(); 2448 return result; 2449 } 2450 public int startActivityAsCaller(IApplicationThread caller, String callingPackage, 2451 Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode, 2452 int startFlags, ProfilerInfo profilerInfo, Bundle options, int userId) throws RemoteException { 2453 Parcel data = Parcel.obtain(); 2454 Parcel reply = Parcel.obtain(); 2455 data.writeInterfaceToken(IActivityManager.descriptor); 2456 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2457 data.writeString(callingPackage); 2458 intent.writeToParcel(data, 0); 2459 data.writeString(resolvedType); 2460 data.writeStrongBinder(resultTo); 2461 data.writeString(resultWho); 2462 data.writeInt(requestCode); 2463 data.writeInt(startFlags); 2464 if (profilerInfo != null) { 2465 data.writeInt(1); 2466 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2467 } else { 2468 data.writeInt(0); 2469 } 2470 if (options != null) { 2471 data.writeInt(1); 2472 options.writeToParcel(data, 0); 2473 } else { 2474 data.writeInt(0); 2475 } 2476 data.writeInt(userId); 2477 mRemote.transact(START_ACTIVITY_AS_CALLER_TRANSACTION, data, reply, 0); 2478 reply.readException(); 2479 int result = reply.readInt(); 2480 reply.recycle(); 2481 data.recycle(); 2482 return result; 2483 } 2484 public WaitResult startActivityAndWait(IApplicationThread caller, String callingPackage, 2485 Intent intent, String resolvedType, IBinder resultTo, String resultWho, 2486 int requestCode, int startFlags, ProfilerInfo profilerInfo, Bundle options, 2487 int userId) throws RemoteException { 2488 Parcel data = Parcel.obtain(); 2489 Parcel reply = Parcel.obtain(); 2490 data.writeInterfaceToken(IActivityManager.descriptor); 2491 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2492 data.writeString(callingPackage); 2493 intent.writeToParcel(data, 0); 2494 data.writeString(resolvedType); 2495 data.writeStrongBinder(resultTo); 2496 data.writeString(resultWho); 2497 data.writeInt(requestCode); 2498 data.writeInt(startFlags); 2499 if (profilerInfo != null) { 2500 data.writeInt(1); 2501 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2502 } else { 2503 data.writeInt(0); 2504 } 2505 if (options != null) { 2506 data.writeInt(1); 2507 options.writeToParcel(data, 0); 2508 } else { 2509 data.writeInt(0); 2510 } 2511 data.writeInt(userId); 2512 mRemote.transact(START_ACTIVITY_AND_WAIT_TRANSACTION, data, reply, 0); 2513 reply.readException(); 2514 WaitResult result = WaitResult.CREATOR.createFromParcel(reply); 2515 reply.recycle(); 2516 data.recycle(); 2517 return result; 2518 } 2519 public int startActivityWithConfig(IApplicationThread caller, String callingPackage, 2520 Intent intent, String resolvedType, IBinder resultTo, String resultWho, 2521 int requestCode, int startFlags, Configuration config, 2522 Bundle options, int userId) throws RemoteException { 2523 Parcel data = Parcel.obtain(); 2524 Parcel reply = Parcel.obtain(); 2525 data.writeInterfaceToken(IActivityManager.descriptor); 2526 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2527 data.writeString(callingPackage); 2528 intent.writeToParcel(data, 0); 2529 data.writeString(resolvedType); 2530 data.writeStrongBinder(resultTo); 2531 data.writeString(resultWho); 2532 data.writeInt(requestCode); 2533 data.writeInt(startFlags); 2534 config.writeToParcel(data, 0); 2535 if (options != null) { 2536 data.writeInt(1); 2537 options.writeToParcel(data, 0); 2538 } else { 2539 data.writeInt(0); 2540 } 2541 data.writeInt(userId); 2542 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0); 2543 reply.readException(); 2544 int result = reply.readInt(); 2545 reply.recycle(); 2546 data.recycle(); 2547 return result; 2548 } 2549 public int startActivityIntentSender(IApplicationThread caller, 2550 IntentSender intent, Intent fillInIntent, String resolvedType, 2551 IBinder resultTo, String resultWho, int requestCode, 2552 int flagsMask, int flagsValues, Bundle options) throws RemoteException { 2553 Parcel data = Parcel.obtain(); 2554 Parcel reply = Parcel.obtain(); 2555 data.writeInterfaceToken(IActivityManager.descriptor); 2556 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2557 intent.writeToParcel(data, 0); 2558 if (fillInIntent != null) { 2559 data.writeInt(1); 2560 fillInIntent.writeToParcel(data, 0); 2561 } else { 2562 data.writeInt(0); 2563 } 2564 data.writeString(resolvedType); 2565 data.writeStrongBinder(resultTo); 2566 data.writeString(resultWho); 2567 data.writeInt(requestCode); 2568 data.writeInt(flagsMask); 2569 data.writeInt(flagsValues); 2570 if (options != null) { 2571 data.writeInt(1); 2572 options.writeToParcel(data, 0); 2573 } else { 2574 data.writeInt(0); 2575 } 2576 mRemote.transact(START_ACTIVITY_INTENT_SENDER_TRANSACTION, data, reply, 0); 2577 reply.readException(); 2578 int result = reply.readInt(); 2579 reply.recycle(); 2580 data.recycle(); 2581 return result; 2582 } 2583 public int startVoiceActivity(String callingPackage, int callingPid, int callingUid, 2584 Intent intent, String resolvedType, IVoiceInteractionSession session, 2585 IVoiceInteractor interactor, int startFlags, ProfilerInfo profilerInfo, 2586 Bundle options, int userId) throws RemoteException { 2587 Parcel data = Parcel.obtain(); 2588 Parcel reply = Parcel.obtain(); 2589 data.writeInterfaceToken(IActivityManager.descriptor); 2590 data.writeString(callingPackage); 2591 data.writeInt(callingPid); 2592 data.writeInt(callingUid); 2593 intent.writeToParcel(data, 0); 2594 data.writeString(resolvedType); 2595 data.writeStrongBinder(session.asBinder()); 2596 data.writeStrongBinder(interactor.asBinder()); 2597 data.writeInt(startFlags); 2598 if (profilerInfo != null) { 2599 data.writeInt(1); 2600 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2601 } else { 2602 data.writeInt(0); 2603 } 2604 if (options != null) { 2605 data.writeInt(1); 2606 options.writeToParcel(data, 0); 2607 } else { 2608 data.writeInt(0); 2609 } 2610 data.writeInt(userId); 2611 mRemote.transact(START_VOICE_ACTIVITY_TRANSACTION, data, reply, 0); 2612 reply.readException(); 2613 int result = reply.readInt(); 2614 reply.recycle(); 2615 data.recycle(); 2616 return result; 2617 } 2618 public boolean startNextMatchingActivity(IBinder callingActivity, 2619 Intent intent, Bundle options) throws RemoteException { 2620 Parcel data = Parcel.obtain(); 2621 Parcel reply = Parcel.obtain(); 2622 data.writeInterfaceToken(IActivityManager.descriptor); 2623 data.writeStrongBinder(callingActivity); 2624 intent.writeToParcel(data, 0); 2625 if (options != null) { 2626 data.writeInt(1); 2627 options.writeToParcel(data, 0); 2628 } else { 2629 data.writeInt(0); 2630 } 2631 mRemote.transact(START_NEXT_MATCHING_ACTIVITY_TRANSACTION, data, reply, 0); 2632 reply.readException(); 2633 int result = reply.readInt(); 2634 reply.recycle(); 2635 data.recycle(); 2636 return result != 0; 2637 } 2638 public int startActivityFromRecents(int taskId, Bundle options) throws RemoteException { 2639 Parcel data = Parcel.obtain(); 2640 Parcel reply = Parcel.obtain(); 2641 data.writeInterfaceToken(IActivityManager.descriptor); 2642 data.writeInt(taskId); 2643 if (options == null) { 2644 data.writeInt(0); 2645 } else { 2646 data.writeInt(1); 2647 options.writeToParcel(data, 0); 2648 } 2649 mRemote.transact(START_ACTIVITY_FROM_RECENTS_TRANSACTION, data, reply, 0); 2650 reply.readException(); 2651 int result = reply.readInt(); 2652 reply.recycle(); 2653 data.recycle(); 2654 return result; 2655 } 2656 public boolean finishActivity(IBinder token, int resultCode, Intent resultData, boolean finishTask) 2657 throws RemoteException { 2658 Parcel data = Parcel.obtain(); 2659 Parcel reply = Parcel.obtain(); 2660 data.writeInterfaceToken(IActivityManager.descriptor); 2661 data.writeStrongBinder(token); 2662 data.writeInt(resultCode); 2663 if (resultData != null) { 2664 data.writeInt(1); 2665 resultData.writeToParcel(data, 0); 2666 } else { 2667 data.writeInt(0); 2668 } 2669 data.writeInt(finishTask ? 1 : 0); 2670 mRemote.transact(FINISH_ACTIVITY_TRANSACTION, data, reply, 0); 2671 reply.readException(); 2672 boolean res = reply.readInt() != 0; 2673 data.recycle(); 2674 reply.recycle(); 2675 return res; 2676 } 2677 public void finishSubActivity(IBinder token, String resultWho, int requestCode) throws RemoteException 2678 { 2679 Parcel data = Parcel.obtain(); 2680 Parcel reply = Parcel.obtain(); 2681 data.writeInterfaceToken(IActivityManager.descriptor); 2682 data.writeStrongBinder(token); 2683 data.writeString(resultWho); 2684 data.writeInt(requestCode); 2685 mRemote.transact(FINISH_SUB_ACTIVITY_TRANSACTION, data, reply, 0); 2686 reply.readException(); 2687 data.recycle(); 2688 reply.recycle(); 2689 } 2690 public boolean finishActivityAffinity(IBinder token) throws RemoteException { 2691 Parcel data = Parcel.obtain(); 2692 Parcel reply = Parcel.obtain(); 2693 data.writeInterfaceToken(IActivityManager.descriptor); 2694 data.writeStrongBinder(token); 2695 mRemote.transact(FINISH_ACTIVITY_AFFINITY_TRANSACTION, data, reply, 0); 2696 reply.readException(); 2697 boolean res = reply.readInt() != 0; 2698 data.recycle(); 2699 reply.recycle(); 2700 return res; 2701 } 2702 public void finishVoiceTask(IVoiceInteractionSession session) throws RemoteException { 2703 Parcel data = Parcel.obtain(); 2704 Parcel reply = Parcel.obtain(); 2705 data.writeInterfaceToken(IActivityManager.descriptor); 2706 data.writeStrongBinder(session.asBinder()); 2707 mRemote.transact(FINISH_VOICE_TASK_TRANSACTION, data, reply, 0); 2708 reply.readException(); 2709 data.recycle(); 2710 reply.recycle(); 2711 } 2712 public boolean releaseActivityInstance(IBinder token) throws RemoteException { 2713 Parcel data = Parcel.obtain(); 2714 Parcel reply = Parcel.obtain(); 2715 data.writeInterfaceToken(IActivityManager.descriptor); 2716 data.writeStrongBinder(token); 2717 mRemote.transact(RELEASE_ACTIVITY_INSTANCE_TRANSACTION, data, reply, 0); 2718 reply.readException(); 2719 boolean res = reply.readInt() != 0; 2720 data.recycle(); 2721 reply.recycle(); 2722 return res; 2723 } 2724 public void releaseSomeActivities(IApplicationThread app) throws RemoteException { 2725 Parcel data = Parcel.obtain(); 2726 Parcel reply = Parcel.obtain(); 2727 data.writeInterfaceToken(IActivityManager.descriptor); 2728 data.writeStrongBinder(app.asBinder()); 2729 mRemote.transact(RELEASE_SOME_ACTIVITIES_TRANSACTION, data, reply, 0); 2730 reply.readException(); 2731 data.recycle(); 2732 reply.recycle(); 2733 } 2734 public boolean willActivityBeVisible(IBinder token) throws RemoteException { 2735 Parcel data = Parcel.obtain(); 2736 Parcel reply = Parcel.obtain(); 2737 data.writeInterfaceToken(IActivityManager.descriptor); 2738 data.writeStrongBinder(token); 2739 mRemote.transact(WILL_ACTIVITY_BE_VISIBLE_TRANSACTION, data, reply, 0); 2740 reply.readException(); 2741 boolean res = reply.readInt() != 0; 2742 data.recycle(); 2743 reply.recycle(); 2744 return res; 2745 } 2746 public Intent registerReceiver(IApplicationThread caller, String packageName, 2747 IIntentReceiver receiver, 2748 IntentFilter filter, String perm, int userId) throws RemoteException 2749 { 2750 Parcel data = Parcel.obtain(); 2751 Parcel reply = Parcel.obtain(); 2752 data.writeInterfaceToken(IActivityManager.descriptor); 2753 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2754 data.writeString(packageName); 2755 data.writeStrongBinder(receiver != null ? receiver.asBinder() : null); 2756 filter.writeToParcel(data, 0); 2757 data.writeString(perm); 2758 data.writeInt(userId); 2759 mRemote.transact(REGISTER_RECEIVER_TRANSACTION, data, reply, 0); 2760 reply.readException(); 2761 Intent intent = null; 2762 int haveIntent = reply.readInt(); 2763 if (haveIntent != 0) { 2764 intent = Intent.CREATOR.createFromParcel(reply); 2765 } 2766 reply.recycle(); 2767 data.recycle(); 2768 return intent; 2769 } 2770 public void unregisterReceiver(IIntentReceiver receiver) throws RemoteException 2771 { 2772 Parcel data = Parcel.obtain(); 2773 Parcel reply = Parcel.obtain(); 2774 data.writeInterfaceToken(IActivityManager.descriptor); 2775 data.writeStrongBinder(receiver.asBinder()); 2776 mRemote.transact(UNREGISTER_RECEIVER_TRANSACTION, data, reply, 0); 2777 reply.readException(); 2778 data.recycle(); 2779 reply.recycle(); 2780 } 2781 public int broadcastIntent(IApplicationThread caller, 2782 Intent intent, String resolvedType, IIntentReceiver resultTo, 2783 int resultCode, String resultData, Bundle map, 2784 String requiredPermission, int appOp, boolean serialized, 2785 boolean sticky, int userId) throws RemoteException 2786 { 2787 Parcel data = Parcel.obtain(); 2788 Parcel reply = Parcel.obtain(); 2789 data.writeInterfaceToken(IActivityManager.descriptor); 2790 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2791 intent.writeToParcel(data, 0); 2792 data.writeString(resolvedType); 2793 data.writeStrongBinder(resultTo != null ? resultTo.asBinder() : null); 2794 data.writeInt(resultCode); 2795 data.writeString(resultData); 2796 data.writeBundle(map); 2797 data.writeString(requiredPermission); 2798 data.writeInt(appOp); 2799 data.writeInt(serialized ? 1 : 0); 2800 data.writeInt(sticky ? 1 : 0); 2801 data.writeInt(userId); 2802 mRemote.transact(BROADCAST_INTENT_TRANSACTION, data, reply, 0); 2803 reply.readException(); 2804 int res = reply.readInt(); 2805 reply.recycle(); 2806 data.recycle(); 2807 return res; 2808 } 2809 public void unbroadcastIntent(IApplicationThread caller, Intent intent, int userId) 2810 throws RemoteException 2811 { 2812 Parcel data = Parcel.obtain(); 2813 Parcel reply = Parcel.obtain(); 2814 data.writeInterfaceToken(IActivityManager.descriptor); 2815 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2816 intent.writeToParcel(data, 0); 2817 data.writeInt(userId); 2818 mRemote.transact(UNBROADCAST_INTENT_TRANSACTION, data, reply, 0); 2819 reply.readException(); 2820 data.recycle(); 2821 reply.recycle(); 2822 } 2823 public void finishReceiver(IBinder who, int resultCode, String resultData, Bundle map, boolean abortBroadcast) throws RemoteException 2824 { 2825 Parcel data = Parcel.obtain(); 2826 Parcel reply = Parcel.obtain(); 2827 data.writeInterfaceToken(IActivityManager.descriptor); 2828 data.writeStrongBinder(who); 2829 data.writeInt(resultCode); 2830 data.writeString(resultData); 2831 data.writeBundle(map); 2832 data.writeInt(abortBroadcast ? 1 : 0); 2833 mRemote.transact(FINISH_RECEIVER_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2834 reply.readException(); 2835 data.recycle(); 2836 reply.recycle(); 2837 } 2838 public void attachApplication(IApplicationThread app) throws RemoteException 2839 { 2840 Parcel data = Parcel.obtain(); 2841 Parcel reply = Parcel.obtain(); 2842 data.writeInterfaceToken(IActivityManager.descriptor); 2843 data.writeStrongBinder(app.asBinder()); 2844 mRemote.transact(ATTACH_APPLICATION_TRANSACTION, data, reply, 0); 2845 reply.readException(); 2846 data.recycle(); 2847 reply.recycle(); 2848 } 2849 public void activityIdle(IBinder token, Configuration config, boolean stopProfiling) 2850 throws RemoteException 2851 { 2852 Parcel data = Parcel.obtain(); 2853 Parcel reply = Parcel.obtain(); 2854 data.writeInterfaceToken(IActivityManager.descriptor); 2855 data.writeStrongBinder(token); 2856 if (config != null) { 2857 data.writeInt(1); 2858 config.writeToParcel(data, 0); 2859 } else { 2860 data.writeInt(0); 2861 } 2862 data.writeInt(stopProfiling ? 1 : 0); 2863 mRemote.transact(ACTIVITY_IDLE_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2864 reply.readException(); 2865 data.recycle(); 2866 reply.recycle(); 2867 } 2868 public void activityResumed(IBinder token) throws RemoteException 2869 { 2870 Parcel data = Parcel.obtain(); 2871 Parcel reply = Parcel.obtain(); 2872 data.writeInterfaceToken(IActivityManager.descriptor); 2873 data.writeStrongBinder(token); 2874 mRemote.transact(ACTIVITY_RESUMED_TRANSACTION, data, reply, 0); 2875 reply.readException(); 2876 data.recycle(); 2877 reply.recycle(); 2878 } 2879 public void activityPaused(IBinder token) throws RemoteException 2880 { 2881 Parcel data = Parcel.obtain(); 2882 Parcel reply = Parcel.obtain(); 2883 data.writeInterfaceToken(IActivityManager.descriptor); 2884 data.writeStrongBinder(token); 2885 mRemote.transact(ACTIVITY_PAUSED_TRANSACTION, data, reply, 0); 2886 reply.readException(); 2887 data.recycle(); 2888 reply.recycle(); 2889 } 2890 public void activityStopped(IBinder token, Bundle state, 2891 PersistableBundle persistentState, CharSequence description) throws RemoteException 2892 { 2893 Parcel data = Parcel.obtain(); 2894 Parcel reply = Parcel.obtain(); 2895 data.writeInterfaceToken(IActivityManager.descriptor); 2896 data.writeStrongBinder(token); 2897 data.writeBundle(state); 2898 data.writePersistableBundle(persistentState); 2899 TextUtils.writeToParcel(description, data, 0); 2900 mRemote.transact(ACTIVITY_STOPPED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2901 reply.readException(); 2902 data.recycle(); 2903 reply.recycle(); 2904 } 2905 public void activitySlept(IBinder token) throws RemoteException 2906 { 2907 Parcel data = Parcel.obtain(); 2908 Parcel reply = Parcel.obtain(); 2909 data.writeInterfaceToken(IActivityManager.descriptor); 2910 data.writeStrongBinder(token); 2911 mRemote.transact(ACTIVITY_SLEPT_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2912 reply.readException(); 2913 data.recycle(); 2914 reply.recycle(); 2915 } 2916 public void activityDestroyed(IBinder token) throws RemoteException 2917 { 2918 Parcel data = Parcel.obtain(); 2919 Parcel reply = Parcel.obtain(); 2920 data.writeInterfaceToken(IActivityManager.descriptor); 2921 data.writeStrongBinder(token); 2922 mRemote.transact(ACTIVITY_DESTROYED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2923 reply.readException(); 2924 data.recycle(); 2925 reply.recycle(); 2926 } 2927 public String getCallingPackage(IBinder token) throws RemoteException 2928 { 2929 Parcel data = Parcel.obtain(); 2930 Parcel reply = Parcel.obtain(); 2931 data.writeInterfaceToken(IActivityManager.descriptor); 2932 data.writeStrongBinder(token); 2933 mRemote.transact(GET_CALLING_PACKAGE_TRANSACTION, data, reply, 0); 2934 reply.readException(); 2935 String res = reply.readString(); 2936 data.recycle(); 2937 reply.recycle(); 2938 return res; 2939 } 2940 public ComponentName getCallingActivity(IBinder token) 2941 throws RemoteException { 2942 Parcel data = Parcel.obtain(); 2943 Parcel reply = Parcel.obtain(); 2944 data.writeInterfaceToken(IActivityManager.descriptor); 2945 data.writeStrongBinder(token); 2946 mRemote.transact(GET_CALLING_ACTIVITY_TRANSACTION, data, reply, 0); 2947 reply.readException(); 2948 ComponentName res = ComponentName.readFromParcel(reply); 2949 data.recycle(); 2950 reply.recycle(); 2951 return res; 2952 } 2953 public List<IAppTask> getAppTasks(String callingPackage) throws RemoteException { 2954 Parcel data = Parcel.obtain(); 2955 Parcel reply = Parcel.obtain(); 2956 data.writeInterfaceToken(IActivityManager.descriptor); 2957 data.writeString(callingPackage); 2958 mRemote.transact(GET_APP_TASKS_TRANSACTION, data, reply, 0); 2959 reply.readException(); 2960 ArrayList<IAppTask> list = null; 2961 int N = reply.readInt(); 2962 if (N >= 0) { 2963 list = new ArrayList<IAppTask>(); 2964 while (N > 0) { 2965 IAppTask task = IAppTask.Stub.asInterface(reply.readStrongBinder()); 2966 list.add(task); 2967 N--; 2968 } 2969 } 2970 data.recycle(); 2971 reply.recycle(); 2972 return list; 2973 } 2974 public int addAppTask(IBinder activityToken, Intent intent, 2975 ActivityManager.TaskDescription description, Bitmap thumbnail) throws RemoteException { 2976 Parcel data = Parcel.obtain(); 2977 Parcel reply = Parcel.obtain(); 2978 data.writeInterfaceToken(IActivityManager.descriptor); 2979 data.writeStrongBinder(activityToken); 2980 intent.writeToParcel(data, 0); 2981 description.writeToParcel(data, 0); 2982 thumbnail.writeToParcel(data, 0); 2983 mRemote.transact(ADD_APP_TASK_TRANSACTION, data, reply, 0); 2984 reply.readException(); 2985 int res = reply.readInt(); 2986 data.recycle(); 2987 reply.recycle(); 2988 return res; 2989 } 2990 public Point getAppTaskThumbnailSize() throws RemoteException { 2991 Parcel data = Parcel.obtain(); 2992 Parcel reply = Parcel.obtain(); 2993 data.writeInterfaceToken(IActivityManager.descriptor); 2994 mRemote.transact(GET_APP_TASK_THUMBNAIL_SIZE_TRANSACTION, data, reply, 0); 2995 reply.readException(); 2996 Point size = Point.CREATOR.createFromParcel(reply); 2997 data.recycle(); 2998 reply.recycle(); 2999 return size; 3000 } 3001 public List getTasks(int maxNum, int flags) throws RemoteException { 3002 Parcel data = Parcel.obtain(); 3003 Parcel reply = Parcel.obtain(); 3004 data.writeInterfaceToken(IActivityManager.descriptor); 3005 data.writeInt(maxNum); 3006 data.writeInt(flags); 3007 mRemote.transact(GET_TASKS_TRANSACTION, data, reply, 0); 3008 reply.readException(); 3009 ArrayList list = null; 3010 int N = reply.readInt(); 3011 if (N >= 0) { 3012 list = new ArrayList(); 3013 while (N > 0) { 3014 ActivityManager.RunningTaskInfo info = 3015 ActivityManager.RunningTaskInfo.CREATOR 3016 .createFromParcel(reply); 3017 list.add(info); 3018 N--; 3019 } 3020 } 3021 data.recycle(); 3022 reply.recycle(); 3023 return list; 3024 } 3025 public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, 3026 int flags, int userId) throws RemoteException { 3027 Parcel data = Parcel.obtain(); 3028 Parcel reply = Parcel.obtain(); 3029 data.writeInterfaceToken(IActivityManager.descriptor); 3030 data.writeInt(maxNum); 3031 data.writeInt(flags); 3032 data.writeInt(userId); 3033 mRemote.transact(GET_RECENT_TASKS_TRANSACTION, data, reply, 0); 3034 reply.readException(); 3035 ArrayList<ActivityManager.RecentTaskInfo> list 3036 = reply.createTypedArrayList(ActivityManager.RecentTaskInfo.CREATOR); 3037 data.recycle(); 3038 reply.recycle(); 3039 return list; 3040 } 3041 public ActivityManager.TaskThumbnail getTaskThumbnail(int id) throws RemoteException { 3042 Parcel data = Parcel.obtain(); 3043 Parcel reply = Parcel.obtain(); 3044 data.writeInterfaceToken(IActivityManager.descriptor); 3045 data.writeInt(id); 3046 mRemote.transact(GET_TASK_THUMBNAIL_TRANSACTION, data, reply, 0); 3047 reply.readException(); 3048 ActivityManager.TaskThumbnail taskThumbnail = null; 3049 if (reply.readInt() != 0) { 3050 taskThumbnail = ActivityManager.TaskThumbnail.CREATOR.createFromParcel(reply); 3051 } 3052 data.recycle(); 3053 reply.recycle(); 3054 return taskThumbnail; 3055 } 3056 public List getServices(int maxNum, int flags) throws RemoteException { 3057 Parcel data = Parcel.obtain(); 3058 Parcel reply = Parcel.obtain(); 3059 data.writeInterfaceToken(IActivityManager.descriptor); 3060 data.writeInt(maxNum); 3061 data.writeInt(flags); 3062 mRemote.transact(GET_SERVICES_TRANSACTION, data, reply, 0); 3063 reply.readException(); 3064 ArrayList list = null; 3065 int N = reply.readInt(); 3066 if (N >= 0) { 3067 list = new ArrayList(); 3068 while (N > 0) { 3069 ActivityManager.RunningServiceInfo info = 3070 ActivityManager.RunningServiceInfo.CREATOR 3071 .createFromParcel(reply); 3072 list.add(info); 3073 N--; 3074 } 3075 } 3076 data.recycle(); 3077 reply.recycle(); 3078 return list; 3079 } 3080 public List<ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState() 3081 throws RemoteException { 3082 Parcel data = Parcel.obtain(); 3083 Parcel reply = Parcel.obtain(); 3084 data.writeInterfaceToken(IActivityManager.descriptor); 3085 mRemote.transact(GET_PROCESSES_IN_ERROR_STATE_TRANSACTION, data, reply, 0); 3086 reply.readException(); 3087 ArrayList<ActivityManager.ProcessErrorStateInfo> list 3088 = reply.createTypedArrayList(ActivityManager.ProcessErrorStateInfo.CREATOR); 3089 data.recycle(); 3090 reply.recycle(); 3091 return list; 3092 } 3093 public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses() 3094 throws RemoteException { 3095 Parcel data = Parcel.obtain(); 3096 Parcel reply = Parcel.obtain(); 3097 data.writeInterfaceToken(IActivityManager.descriptor); 3098 mRemote.transact(GET_RUNNING_APP_PROCESSES_TRANSACTION, data, reply, 0); 3099 reply.readException(); 3100 ArrayList<ActivityManager.RunningAppProcessInfo> list 3101 = reply.createTypedArrayList(ActivityManager.RunningAppProcessInfo.CREATOR); 3102 data.recycle(); 3103 reply.recycle(); 3104 return list; 3105 } 3106 public List<ApplicationInfo> getRunningExternalApplications() 3107 throws RemoteException { 3108 Parcel data = Parcel.obtain(); 3109 Parcel reply = Parcel.obtain(); 3110 data.writeInterfaceToken(IActivityManager.descriptor); 3111 mRemote.transact(GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION, data, reply, 0); 3112 reply.readException(); 3113 ArrayList<ApplicationInfo> list 3114 = reply.createTypedArrayList(ApplicationInfo.CREATOR); 3115 data.recycle(); 3116 reply.recycle(); 3117 return list; 3118 } 3119 public void moveTaskToFront(int task, int flags, Bundle options) throws RemoteException 3120 { 3121 Parcel data = Parcel.obtain(); 3122 Parcel reply = Parcel.obtain(); 3123 data.writeInterfaceToken(IActivityManager.descriptor); 3124 data.writeInt(task); 3125 data.writeInt(flags); 3126 if (options != null) { 3127 data.writeInt(1); 3128 options.writeToParcel(data, 0); 3129 } else { 3130 data.writeInt(0); 3131 } 3132 mRemote.transact(MOVE_TASK_TO_FRONT_TRANSACTION, data, reply, 0); 3133 reply.readException(); 3134 data.recycle(); 3135 reply.recycle(); 3136 } 3137 public void moveTaskToBack(int task) throws RemoteException 3138 { 3139 Parcel data = Parcel.obtain(); 3140 Parcel reply = Parcel.obtain(); 3141 data.writeInterfaceToken(IActivityManager.descriptor); 3142 data.writeInt(task); 3143 mRemote.transact(MOVE_TASK_TO_BACK_TRANSACTION, data, reply, 0); 3144 reply.readException(); 3145 data.recycle(); 3146 reply.recycle(); 3147 } 3148 public boolean moveActivityTaskToBack(IBinder token, boolean nonRoot) 3149 throws RemoteException { 3150 Parcel data = Parcel.obtain(); 3151 Parcel reply = Parcel.obtain(); 3152 data.writeInterfaceToken(IActivityManager.descriptor); 3153 data.writeStrongBinder(token); 3154 data.writeInt(nonRoot ? 1 : 0); 3155 mRemote.transact(MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION, data, reply, 0); 3156 reply.readException(); 3157 boolean res = reply.readInt() != 0; 3158 data.recycle(); 3159 reply.recycle(); 3160 return res; 3161 } 3162 public void moveTaskBackwards(int task) throws RemoteException 3163 { 3164 Parcel data = Parcel.obtain(); 3165 Parcel reply = Parcel.obtain(); 3166 data.writeInterfaceToken(IActivityManager.descriptor); 3167 data.writeInt(task); 3168 mRemote.transact(MOVE_TASK_BACKWARDS_TRANSACTION, data, reply, 0); 3169 reply.readException(); 3170 data.recycle(); 3171 reply.recycle(); 3172 } 3173 @Override 3174 public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException 3175 { 3176 Parcel data = Parcel.obtain(); 3177 Parcel reply = Parcel.obtain(); 3178 data.writeInterfaceToken(IActivityManager.descriptor); 3179 data.writeInt(taskId); 3180 data.writeInt(stackId); 3181 data.writeInt(toTop ? 1 : 0); 3182 mRemote.transact(MOVE_TASK_TO_STACK_TRANSACTION, data, reply, 0); 3183 reply.readException(); 3184 data.recycle(); 3185 reply.recycle(); 3186 } 3187 @Override 3188 public void resizeStack(int stackBoxId, Rect r) throws RemoteException 3189 { 3190 Parcel data = Parcel.obtain(); 3191 Parcel reply = Parcel.obtain(); 3192 data.writeInterfaceToken(IActivityManager.descriptor); 3193 data.writeInt(stackBoxId); 3194 r.writeToParcel(data, 0); 3195 mRemote.transact(RESIZE_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3196 reply.readException(); 3197 data.recycle(); 3198 reply.recycle(); 3199 } 3200 @Override 3201 public List<StackInfo> getAllStackInfos() throws RemoteException 3202 { 3203 Parcel data = Parcel.obtain(); 3204 Parcel reply = Parcel.obtain(); 3205 data.writeInterfaceToken(IActivityManager.descriptor); 3206 mRemote.transact(GET_ALL_STACK_INFOS_TRANSACTION, data, reply, 0); 3207 reply.readException(); 3208 ArrayList<StackInfo> list = reply.createTypedArrayList(StackInfo.CREATOR); 3209 data.recycle(); 3210 reply.recycle(); 3211 return list; 3212 } 3213 @Override 3214 public StackInfo getStackInfo(int stackId) throws RemoteException 3215 { 3216 Parcel data = Parcel.obtain(); 3217 Parcel reply = Parcel.obtain(); 3218 data.writeInterfaceToken(IActivityManager.descriptor); 3219 data.writeInt(stackId); 3220 mRemote.transact(GET_STACK_INFO_TRANSACTION, data, reply, 0); 3221 reply.readException(); 3222 int res = reply.readInt(); 3223 StackInfo info = null; 3224 if (res != 0) { 3225 info = StackInfo.CREATOR.createFromParcel(reply); 3226 } 3227 data.recycle(); 3228 reply.recycle(); 3229 return info; 3230 } 3231 @Override 3232 public boolean isInHomeStack(int taskId) throws RemoteException { 3233 Parcel data = Parcel.obtain(); 3234 Parcel reply = Parcel.obtain(); 3235 data.writeInterfaceToken(IActivityManager.descriptor); 3236 data.writeInt(taskId); 3237 mRemote.transact(IS_IN_HOME_STACK_TRANSACTION, data, reply, 0); 3238 reply.readException(); 3239 boolean isInHomeStack = reply.readInt() > 0; 3240 data.recycle(); 3241 reply.recycle(); 3242 return isInHomeStack; 3243 } 3244 @Override 3245 public void setFocusedStack(int stackId) throws RemoteException 3246 { 3247 Parcel data = Parcel.obtain(); 3248 Parcel reply = Parcel.obtain(); 3249 data.writeInterfaceToken(IActivityManager.descriptor); 3250 data.writeInt(stackId); 3251 mRemote.transact(SET_FOCUSED_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3252 reply.readException(); 3253 data.recycle(); 3254 reply.recycle(); 3255 } 3256 public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException 3257 { 3258 Parcel data = Parcel.obtain(); 3259 Parcel reply = Parcel.obtain(); 3260 data.writeInterfaceToken(IActivityManager.descriptor); 3261 data.writeStrongBinder(token); 3262 data.writeInt(onlyRoot ? 1 : 0); 3263 mRemote.transact(GET_TASK_FOR_ACTIVITY_TRANSACTION, data, reply, 0); 3264 reply.readException(); 3265 int res = reply.readInt(); 3266 data.recycle(); 3267 reply.recycle(); 3268 return res; 3269 } 3270 public ContentProviderHolder getContentProvider(IApplicationThread caller, 3271 String name, int userId, boolean stable) throws RemoteException { 3272 Parcel data = Parcel.obtain(); 3273 Parcel reply = Parcel.obtain(); 3274 data.writeInterfaceToken(IActivityManager.descriptor); 3275 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3276 data.writeString(name); 3277 data.writeInt(userId); 3278 data.writeInt(stable ? 1 : 0); 3279 mRemote.transact(GET_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 3280 reply.readException(); 3281 int res = reply.readInt(); 3282 ContentProviderHolder cph = null; 3283 if (res != 0) { 3284 cph = ContentProviderHolder.CREATOR.createFromParcel(reply); 3285 } 3286 data.recycle(); 3287 reply.recycle(); 3288 return cph; 3289 } 3290 public ContentProviderHolder getContentProviderExternal(String name, int userId, IBinder token) 3291 throws RemoteException { 3292 Parcel data = Parcel.obtain(); 3293 Parcel reply = Parcel.obtain(); 3294 data.writeInterfaceToken(IActivityManager.descriptor); 3295 data.writeString(name); 3296 data.writeInt(userId); 3297 data.writeStrongBinder(token); 3298 mRemote.transact(GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0); 3299 reply.readException(); 3300 int res = reply.readInt(); 3301 ContentProviderHolder cph = null; 3302 if (res != 0) { 3303 cph = ContentProviderHolder.CREATOR.createFromParcel(reply); 3304 } 3305 data.recycle(); 3306 reply.recycle(); 3307 return cph; 3308 } 3309 public void publishContentProviders(IApplicationThread caller, 3310 List<ContentProviderHolder> providers) throws RemoteException 3311 { 3312 Parcel data = Parcel.obtain(); 3313 Parcel reply = Parcel.obtain(); 3314 data.writeInterfaceToken(IActivityManager.descriptor); 3315 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3316 data.writeTypedList(providers); 3317 mRemote.transact(PUBLISH_CONTENT_PROVIDERS_TRANSACTION, data, reply, 0); 3318 reply.readException(); 3319 data.recycle(); 3320 reply.recycle(); 3321 } 3322 public boolean refContentProvider(IBinder connection, int stable, int unstable) 3323 throws RemoteException { 3324 Parcel data = Parcel.obtain(); 3325 Parcel reply = Parcel.obtain(); 3326 data.writeInterfaceToken(IActivityManager.descriptor); 3327 data.writeStrongBinder(connection); 3328 data.writeInt(stable); 3329 data.writeInt(unstable); 3330 mRemote.transact(REF_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 3331 reply.readException(); 3332 boolean res = reply.readInt() != 0; 3333 data.recycle(); 3334 reply.recycle(); 3335 return res; 3336 } 3337 3338 public void unstableProviderDied(IBinder connection) throws RemoteException { 3339 Parcel data = Parcel.obtain(); 3340 Parcel reply = Parcel.obtain(); 3341 data.writeInterfaceToken(IActivityManager.descriptor); 3342 data.writeStrongBinder(connection); 3343 mRemote.transact(UNSTABLE_PROVIDER_DIED_TRANSACTION, data, reply, 0); 3344 reply.readException(); 3345 data.recycle(); 3346 reply.recycle(); 3347 } 3348 3349 @Override 3350 public void appNotRespondingViaProvider(IBinder connection) throws RemoteException { 3351 Parcel data = Parcel.obtain(); 3352 Parcel reply = Parcel.obtain(); 3353 data.writeInterfaceToken(IActivityManager.descriptor); 3354 data.writeStrongBinder(connection); 3355 mRemote.transact(APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION, data, reply, 0); 3356 reply.readException(); 3357 data.recycle(); 3358 reply.recycle(); 3359 } 3360 3361 public void removeContentProvider(IBinder connection, boolean stable) throws RemoteException { 3362 Parcel data = Parcel.obtain(); 3363 Parcel reply = Parcel.obtain(); 3364 data.writeInterfaceToken(IActivityManager.descriptor); 3365 data.writeStrongBinder(connection); 3366 data.writeInt(stable ? 1 : 0); 3367 mRemote.transact(REMOVE_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 3368 reply.readException(); 3369 data.recycle(); 3370 reply.recycle(); 3371 } 3372 3373 public void removeContentProviderExternal(String name, IBinder token) throws RemoteException { 3374 Parcel data = Parcel.obtain(); 3375 Parcel reply = Parcel.obtain(); 3376 data.writeInterfaceToken(IActivityManager.descriptor); 3377 data.writeString(name); 3378 data.writeStrongBinder(token); 3379 mRemote.transact(REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0); 3380 reply.readException(); 3381 data.recycle(); 3382 reply.recycle(); 3383 } 3384 3385 public PendingIntent getRunningServiceControlPanel(ComponentName service) 3386 throws RemoteException 3387 { 3388 Parcel data = Parcel.obtain(); 3389 Parcel reply = Parcel.obtain(); 3390 data.writeInterfaceToken(IActivityManager.descriptor); 3391 service.writeToParcel(data, 0); 3392 mRemote.transact(GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION, data, reply, 0); 3393 reply.readException(); 3394 PendingIntent res = PendingIntent.readPendingIntentOrNullFromParcel(reply); 3395 data.recycle(); 3396 reply.recycle(); 3397 return res; 3398 } 3399 3400 public ComponentName startService(IApplicationThread caller, Intent service, 3401 String resolvedType, int userId) throws RemoteException 3402 { 3403 Parcel data = Parcel.obtain(); 3404 Parcel reply = Parcel.obtain(); 3405 data.writeInterfaceToken(IActivityManager.descriptor); 3406 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3407 service.writeToParcel(data, 0); 3408 data.writeString(resolvedType); 3409 data.writeInt(userId); 3410 mRemote.transact(START_SERVICE_TRANSACTION, data, reply, 0); 3411 reply.readException(); 3412 ComponentName res = ComponentName.readFromParcel(reply); 3413 data.recycle(); 3414 reply.recycle(); 3415 return res; 3416 } 3417 public int stopService(IApplicationThread caller, Intent service, 3418 String resolvedType, int userId) throws RemoteException 3419 { 3420 Parcel data = Parcel.obtain(); 3421 Parcel reply = Parcel.obtain(); 3422 data.writeInterfaceToken(IActivityManager.descriptor); 3423 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3424 service.writeToParcel(data, 0); 3425 data.writeString(resolvedType); 3426 data.writeInt(userId); 3427 mRemote.transact(STOP_SERVICE_TRANSACTION, data, reply, 0); 3428 reply.readException(); 3429 int res = reply.readInt(); 3430 reply.recycle(); 3431 data.recycle(); 3432 return res; 3433 } 3434 public boolean stopServiceToken(ComponentName className, IBinder token, 3435 int startId) throws RemoteException { 3436 Parcel data = Parcel.obtain(); 3437 Parcel reply = Parcel.obtain(); 3438 data.writeInterfaceToken(IActivityManager.descriptor); 3439 ComponentName.writeToParcel(className, data); 3440 data.writeStrongBinder(token); 3441 data.writeInt(startId); 3442 mRemote.transact(STOP_SERVICE_TOKEN_TRANSACTION, data, reply, 0); 3443 reply.readException(); 3444 boolean res = reply.readInt() != 0; 3445 data.recycle(); 3446 reply.recycle(); 3447 return res; 3448 } 3449 public void setServiceForeground(ComponentName className, IBinder token, 3450 int id, Notification notification, boolean removeNotification) throws RemoteException { 3451 Parcel data = Parcel.obtain(); 3452 Parcel reply = Parcel.obtain(); 3453 data.writeInterfaceToken(IActivityManager.descriptor); 3454 ComponentName.writeToParcel(className, data); 3455 data.writeStrongBinder(token); 3456 data.writeInt(id); 3457 if (notification != null) { 3458 data.writeInt(1); 3459 notification.writeToParcel(data, 0); 3460 } else { 3461 data.writeInt(0); 3462 } 3463 data.writeInt(removeNotification ? 1 : 0); 3464 mRemote.transact(SET_SERVICE_FOREGROUND_TRANSACTION, data, reply, 0); 3465 reply.readException(); 3466 data.recycle(); 3467 reply.recycle(); 3468 } 3469 public int bindService(IApplicationThread caller, IBinder token, 3470 Intent service, String resolvedType, IServiceConnection connection, 3471 int flags, int userId) throws RemoteException { 3472 Parcel data = Parcel.obtain(); 3473 Parcel reply = Parcel.obtain(); 3474 data.writeInterfaceToken(IActivityManager.descriptor); 3475 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3476 data.writeStrongBinder(token); 3477 service.writeToParcel(data, 0); 3478 data.writeString(resolvedType); 3479 data.writeStrongBinder(connection.asBinder()); 3480 data.writeInt(flags); 3481 data.writeInt(userId); 3482 mRemote.transact(BIND_SERVICE_TRANSACTION, data, reply, 0); 3483 reply.readException(); 3484 int res = reply.readInt(); 3485 data.recycle(); 3486 reply.recycle(); 3487 return res; 3488 } 3489 public boolean unbindService(IServiceConnection connection) throws RemoteException 3490 { 3491 Parcel data = Parcel.obtain(); 3492 Parcel reply = Parcel.obtain(); 3493 data.writeInterfaceToken(IActivityManager.descriptor); 3494 data.writeStrongBinder(connection.asBinder()); 3495 mRemote.transact(UNBIND_SERVICE_TRANSACTION, data, reply, 0); 3496 reply.readException(); 3497 boolean res = reply.readInt() != 0; 3498 data.recycle(); 3499 reply.recycle(); 3500 return res; 3501 } 3502 3503 public void publishService(IBinder token, 3504 Intent intent, IBinder service) throws RemoteException { 3505 Parcel data = Parcel.obtain(); 3506 Parcel reply = Parcel.obtain(); 3507 data.writeInterfaceToken(IActivityManager.descriptor); 3508 data.writeStrongBinder(token); 3509 intent.writeToParcel(data, 0); 3510 data.writeStrongBinder(service); 3511 mRemote.transact(PUBLISH_SERVICE_TRANSACTION, data, reply, 0); 3512 reply.readException(); 3513 data.recycle(); 3514 reply.recycle(); 3515 } 3516 3517 public void unbindFinished(IBinder token, Intent intent, boolean doRebind) 3518 throws RemoteException { 3519 Parcel data = Parcel.obtain(); 3520 Parcel reply = Parcel.obtain(); 3521 data.writeInterfaceToken(IActivityManager.descriptor); 3522 data.writeStrongBinder(token); 3523 intent.writeToParcel(data, 0); 3524 data.writeInt(doRebind ? 1 : 0); 3525 mRemote.transact(UNBIND_FINISHED_TRANSACTION, data, reply, 0); 3526 reply.readException(); 3527 data.recycle(); 3528 reply.recycle(); 3529 } 3530 3531 public void serviceDoneExecuting(IBinder token, int type, int startId, 3532 int res) throws RemoteException { 3533 Parcel data = Parcel.obtain(); 3534 Parcel reply = Parcel.obtain(); 3535 data.writeInterfaceToken(IActivityManager.descriptor); 3536 data.writeStrongBinder(token); 3537 data.writeInt(type); 3538 data.writeInt(startId); 3539 data.writeInt(res); 3540 mRemote.transact(SERVICE_DONE_EXECUTING_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3541 reply.readException(); 3542 data.recycle(); 3543 reply.recycle(); 3544 } 3545 3546 public IBinder peekService(Intent service, String resolvedType) throws RemoteException { 3547 Parcel data = Parcel.obtain(); 3548 Parcel reply = Parcel.obtain(); 3549 data.writeInterfaceToken(IActivityManager.descriptor); 3550 service.writeToParcel(data, 0); 3551 data.writeString(resolvedType); 3552 mRemote.transact(PEEK_SERVICE_TRANSACTION, data, reply, 0); 3553 reply.readException(); 3554 IBinder binder = reply.readStrongBinder(); 3555 reply.recycle(); 3556 data.recycle(); 3557 return binder; 3558 } 3559 3560 public boolean bindBackupAgent(ApplicationInfo app, int backupRestoreMode) 3561 throws RemoteException { 3562 Parcel data = Parcel.obtain(); 3563 Parcel reply = Parcel.obtain(); 3564 data.writeInterfaceToken(IActivityManager.descriptor); 3565 app.writeToParcel(data, 0); 3566 data.writeInt(backupRestoreMode); 3567 mRemote.transact(START_BACKUP_AGENT_TRANSACTION, data, reply, 0); 3568 reply.readException(); 3569 boolean success = reply.readInt() != 0; 3570 reply.recycle(); 3571 data.recycle(); 3572 return success; 3573 } 3574 3575 public void clearPendingBackup() throws RemoteException { 3576 Parcel data = Parcel.obtain(); 3577 Parcel reply = Parcel.obtain(); 3578 data.writeInterfaceToken(IActivityManager.descriptor); 3579 mRemote.transact(CLEAR_PENDING_BACKUP_TRANSACTION, data, reply, 0); 3580 reply.recycle(); 3581 data.recycle(); 3582 } 3583 3584 public void backupAgentCreated(String packageName, IBinder agent) throws RemoteException { 3585 Parcel data = Parcel.obtain(); 3586 Parcel reply = Parcel.obtain(); 3587 data.writeInterfaceToken(IActivityManager.descriptor); 3588 data.writeString(packageName); 3589 data.writeStrongBinder(agent); 3590 mRemote.transact(BACKUP_AGENT_CREATED_TRANSACTION, data, reply, 0); 3591 reply.recycle(); 3592 data.recycle(); 3593 } 3594 3595 public void unbindBackupAgent(ApplicationInfo app) throws RemoteException { 3596 Parcel data = Parcel.obtain(); 3597 Parcel reply = Parcel.obtain(); 3598 data.writeInterfaceToken(IActivityManager.descriptor); 3599 app.writeToParcel(data, 0); 3600 mRemote.transact(UNBIND_BACKUP_AGENT_TRANSACTION, data, reply, 0); 3601 reply.readException(); 3602 reply.recycle(); 3603 data.recycle(); 3604 } 3605 3606 public boolean startInstrumentation(ComponentName className, String profileFile, 3607 int flags, Bundle arguments, IInstrumentationWatcher watcher, 3608 IUiAutomationConnection connection, int userId, String instructionSet) 3609 throws RemoteException { 3610 Parcel data = Parcel.obtain(); 3611 Parcel reply = Parcel.obtain(); 3612 data.writeInterfaceToken(IActivityManager.descriptor); 3613 ComponentName.writeToParcel(className, data); 3614 data.writeString(profileFile); 3615 data.writeInt(flags); 3616 data.writeBundle(arguments); 3617 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null); 3618 data.writeStrongBinder(connection != null ? connection.asBinder() : null); 3619 data.writeInt(userId); 3620 data.writeString(instructionSet); 3621 mRemote.transact(START_INSTRUMENTATION_TRANSACTION, data, reply, 0); 3622 reply.readException(); 3623 boolean res = reply.readInt() != 0; 3624 reply.recycle(); 3625 data.recycle(); 3626 return res; 3627 } 3628 3629 public void finishInstrumentation(IApplicationThread target, 3630 int resultCode, Bundle results) throws RemoteException { 3631 Parcel data = Parcel.obtain(); 3632 Parcel reply = Parcel.obtain(); 3633 data.writeInterfaceToken(IActivityManager.descriptor); 3634 data.writeStrongBinder(target != null ? target.asBinder() : null); 3635 data.writeInt(resultCode); 3636 data.writeBundle(results); 3637 mRemote.transact(FINISH_INSTRUMENTATION_TRANSACTION, data, reply, 0); 3638 reply.readException(); 3639 data.recycle(); 3640 reply.recycle(); 3641 } 3642 public Configuration getConfiguration() throws RemoteException 3643 { 3644 Parcel data = Parcel.obtain(); 3645 Parcel reply = Parcel.obtain(); 3646 data.writeInterfaceToken(IActivityManager.descriptor); 3647 mRemote.transact(GET_CONFIGURATION_TRANSACTION, data, reply, 0); 3648 reply.readException(); 3649 Configuration res = Configuration.CREATOR.createFromParcel(reply); 3650 reply.recycle(); 3651 data.recycle(); 3652 return res; 3653 } 3654 public void updateConfiguration(Configuration values) throws RemoteException 3655 { 3656 Parcel data = Parcel.obtain(); 3657 Parcel reply = Parcel.obtain(); 3658 data.writeInterfaceToken(IActivityManager.descriptor); 3659 values.writeToParcel(data, 0); 3660 mRemote.transact(UPDATE_CONFIGURATION_TRANSACTION, data, reply, 0); 3661 reply.readException(); 3662 data.recycle(); 3663 reply.recycle(); 3664 } 3665 public void setRequestedOrientation(IBinder token, int requestedOrientation) 3666 throws RemoteException { 3667 Parcel data = Parcel.obtain(); 3668 Parcel reply = Parcel.obtain(); 3669 data.writeInterfaceToken(IActivityManager.descriptor); 3670 data.writeStrongBinder(token); 3671 data.writeInt(requestedOrientation); 3672 mRemote.transact(SET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0); 3673 reply.readException(); 3674 data.recycle(); 3675 reply.recycle(); 3676 } 3677 public int getRequestedOrientation(IBinder token) 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_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0); 3683 reply.readException(); 3684 int res = reply.readInt(); 3685 data.recycle(); 3686 reply.recycle(); 3687 return res; 3688 } 3689 public ComponentName getActivityClassForToken(IBinder token) 3690 throws RemoteException { 3691 Parcel data = Parcel.obtain(); 3692 Parcel reply = Parcel.obtain(); 3693 data.writeInterfaceToken(IActivityManager.descriptor); 3694 data.writeStrongBinder(token); 3695 mRemote.transact(GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION, data, reply, 0); 3696 reply.readException(); 3697 ComponentName res = ComponentName.readFromParcel(reply); 3698 data.recycle(); 3699 reply.recycle(); 3700 return res; 3701 } 3702 public String getPackageForToken(IBinder token) throws RemoteException 3703 { 3704 Parcel data = Parcel.obtain(); 3705 Parcel reply = Parcel.obtain(); 3706 data.writeInterfaceToken(IActivityManager.descriptor); 3707 data.writeStrongBinder(token); 3708 mRemote.transact(GET_PACKAGE_FOR_TOKEN_TRANSACTION, data, reply, 0); 3709 reply.readException(); 3710 String res = reply.readString(); 3711 data.recycle(); 3712 reply.recycle(); 3713 return res; 3714 } 3715 public IIntentSender getIntentSender(int type, 3716 String packageName, IBinder token, String resultWho, 3717 int requestCode, Intent[] intents, String[] resolvedTypes, int flags, 3718 Bundle options, int userId) throws RemoteException { 3719 Parcel data = Parcel.obtain(); 3720 Parcel reply = Parcel.obtain(); 3721 data.writeInterfaceToken(IActivityManager.descriptor); 3722 data.writeInt(type); 3723 data.writeString(packageName); 3724 data.writeStrongBinder(token); 3725 data.writeString(resultWho); 3726 data.writeInt(requestCode); 3727 if (intents != null) { 3728 data.writeInt(1); 3729 data.writeTypedArray(intents, 0); 3730 data.writeStringArray(resolvedTypes); 3731 } else { 3732 data.writeInt(0); 3733 } 3734 data.writeInt(flags); 3735 if (options != null) { 3736 data.writeInt(1); 3737 options.writeToParcel(data, 0); 3738 } else { 3739 data.writeInt(0); 3740 } 3741 data.writeInt(userId); 3742 mRemote.transact(GET_INTENT_SENDER_TRANSACTION, data, reply, 0); 3743 reply.readException(); 3744 IIntentSender res = IIntentSender.Stub.asInterface( 3745 reply.readStrongBinder()); 3746 data.recycle(); 3747 reply.recycle(); 3748 return res; 3749 } 3750 public void cancelIntentSender(IIntentSender sender) throws RemoteException { 3751 Parcel data = Parcel.obtain(); 3752 Parcel reply = Parcel.obtain(); 3753 data.writeInterfaceToken(IActivityManager.descriptor); 3754 data.writeStrongBinder(sender.asBinder()); 3755 mRemote.transact(CANCEL_INTENT_SENDER_TRANSACTION, data, reply, 0); 3756 reply.readException(); 3757 data.recycle(); 3758 reply.recycle(); 3759 } 3760 public String getPackageForIntentSender(IIntentSender sender) throws RemoteException { 3761 Parcel data = Parcel.obtain(); 3762 Parcel reply = Parcel.obtain(); 3763 data.writeInterfaceToken(IActivityManager.descriptor); 3764 data.writeStrongBinder(sender.asBinder()); 3765 mRemote.transact(GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 3766 reply.readException(); 3767 String res = reply.readString(); 3768 data.recycle(); 3769 reply.recycle(); 3770 return res; 3771 } 3772 public int getUidForIntentSender(IIntentSender sender) throws RemoteException { 3773 Parcel data = Parcel.obtain(); 3774 Parcel reply = Parcel.obtain(); 3775 data.writeInterfaceToken(IActivityManager.descriptor); 3776 data.writeStrongBinder(sender.asBinder()); 3777 mRemote.transact(GET_UID_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 3778 reply.readException(); 3779 int res = reply.readInt(); 3780 data.recycle(); 3781 reply.recycle(); 3782 return res; 3783 } 3784 public int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll, 3785 boolean requireFull, String name, String callerPackage) throws RemoteException { 3786 Parcel data = Parcel.obtain(); 3787 Parcel reply = Parcel.obtain(); 3788 data.writeInterfaceToken(IActivityManager.descriptor); 3789 data.writeInt(callingPid); 3790 data.writeInt(callingUid); 3791 data.writeInt(userId); 3792 data.writeInt(allowAll ? 1 : 0); 3793 data.writeInt(requireFull ? 1 : 0); 3794 data.writeString(name); 3795 data.writeString(callerPackage); 3796 mRemote.transact(HANDLE_INCOMING_USER_TRANSACTION, data, reply, 0); 3797 reply.readException(); 3798 int res = reply.readInt(); 3799 data.recycle(); 3800 reply.recycle(); 3801 return res; 3802 } 3803 public void setProcessLimit(int max) throws RemoteException 3804 { 3805 Parcel data = Parcel.obtain(); 3806 Parcel reply = Parcel.obtain(); 3807 data.writeInterfaceToken(IActivityManager.descriptor); 3808 data.writeInt(max); 3809 mRemote.transact(SET_PROCESS_LIMIT_TRANSACTION, data, reply, 0); 3810 reply.readException(); 3811 data.recycle(); 3812 reply.recycle(); 3813 } 3814 public int getProcessLimit() throws RemoteException 3815 { 3816 Parcel data = Parcel.obtain(); 3817 Parcel reply = Parcel.obtain(); 3818 data.writeInterfaceToken(IActivityManager.descriptor); 3819 mRemote.transact(GET_PROCESS_LIMIT_TRANSACTION, data, reply, 0); 3820 reply.readException(); 3821 int res = reply.readInt(); 3822 data.recycle(); 3823 reply.recycle(); 3824 return res; 3825 } 3826 public void setProcessForeground(IBinder token, int pid, 3827 boolean isForeground) throws RemoteException { 3828 Parcel data = Parcel.obtain(); 3829 Parcel reply = Parcel.obtain(); 3830 data.writeInterfaceToken(IActivityManager.descriptor); 3831 data.writeStrongBinder(token); 3832 data.writeInt(pid); 3833 data.writeInt(isForeground ? 1 : 0); 3834 mRemote.transact(SET_PROCESS_FOREGROUND_TRANSACTION, data, reply, 0); 3835 reply.readException(); 3836 data.recycle(); 3837 reply.recycle(); 3838 } 3839 public int checkPermission(String permission, int pid, int uid) 3840 throws RemoteException { 3841 Parcel data = Parcel.obtain(); 3842 Parcel reply = Parcel.obtain(); 3843 data.writeInterfaceToken(IActivityManager.descriptor); 3844 data.writeString(permission); 3845 data.writeInt(pid); 3846 data.writeInt(uid); 3847 mRemote.transact(CHECK_PERMISSION_TRANSACTION, data, reply, 0); 3848 reply.readException(); 3849 int res = reply.readInt(); 3850 data.recycle(); 3851 reply.recycle(); 3852 return res; 3853 } 3854 public boolean clearApplicationUserData(final String packageName, 3855 final IPackageDataObserver observer, final int userId) throws RemoteException { 3856 Parcel data = Parcel.obtain(); 3857 Parcel reply = Parcel.obtain(); 3858 data.writeInterfaceToken(IActivityManager.descriptor); 3859 data.writeString(packageName); 3860 data.writeStrongBinder((observer != null) ? observer.asBinder() : null); 3861 data.writeInt(userId); 3862 mRemote.transact(CLEAR_APP_DATA_TRANSACTION, data, reply, 0); 3863 reply.readException(); 3864 boolean res = reply.readInt() != 0; 3865 data.recycle(); 3866 reply.recycle(); 3867 return res; 3868 } 3869 public int checkUriPermission(Uri uri, int pid, int uid, int mode, int userId) 3870 throws RemoteException { 3871 Parcel data = Parcel.obtain(); 3872 Parcel reply = Parcel.obtain(); 3873 data.writeInterfaceToken(IActivityManager.descriptor); 3874 uri.writeToParcel(data, 0); 3875 data.writeInt(pid); 3876 data.writeInt(uid); 3877 data.writeInt(mode); 3878 data.writeInt(userId); 3879 mRemote.transact(CHECK_URI_PERMISSION_TRANSACTION, data, reply, 0); 3880 reply.readException(); 3881 int res = reply.readInt(); 3882 data.recycle(); 3883 reply.recycle(); 3884 return res; 3885 } 3886 public void grantUriPermission(IApplicationThread caller, String targetPkg, 3887 Uri uri, int mode, int userId) throws RemoteException { 3888 Parcel data = Parcel.obtain(); 3889 Parcel reply = Parcel.obtain(); 3890 data.writeInterfaceToken(IActivityManager.descriptor); 3891 data.writeStrongBinder(caller.asBinder()); 3892 data.writeString(targetPkg); 3893 uri.writeToParcel(data, 0); 3894 data.writeInt(mode); 3895 data.writeInt(userId); 3896 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 3897 reply.readException(); 3898 data.recycle(); 3899 reply.recycle(); 3900 } 3901 public void revokeUriPermission(IApplicationThread caller, Uri uri, 3902 int mode, int userId) throws RemoteException { 3903 Parcel data = Parcel.obtain(); 3904 Parcel reply = Parcel.obtain(); 3905 data.writeInterfaceToken(IActivityManager.descriptor); 3906 data.writeStrongBinder(caller.asBinder()); 3907 uri.writeToParcel(data, 0); 3908 data.writeInt(mode); 3909 data.writeInt(userId); 3910 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0); 3911 reply.readException(); 3912 data.recycle(); 3913 reply.recycle(); 3914 } 3915 3916 @Override 3917 public void takePersistableUriPermission(Uri uri, int mode, int userId) 3918 throws RemoteException { 3919 Parcel data = Parcel.obtain(); 3920 Parcel reply = Parcel.obtain(); 3921 data.writeInterfaceToken(IActivityManager.descriptor); 3922 uri.writeToParcel(data, 0); 3923 data.writeInt(mode); 3924 data.writeInt(userId); 3925 mRemote.transact(TAKE_PERSISTABLE_URI_PERMISSION_TRANSACTION, data, reply, 0); 3926 reply.readException(); 3927 data.recycle(); 3928 reply.recycle(); 3929 } 3930 3931 @Override 3932 public void releasePersistableUriPermission(Uri uri, int mode, int userId) 3933 throws RemoteException { 3934 Parcel data = Parcel.obtain(); 3935 Parcel reply = Parcel.obtain(); 3936 data.writeInterfaceToken(IActivityManager.descriptor); 3937 uri.writeToParcel(data, 0); 3938 data.writeInt(mode); 3939 data.writeInt(userId); 3940 mRemote.transact(RELEASE_PERSISTABLE_URI_PERMISSION_TRANSACTION, data, reply, 0); 3941 reply.readException(); 3942 data.recycle(); 3943 reply.recycle(); 3944 } 3945 3946 @Override 3947 public ParceledListSlice<UriPermission> getPersistedUriPermissions( 3948 String packageName, boolean incoming) throws RemoteException { 3949 Parcel data = Parcel.obtain(); 3950 Parcel reply = Parcel.obtain(); 3951 data.writeInterfaceToken(IActivityManager.descriptor); 3952 data.writeString(packageName); 3953 data.writeInt(incoming ? 1 : 0); 3954 mRemote.transact(GET_PERSISTED_URI_PERMISSIONS_TRANSACTION, data, reply, 0); 3955 reply.readException(); 3956 final ParceledListSlice<UriPermission> perms = ParceledListSlice.CREATOR.createFromParcel( 3957 reply); 3958 data.recycle(); 3959 reply.recycle(); 3960 return perms; 3961 } 3962 3963 public void showWaitingForDebugger(IApplicationThread who, boolean waiting) 3964 throws RemoteException { 3965 Parcel data = Parcel.obtain(); 3966 Parcel reply = Parcel.obtain(); 3967 data.writeInterfaceToken(IActivityManager.descriptor); 3968 data.writeStrongBinder(who.asBinder()); 3969 data.writeInt(waiting ? 1 : 0); 3970 mRemote.transact(SHOW_WAITING_FOR_DEBUGGER_TRANSACTION, data, reply, 0); 3971 reply.readException(); 3972 data.recycle(); 3973 reply.recycle(); 3974 } 3975 public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) throws RemoteException { 3976 Parcel data = Parcel.obtain(); 3977 Parcel reply = Parcel.obtain(); 3978 data.writeInterfaceToken(IActivityManager.descriptor); 3979 mRemote.transact(GET_MEMORY_INFO_TRANSACTION, data, reply, 0); 3980 reply.readException(); 3981 outInfo.readFromParcel(reply); 3982 data.recycle(); 3983 reply.recycle(); 3984 } 3985 public void unhandledBack() throws RemoteException 3986 { 3987 Parcel data = Parcel.obtain(); 3988 Parcel reply = Parcel.obtain(); 3989 data.writeInterfaceToken(IActivityManager.descriptor); 3990 mRemote.transact(UNHANDLED_BACK_TRANSACTION, data, reply, 0); 3991 reply.readException(); 3992 data.recycle(); 3993 reply.recycle(); 3994 } 3995 public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException 3996 { 3997 Parcel data = Parcel.obtain(); 3998 Parcel reply = Parcel.obtain(); 3999 data.writeInterfaceToken(IActivityManager.descriptor); 4000 mRemote.transact(OPEN_CONTENT_URI_TRANSACTION, data, reply, 0); 4001 reply.readException(); 4002 ParcelFileDescriptor pfd = null; 4003 if (reply.readInt() != 0) { 4004 pfd = ParcelFileDescriptor.CREATOR.createFromParcel(reply); 4005 } 4006 data.recycle(); 4007 reply.recycle(); 4008 return pfd; 4009 } 4010 public void setLockScreenShown(boolean shown) throws RemoteException 4011 { 4012 Parcel data = Parcel.obtain(); 4013 Parcel reply = Parcel.obtain(); 4014 data.writeInterfaceToken(IActivityManager.descriptor); 4015 data.writeInt(shown ? 1 : 0); 4016 mRemote.transact(SET_LOCK_SCREEN_SHOWN_TRANSACTION, data, reply, 0); 4017 reply.readException(); 4018 data.recycle(); 4019 reply.recycle(); 4020 } 4021 public void setDebugApp( 4022 String packageName, boolean waitForDebugger, boolean persistent) 4023 throws RemoteException 4024 { 4025 Parcel data = Parcel.obtain(); 4026 Parcel reply = Parcel.obtain(); 4027 data.writeInterfaceToken(IActivityManager.descriptor); 4028 data.writeString(packageName); 4029 data.writeInt(waitForDebugger ? 1 : 0); 4030 data.writeInt(persistent ? 1 : 0); 4031 mRemote.transact(SET_DEBUG_APP_TRANSACTION, data, reply, 0); 4032 reply.readException(); 4033 data.recycle(); 4034 reply.recycle(); 4035 } 4036 public void setAlwaysFinish(boolean enabled) throws RemoteException 4037 { 4038 Parcel data = Parcel.obtain(); 4039 Parcel reply = Parcel.obtain(); 4040 data.writeInterfaceToken(IActivityManager.descriptor); 4041 data.writeInt(enabled ? 1 : 0); 4042 mRemote.transact(SET_ALWAYS_FINISH_TRANSACTION, data, reply, 0); 4043 reply.readException(); 4044 data.recycle(); 4045 reply.recycle(); 4046 } 4047 public void setActivityController(IActivityController watcher) throws RemoteException 4048 { 4049 Parcel data = Parcel.obtain(); 4050 Parcel reply = Parcel.obtain(); 4051 data.writeInterfaceToken(IActivityManager.descriptor); 4052 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null); 4053 mRemote.transact(SET_ACTIVITY_CONTROLLER_TRANSACTION, data, reply, 0); 4054 reply.readException(); 4055 data.recycle(); 4056 reply.recycle(); 4057 } 4058 public void enterSafeMode() throws RemoteException { 4059 Parcel data = Parcel.obtain(); 4060 data.writeInterfaceToken(IActivityManager.descriptor); 4061 mRemote.transact(ENTER_SAFE_MODE_TRANSACTION, data, null, 0); 4062 data.recycle(); 4063 } 4064 public void noteWakeupAlarm(IIntentSender sender, int sourceUid, String sourcePkg) 4065 throws RemoteException { 4066 Parcel data = Parcel.obtain(); 4067 data.writeInterfaceToken(IActivityManager.descriptor); 4068 data.writeStrongBinder(sender.asBinder()); 4069 data.writeInt(sourceUid); 4070 data.writeString(sourcePkg); 4071 mRemote.transact(NOTE_WAKEUP_ALARM_TRANSACTION, data, null, 0); 4072 data.recycle(); 4073 } 4074 public boolean killPids(int[] pids, String reason, boolean secure) throws RemoteException { 4075 Parcel data = Parcel.obtain(); 4076 Parcel reply = Parcel.obtain(); 4077 data.writeInterfaceToken(IActivityManager.descriptor); 4078 data.writeIntArray(pids); 4079 data.writeString(reason); 4080 data.writeInt(secure ? 1 : 0); 4081 mRemote.transact(KILL_PIDS_TRANSACTION, data, reply, 0); 4082 reply.readException(); 4083 boolean res = reply.readInt() != 0; 4084 data.recycle(); 4085 reply.recycle(); 4086 return res; 4087 } 4088 @Override 4089 public boolean killProcessesBelowForeground(String reason) throws RemoteException { 4090 Parcel data = Parcel.obtain(); 4091 Parcel reply = Parcel.obtain(); 4092 data.writeInterfaceToken(IActivityManager.descriptor); 4093 data.writeString(reason); 4094 mRemote.transact(KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION, data, reply, 0); 4095 boolean res = reply.readInt() != 0; 4096 data.recycle(); 4097 reply.recycle(); 4098 return res; 4099 } 4100 public boolean testIsSystemReady() 4101 { 4102 /* this base class version is never called */ 4103 return true; 4104 } 4105 public void handleApplicationCrash(IBinder app, 4106 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException 4107 { 4108 Parcel data = Parcel.obtain(); 4109 Parcel reply = Parcel.obtain(); 4110 data.writeInterfaceToken(IActivityManager.descriptor); 4111 data.writeStrongBinder(app); 4112 crashInfo.writeToParcel(data, 0); 4113 mRemote.transact(HANDLE_APPLICATION_CRASH_TRANSACTION, data, reply, 0); 4114 reply.readException(); 4115 reply.recycle(); 4116 data.recycle(); 4117 } 4118 4119 public boolean handleApplicationWtf(IBinder app, String tag, boolean system, 4120 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException 4121 { 4122 Parcel data = Parcel.obtain(); 4123 Parcel reply = Parcel.obtain(); 4124 data.writeInterfaceToken(IActivityManager.descriptor); 4125 data.writeStrongBinder(app); 4126 data.writeString(tag); 4127 data.writeInt(system ? 1 : 0); 4128 crashInfo.writeToParcel(data, 0); 4129 mRemote.transact(HANDLE_APPLICATION_WTF_TRANSACTION, data, reply, 0); 4130 reply.readException(); 4131 boolean res = reply.readInt() != 0; 4132 reply.recycle(); 4133 data.recycle(); 4134 return res; 4135 } 4136 4137 public void handleApplicationStrictModeViolation(IBinder app, 4138 int violationMask, 4139 StrictMode.ViolationInfo info) throws RemoteException 4140 { 4141 Parcel data = Parcel.obtain(); 4142 Parcel reply = Parcel.obtain(); 4143 data.writeInterfaceToken(IActivityManager.descriptor); 4144 data.writeStrongBinder(app); 4145 data.writeInt(violationMask); 4146 info.writeToParcel(data, 0); 4147 mRemote.transact(HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION, data, reply, 0); 4148 reply.readException(); 4149 reply.recycle(); 4150 data.recycle(); 4151 } 4152 4153 public void signalPersistentProcesses(int sig) throws RemoteException { 4154 Parcel data = Parcel.obtain(); 4155 Parcel reply = Parcel.obtain(); 4156 data.writeInterfaceToken(IActivityManager.descriptor); 4157 data.writeInt(sig); 4158 mRemote.transact(SIGNAL_PERSISTENT_PROCESSES_TRANSACTION, data, reply, 0); 4159 reply.readException(); 4160 data.recycle(); 4161 reply.recycle(); 4162 } 4163 4164 public void killBackgroundProcesses(String packageName, int userId) throws RemoteException { 4165 Parcel data = Parcel.obtain(); 4166 Parcel reply = Parcel.obtain(); 4167 data.writeInterfaceToken(IActivityManager.descriptor); 4168 data.writeString(packageName); 4169 data.writeInt(userId); 4170 mRemote.transact(KILL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0); 4171 reply.readException(); 4172 data.recycle(); 4173 reply.recycle(); 4174 } 4175 4176 public void killAllBackgroundProcesses() throws RemoteException { 4177 Parcel data = Parcel.obtain(); 4178 Parcel reply = Parcel.obtain(); 4179 data.writeInterfaceToken(IActivityManager.descriptor); 4180 mRemote.transact(KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0); 4181 reply.readException(); 4182 data.recycle(); 4183 reply.recycle(); 4184 } 4185 4186 public void forceStopPackage(String packageName, int userId) throws RemoteException { 4187 Parcel data = Parcel.obtain(); 4188 Parcel reply = Parcel.obtain(); 4189 data.writeInterfaceToken(IActivityManager.descriptor); 4190 data.writeString(packageName); 4191 data.writeInt(userId); 4192 mRemote.transact(FORCE_STOP_PACKAGE_TRANSACTION, data, reply, 0); 4193 reply.readException(); 4194 data.recycle(); 4195 reply.recycle(); 4196 } 4197 4198 public void getMyMemoryState(ActivityManager.RunningAppProcessInfo outInfo) 4199 throws RemoteException 4200 { 4201 Parcel data = Parcel.obtain(); 4202 Parcel reply = Parcel.obtain(); 4203 data.writeInterfaceToken(IActivityManager.descriptor); 4204 mRemote.transact(GET_MY_MEMORY_STATE_TRANSACTION, data, reply, 0); 4205 reply.readException(); 4206 outInfo.readFromParcel(reply); 4207 reply.recycle(); 4208 data.recycle(); 4209 } 4210 4211 public ConfigurationInfo getDeviceConfigurationInfo() throws RemoteException 4212 { 4213 Parcel data = Parcel.obtain(); 4214 Parcel reply = Parcel.obtain(); 4215 data.writeInterfaceToken(IActivityManager.descriptor); 4216 mRemote.transact(GET_DEVICE_CONFIGURATION_TRANSACTION, data, reply, 0); 4217 reply.readException(); 4218 ConfigurationInfo res = ConfigurationInfo.CREATOR.createFromParcel(reply); 4219 reply.recycle(); 4220 data.recycle(); 4221 return res; 4222 } 4223 4224 public boolean profileControl(String process, int userId, boolean start, 4225 ProfilerInfo profilerInfo, int profileType) throws RemoteException 4226 { 4227 Parcel data = Parcel.obtain(); 4228 Parcel reply = Parcel.obtain(); 4229 data.writeInterfaceToken(IActivityManager.descriptor); 4230 data.writeString(process); 4231 data.writeInt(userId); 4232 data.writeInt(start ? 1 : 0); 4233 data.writeInt(profileType); 4234 if (profilerInfo != null) { 4235 data.writeInt(1); 4236 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 4237 } else { 4238 data.writeInt(0); 4239 } 4240 mRemote.transact(PROFILE_CONTROL_TRANSACTION, data, reply, 0); 4241 reply.readException(); 4242 boolean res = reply.readInt() != 0; 4243 reply.recycle(); 4244 data.recycle(); 4245 return res; 4246 } 4247 4248 public boolean shutdown(int timeout) throws RemoteException 4249 { 4250 Parcel data = Parcel.obtain(); 4251 Parcel reply = Parcel.obtain(); 4252 data.writeInterfaceToken(IActivityManager.descriptor); 4253 data.writeInt(timeout); 4254 mRemote.transact(SHUTDOWN_TRANSACTION, data, reply, 0); 4255 reply.readException(); 4256 boolean res = reply.readInt() != 0; 4257 reply.recycle(); 4258 data.recycle(); 4259 return res; 4260 } 4261 4262 public void stopAppSwitches() throws RemoteException { 4263 Parcel data = Parcel.obtain(); 4264 Parcel reply = Parcel.obtain(); 4265 data.writeInterfaceToken(IActivityManager.descriptor); 4266 mRemote.transact(STOP_APP_SWITCHES_TRANSACTION, data, reply, 0); 4267 reply.readException(); 4268 reply.recycle(); 4269 data.recycle(); 4270 } 4271 4272 public void resumeAppSwitches() throws RemoteException { 4273 Parcel data = Parcel.obtain(); 4274 Parcel reply = Parcel.obtain(); 4275 data.writeInterfaceToken(IActivityManager.descriptor); 4276 mRemote.transact(RESUME_APP_SWITCHES_TRANSACTION, data, reply, 0); 4277 reply.readException(); 4278 reply.recycle(); 4279 data.recycle(); 4280 } 4281 4282 public void addPackageDependency(String packageName) throws RemoteException { 4283 Parcel data = Parcel.obtain(); 4284 Parcel reply = Parcel.obtain(); 4285 data.writeInterfaceToken(IActivityManager.descriptor); 4286 data.writeString(packageName); 4287 mRemote.transact(ADD_PACKAGE_DEPENDENCY_TRANSACTION, data, reply, 0); 4288 reply.readException(); 4289 data.recycle(); 4290 reply.recycle(); 4291 } 4292 4293 public void killApplicationWithAppId(String pkg, int appid, String reason) 4294 throws RemoteException { 4295 Parcel data = Parcel.obtain(); 4296 Parcel reply = Parcel.obtain(); 4297 data.writeInterfaceToken(IActivityManager.descriptor); 4298 data.writeString(pkg); 4299 data.writeInt(appid); 4300 data.writeString(reason); 4301 mRemote.transact(KILL_APPLICATION_WITH_APPID_TRANSACTION, data, reply, 0); 4302 reply.readException(); 4303 data.recycle(); 4304 reply.recycle(); 4305 } 4306 4307 public void closeSystemDialogs(String reason) throws RemoteException { 4308 Parcel data = Parcel.obtain(); 4309 Parcel reply = Parcel.obtain(); 4310 data.writeInterfaceToken(IActivityManager.descriptor); 4311 data.writeString(reason); 4312 mRemote.transact(CLOSE_SYSTEM_DIALOGS_TRANSACTION, data, reply, 0); 4313 reply.readException(); 4314 data.recycle(); 4315 reply.recycle(); 4316 } 4317 4318 public Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids) 4319 throws RemoteException { 4320 Parcel data = Parcel.obtain(); 4321 Parcel reply = Parcel.obtain(); 4322 data.writeInterfaceToken(IActivityManager.descriptor); 4323 data.writeIntArray(pids); 4324 mRemote.transact(GET_PROCESS_MEMORY_INFO_TRANSACTION, data, reply, 0); 4325 reply.readException(); 4326 Debug.MemoryInfo[] res = reply.createTypedArray(Debug.MemoryInfo.CREATOR); 4327 data.recycle(); 4328 reply.recycle(); 4329 return res; 4330 } 4331 4332 public void killApplicationProcess(String processName, int uid) throws RemoteException { 4333 Parcel data = Parcel.obtain(); 4334 Parcel reply = Parcel.obtain(); 4335 data.writeInterfaceToken(IActivityManager.descriptor); 4336 data.writeString(processName); 4337 data.writeInt(uid); 4338 mRemote.transact(KILL_APPLICATION_PROCESS_TRANSACTION, data, reply, 0); 4339 reply.readException(); 4340 data.recycle(); 4341 reply.recycle(); 4342 } 4343 4344 public void overridePendingTransition(IBinder token, String packageName, 4345 int enterAnim, int exitAnim) throws RemoteException { 4346 Parcel data = Parcel.obtain(); 4347 Parcel reply = Parcel.obtain(); 4348 data.writeInterfaceToken(IActivityManager.descriptor); 4349 data.writeStrongBinder(token); 4350 data.writeString(packageName); 4351 data.writeInt(enterAnim); 4352 data.writeInt(exitAnim); 4353 mRemote.transact(OVERRIDE_PENDING_TRANSITION_TRANSACTION, data, reply, 0); 4354 reply.readException(); 4355 data.recycle(); 4356 reply.recycle(); 4357 } 4358 4359 public boolean isUserAMonkey() throws RemoteException { 4360 Parcel data = Parcel.obtain(); 4361 Parcel reply = Parcel.obtain(); 4362 data.writeInterfaceToken(IActivityManager.descriptor); 4363 mRemote.transact(IS_USER_A_MONKEY_TRANSACTION, data, reply, 0); 4364 reply.readException(); 4365 boolean res = reply.readInt() != 0; 4366 data.recycle(); 4367 reply.recycle(); 4368 return res; 4369 } 4370 4371 public void setUserIsMonkey(boolean monkey) throws RemoteException { 4372 Parcel data = Parcel.obtain(); 4373 Parcel reply = Parcel.obtain(); 4374 data.writeInterfaceToken(IActivityManager.descriptor); 4375 data.writeInt(monkey ? 1 : 0); 4376 mRemote.transact(SET_USER_IS_MONKEY_TRANSACTION, data, reply, 0); 4377 reply.readException(); 4378 data.recycle(); 4379 reply.recycle(); 4380 } 4381 4382 public void finishHeavyWeightApp() throws RemoteException { 4383 Parcel data = Parcel.obtain(); 4384 Parcel reply = Parcel.obtain(); 4385 data.writeInterfaceToken(IActivityManager.descriptor); 4386 mRemote.transact(FINISH_HEAVY_WEIGHT_APP_TRANSACTION, data, reply, 0); 4387 reply.readException(); 4388 data.recycle(); 4389 reply.recycle(); 4390 } 4391 4392 public boolean convertFromTranslucent(IBinder token) 4393 throws RemoteException { 4394 Parcel data = Parcel.obtain(); 4395 Parcel reply = Parcel.obtain(); 4396 data.writeInterfaceToken(IActivityManager.descriptor); 4397 data.writeStrongBinder(token); 4398 mRemote.transact(CONVERT_FROM_TRANSLUCENT_TRANSACTION, data, reply, 0); 4399 reply.readException(); 4400 boolean res = reply.readInt() != 0; 4401 data.recycle(); 4402 reply.recycle(); 4403 return res; 4404 } 4405 4406 public boolean convertToTranslucent(IBinder token, ActivityOptions options) 4407 throws RemoteException { 4408 Parcel data = Parcel.obtain(); 4409 Parcel reply = Parcel.obtain(); 4410 data.writeInterfaceToken(IActivityManager.descriptor); 4411 data.writeStrongBinder(token); 4412 if (options == null) { 4413 data.writeInt(0); 4414 } else { 4415 data.writeInt(1); 4416 data.writeBundle(options.toBundle()); 4417 } 4418 mRemote.transact(CONVERT_TO_TRANSLUCENT_TRANSACTION, data, reply, 0); 4419 reply.readException(); 4420 boolean res = reply.readInt() != 0; 4421 data.recycle(); 4422 reply.recycle(); 4423 return res; 4424 } 4425 4426 public ActivityOptions getActivityOptions(IBinder token) throws RemoteException { 4427 Parcel data = Parcel.obtain(); 4428 Parcel reply = Parcel.obtain(); 4429 data.writeInterfaceToken(IActivityManager.descriptor); 4430 data.writeStrongBinder(token); 4431 mRemote.transact(GET_ACTIVITY_OPTIONS_TRANSACTION, data, reply, 0); 4432 reply.readException(); 4433 Bundle bundle = reply.readBundle(); 4434 ActivityOptions options = bundle == null ? null : new ActivityOptions(bundle); 4435 data.recycle(); 4436 reply.recycle(); 4437 return options; 4438 } 4439 4440 public void setImmersive(IBinder token, boolean immersive) 4441 throws RemoteException { 4442 Parcel data = Parcel.obtain(); 4443 Parcel reply = Parcel.obtain(); 4444 data.writeInterfaceToken(IActivityManager.descriptor); 4445 data.writeStrongBinder(token); 4446 data.writeInt(immersive ? 1 : 0); 4447 mRemote.transact(SET_IMMERSIVE_TRANSACTION, data, reply, 0); 4448 reply.readException(); 4449 data.recycle(); 4450 reply.recycle(); 4451 } 4452 4453 public boolean isImmersive(IBinder token) 4454 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_IMMERSIVE_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 isTopOfTask(IBinder token) throws RemoteException { 4468 Parcel data = Parcel.obtain(); 4469 Parcel reply = Parcel.obtain(); 4470 data.writeInterfaceToken(IActivityManager.descriptor); 4471 data.writeStrongBinder(token); 4472 mRemote.transact(IS_TOP_OF_TASK_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 boolean isTopActivityImmersive() 4481 throws RemoteException { 4482 Parcel data = Parcel.obtain(); 4483 Parcel reply = Parcel.obtain(); 4484 data.writeInterfaceToken(IActivityManager.descriptor); 4485 mRemote.transact(IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION, data, reply, 0); 4486 reply.readException(); 4487 boolean res = reply.readInt() == 1; 4488 data.recycle(); 4489 reply.recycle(); 4490 return res; 4491 } 4492 4493 public void crashApplication(int uid, int initialPid, String packageName, 4494 String message) throws RemoteException { 4495 Parcel data = Parcel.obtain(); 4496 Parcel reply = Parcel.obtain(); 4497 data.writeInterfaceToken(IActivityManager.descriptor); 4498 data.writeInt(uid); 4499 data.writeInt(initialPid); 4500 data.writeString(packageName); 4501 data.writeString(message); 4502 mRemote.transact(CRASH_APPLICATION_TRANSACTION, data, reply, 0); 4503 reply.readException(); 4504 data.recycle(); 4505 reply.recycle(); 4506 } 4507 4508 public String getProviderMimeType(Uri uri, int userId) throws RemoteException { 4509 Parcel data = Parcel.obtain(); 4510 Parcel reply = Parcel.obtain(); 4511 data.writeInterfaceToken(IActivityManager.descriptor); 4512 uri.writeToParcel(data, 0); 4513 data.writeInt(userId); 4514 mRemote.transact(GET_PROVIDER_MIME_TYPE_TRANSACTION, data, reply, 0); 4515 reply.readException(); 4516 String res = reply.readString(); 4517 data.recycle(); 4518 reply.recycle(); 4519 return res; 4520 } 4521 4522 public IBinder newUriPermissionOwner(String name) 4523 throws RemoteException { 4524 Parcel data = Parcel.obtain(); 4525 Parcel reply = Parcel.obtain(); 4526 data.writeInterfaceToken(IActivityManager.descriptor); 4527 data.writeString(name); 4528 mRemote.transact(NEW_URI_PERMISSION_OWNER_TRANSACTION, data, reply, 0); 4529 reply.readException(); 4530 IBinder res = reply.readStrongBinder(); 4531 data.recycle(); 4532 reply.recycle(); 4533 return res; 4534 } 4535 4536 public void grantUriPermissionFromOwner(IBinder owner, int fromUid, String targetPkg, 4537 Uri uri, int mode, int sourceUserId, int targetUserId) throws RemoteException { 4538 Parcel data = Parcel.obtain(); 4539 Parcel reply = Parcel.obtain(); 4540 data.writeInterfaceToken(IActivityManager.descriptor); 4541 data.writeStrongBinder(owner); 4542 data.writeInt(fromUid); 4543 data.writeString(targetPkg); 4544 uri.writeToParcel(data, 0); 4545 data.writeInt(mode); 4546 data.writeInt(sourceUserId); 4547 data.writeInt(targetUserId); 4548 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 4549 reply.readException(); 4550 data.recycle(); 4551 reply.recycle(); 4552 } 4553 4554 public void revokeUriPermissionFromOwner(IBinder owner, Uri uri, 4555 int mode, int userId) throws RemoteException { 4556 Parcel data = Parcel.obtain(); 4557 Parcel reply = Parcel.obtain(); 4558 data.writeInterfaceToken(IActivityManager.descriptor); 4559 data.writeStrongBinder(owner); 4560 if (uri != null) { 4561 data.writeInt(1); 4562 uri.writeToParcel(data, 0); 4563 } else { 4564 data.writeInt(0); 4565 } 4566 data.writeInt(mode); 4567 data.writeInt(userId); 4568 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0); 4569 reply.readException(); 4570 data.recycle(); 4571 reply.recycle(); 4572 } 4573 4574 public int checkGrantUriPermission(int callingUid, String targetPkg, 4575 Uri uri, int modeFlags, int userId) throws RemoteException { 4576 Parcel data = Parcel.obtain(); 4577 Parcel reply = Parcel.obtain(); 4578 data.writeInterfaceToken(IActivityManager.descriptor); 4579 data.writeInt(callingUid); 4580 data.writeString(targetPkg); 4581 uri.writeToParcel(data, 0); 4582 data.writeInt(modeFlags); 4583 data.writeInt(userId); 4584 mRemote.transact(CHECK_GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 4585 reply.readException(); 4586 int res = reply.readInt(); 4587 data.recycle(); 4588 reply.recycle(); 4589 return res; 4590 } 4591 4592 public boolean dumpHeap(String process, int userId, boolean managed, 4593 String path, ParcelFileDescriptor fd) throws RemoteException { 4594 Parcel data = Parcel.obtain(); 4595 Parcel reply = Parcel.obtain(); 4596 data.writeInterfaceToken(IActivityManager.descriptor); 4597 data.writeString(process); 4598 data.writeInt(userId); 4599 data.writeInt(managed ? 1 : 0); 4600 data.writeString(path); 4601 if (fd != null) { 4602 data.writeInt(1); 4603 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 4604 } else { 4605 data.writeInt(0); 4606 } 4607 mRemote.transact(DUMP_HEAP_TRANSACTION, data, reply, 0); 4608 reply.readException(); 4609 boolean res = reply.readInt() != 0; 4610 reply.recycle(); 4611 data.recycle(); 4612 return res; 4613 } 4614 4615 public int startActivities(IApplicationThread caller, String callingPackage, 4616 Intent[] intents, String[] resolvedTypes, IBinder resultTo, 4617 Bundle options, int userId) throws RemoteException { 4618 Parcel data = Parcel.obtain(); 4619 Parcel reply = Parcel.obtain(); 4620 data.writeInterfaceToken(IActivityManager.descriptor); 4621 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 4622 data.writeString(callingPackage); 4623 data.writeTypedArray(intents, 0); 4624 data.writeStringArray(resolvedTypes); 4625 data.writeStrongBinder(resultTo); 4626 if (options != null) { 4627 data.writeInt(1); 4628 options.writeToParcel(data, 0); 4629 } else { 4630 data.writeInt(0); 4631 } 4632 data.writeInt(userId); 4633 mRemote.transact(START_ACTIVITIES_TRANSACTION, data, reply, 0); 4634 reply.readException(); 4635 int result = reply.readInt(); 4636 reply.recycle(); 4637 data.recycle(); 4638 return result; 4639 } 4640 4641 public int getFrontActivityScreenCompatMode() throws RemoteException { 4642 Parcel data = Parcel.obtain(); 4643 Parcel reply = Parcel.obtain(); 4644 data.writeInterfaceToken(IActivityManager.descriptor); 4645 mRemote.transact(GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4646 reply.readException(); 4647 int mode = reply.readInt(); 4648 reply.recycle(); 4649 data.recycle(); 4650 return mode; 4651 } 4652 4653 public void setFrontActivityScreenCompatMode(int mode) throws RemoteException { 4654 Parcel data = Parcel.obtain(); 4655 Parcel reply = Parcel.obtain(); 4656 data.writeInterfaceToken(IActivityManager.descriptor); 4657 data.writeInt(mode); 4658 mRemote.transact(SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4659 reply.readException(); 4660 reply.recycle(); 4661 data.recycle(); 4662 } 4663 4664 public int getPackageScreenCompatMode(String packageName) throws RemoteException { 4665 Parcel data = Parcel.obtain(); 4666 Parcel reply = Parcel.obtain(); 4667 data.writeInterfaceToken(IActivityManager.descriptor); 4668 data.writeString(packageName); 4669 mRemote.transact(GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4670 reply.readException(); 4671 int mode = reply.readInt(); 4672 reply.recycle(); 4673 data.recycle(); 4674 return mode; 4675 } 4676 4677 public void setPackageScreenCompatMode(String packageName, int mode) 4678 throws RemoteException { 4679 Parcel data = Parcel.obtain(); 4680 Parcel reply = Parcel.obtain(); 4681 data.writeInterfaceToken(IActivityManager.descriptor); 4682 data.writeString(packageName); 4683 data.writeInt(mode); 4684 mRemote.transact(SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4685 reply.readException(); 4686 reply.recycle(); 4687 data.recycle(); 4688 } 4689 4690 public boolean getPackageAskScreenCompat(String packageName) throws RemoteException { 4691 Parcel data = Parcel.obtain(); 4692 Parcel reply = Parcel.obtain(); 4693 data.writeInterfaceToken(IActivityManager.descriptor); 4694 data.writeString(packageName); 4695 mRemote.transact(GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0); 4696 reply.readException(); 4697 boolean ask = reply.readInt() != 0; 4698 reply.recycle(); 4699 data.recycle(); 4700 return ask; 4701 } 4702 4703 public void setPackageAskScreenCompat(String packageName, boolean ask) 4704 throws RemoteException { 4705 Parcel data = Parcel.obtain(); 4706 Parcel reply = Parcel.obtain(); 4707 data.writeInterfaceToken(IActivityManager.descriptor); 4708 data.writeString(packageName); 4709 data.writeInt(ask ? 1 : 0); 4710 mRemote.transact(SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0); 4711 reply.readException(); 4712 reply.recycle(); 4713 data.recycle(); 4714 } 4715 4716 public boolean switchUser(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(SWITCH_USER_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 boolean startUserInBackground(int userid) throws RemoteException { 4730 Parcel data = Parcel.obtain(); 4731 Parcel reply = Parcel.obtain(); 4732 data.writeInterfaceToken(IActivityManager.descriptor); 4733 data.writeInt(userid); 4734 mRemote.transact(START_USER_IN_BACKGROUND_TRANSACTION, data, reply, 0); 4735 reply.readException(); 4736 boolean result = reply.readInt() != 0; 4737 reply.recycle(); 4738 data.recycle(); 4739 return result; 4740 } 4741 4742 public int stopUser(int userid, IStopUserCallback callback) throws RemoteException { 4743 Parcel data = Parcel.obtain(); 4744 Parcel reply = Parcel.obtain(); 4745 data.writeInterfaceToken(IActivityManager.descriptor); 4746 data.writeInt(userid); 4747 data.writeStrongInterface(callback); 4748 mRemote.transact(STOP_USER_TRANSACTION, data, reply, 0); 4749 reply.readException(); 4750 int result = reply.readInt(); 4751 reply.recycle(); 4752 data.recycle(); 4753 return result; 4754 } 4755 4756 public UserInfo getCurrentUser() throws RemoteException { 4757 Parcel data = Parcel.obtain(); 4758 Parcel reply = Parcel.obtain(); 4759 data.writeInterfaceToken(IActivityManager.descriptor); 4760 mRemote.transact(GET_CURRENT_USER_TRANSACTION, data, reply, 0); 4761 reply.readException(); 4762 UserInfo userInfo = UserInfo.CREATOR.createFromParcel(reply); 4763 reply.recycle(); 4764 data.recycle(); 4765 return userInfo; 4766 } 4767 4768 public boolean isUserRunning(int userid, boolean orStopping) throws RemoteException { 4769 Parcel data = Parcel.obtain(); 4770 Parcel reply = Parcel.obtain(); 4771 data.writeInterfaceToken(IActivityManager.descriptor); 4772 data.writeInt(userid); 4773 data.writeInt(orStopping ? 1 : 0); 4774 mRemote.transact(IS_USER_RUNNING_TRANSACTION, data, reply, 0); 4775 reply.readException(); 4776 boolean result = reply.readInt() != 0; 4777 reply.recycle(); 4778 data.recycle(); 4779 return result; 4780 } 4781 4782 public int[] getRunningUserIds() throws RemoteException { 4783 Parcel data = Parcel.obtain(); 4784 Parcel reply = Parcel.obtain(); 4785 data.writeInterfaceToken(IActivityManager.descriptor); 4786 mRemote.transact(GET_RUNNING_USER_IDS_TRANSACTION, data, reply, 0); 4787 reply.readException(); 4788 int[] result = reply.createIntArray(); 4789 reply.recycle(); 4790 data.recycle(); 4791 return result; 4792 } 4793 4794 public boolean removeTask(int taskId) throws RemoteException { 4795 Parcel data = Parcel.obtain(); 4796 Parcel reply = Parcel.obtain(); 4797 data.writeInterfaceToken(IActivityManager.descriptor); 4798 data.writeInt(taskId); 4799 mRemote.transact(REMOVE_TASK_TRANSACTION, data, reply, 0); 4800 reply.readException(); 4801 boolean result = reply.readInt() != 0; 4802 reply.recycle(); 4803 data.recycle(); 4804 return result; 4805 } 4806 4807 public void registerProcessObserver(IProcessObserver observer) throws RemoteException { 4808 Parcel data = Parcel.obtain(); 4809 Parcel reply = Parcel.obtain(); 4810 data.writeInterfaceToken(IActivityManager.descriptor); 4811 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 4812 mRemote.transact(REGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0); 4813 reply.readException(); 4814 data.recycle(); 4815 reply.recycle(); 4816 } 4817 4818 public void unregisterProcessObserver(IProcessObserver observer) throws RemoteException { 4819 Parcel data = Parcel.obtain(); 4820 Parcel reply = Parcel.obtain(); 4821 data.writeInterfaceToken(IActivityManager.descriptor); 4822 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 4823 mRemote.transact(UNREGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0); 4824 reply.readException(); 4825 data.recycle(); 4826 reply.recycle(); 4827 } 4828 4829 public boolean isIntentSenderTargetedToPackage(IIntentSender sender) throws RemoteException { 4830 Parcel data = Parcel.obtain(); 4831 Parcel reply = Parcel.obtain(); 4832 data.writeInterfaceToken(IActivityManager.descriptor); 4833 data.writeStrongBinder(sender.asBinder()); 4834 mRemote.transact(IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION, data, reply, 0); 4835 reply.readException(); 4836 boolean res = reply.readInt() != 0; 4837 data.recycle(); 4838 reply.recycle(); 4839 return res; 4840 } 4841 4842 public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException { 4843 Parcel data = Parcel.obtain(); 4844 Parcel reply = Parcel.obtain(); 4845 data.writeInterfaceToken(IActivityManager.descriptor); 4846 data.writeStrongBinder(sender.asBinder()); 4847 mRemote.transact(IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION, data, reply, 0); 4848 reply.readException(); 4849 boolean res = reply.readInt() != 0; 4850 data.recycle(); 4851 reply.recycle(); 4852 return res; 4853 } 4854 4855 public Intent getIntentForIntentSender(IIntentSender sender) throws RemoteException { 4856 Parcel data = Parcel.obtain(); 4857 Parcel reply = Parcel.obtain(); 4858 data.writeInterfaceToken(IActivityManager.descriptor); 4859 data.writeStrongBinder(sender.asBinder()); 4860 mRemote.transact(GET_INTENT_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 4861 reply.readException(); 4862 Intent res = reply.readInt() != 0 4863 ? Intent.CREATOR.createFromParcel(reply) : null; 4864 data.recycle(); 4865 reply.recycle(); 4866 return res; 4867 } 4868 4869 public String getTagForIntentSender(IIntentSender sender, String prefix) 4870 throws RemoteException { 4871 Parcel data = Parcel.obtain(); 4872 Parcel reply = Parcel.obtain(); 4873 data.writeInterfaceToken(IActivityManager.descriptor); 4874 data.writeStrongBinder(sender.asBinder()); 4875 data.writeString(prefix); 4876 mRemote.transact(GET_TAG_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 4877 reply.readException(); 4878 String res = reply.readString(); 4879 data.recycle(); 4880 reply.recycle(); 4881 return res; 4882 } 4883 4884 public void updatePersistentConfiguration(Configuration values) throws RemoteException 4885 { 4886 Parcel data = Parcel.obtain(); 4887 Parcel reply = Parcel.obtain(); 4888 data.writeInterfaceToken(IActivityManager.descriptor); 4889 values.writeToParcel(data, 0); 4890 mRemote.transact(UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION, data, reply, 0); 4891 reply.readException(); 4892 data.recycle(); 4893 reply.recycle(); 4894 } 4895 4896 public long[] getProcessPss(int[] pids) throws RemoteException { 4897 Parcel data = Parcel.obtain(); 4898 Parcel reply = Parcel.obtain(); 4899 data.writeInterfaceToken(IActivityManager.descriptor); 4900 data.writeIntArray(pids); 4901 mRemote.transact(GET_PROCESS_PSS_TRANSACTION, data, reply, 0); 4902 reply.readException(); 4903 long[] res = reply.createLongArray(); 4904 data.recycle(); 4905 reply.recycle(); 4906 return res; 4907 } 4908 4909 public void showBootMessage(CharSequence msg, boolean always) throws RemoteException { 4910 Parcel data = Parcel.obtain(); 4911 Parcel reply = Parcel.obtain(); 4912 data.writeInterfaceToken(IActivityManager.descriptor); 4913 TextUtils.writeToParcel(msg, data, 0); 4914 data.writeInt(always ? 1 : 0); 4915 mRemote.transact(SHOW_BOOT_MESSAGE_TRANSACTION, data, reply, 0); 4916 reply.readException(); 4917 data.recycle(); 4918 reply.recycle(); 4919 } 4920 4921 public void keyguardWaitingForActivityDrawn() throws RemoteException { 4922 Parcel data = Parcel.obtain(); 4923 Parcel reply = Parcel.obtain(); 4924 data.writeInterfaceToken(IActivityManager.descriptor); 4925 mRemote.transact(KEYGUARD_WAITING_FOR_ACTIVITY_DRAWN_TRANSACTION, data, reply, 0); 4926 reply.readException(); 4927 data.recycle(); 4928 reply.recycle(); 4929 } 4930 4931 public boolean shouldUpRecreateTask(IBinder token, String destAffinity) 4932 throws RemoteException { 4933 Parcel data = Parcel.obtain(); 4934 Parcel reply = Parcel.obtain(); 4935 data.writeInterfaceToken(IActivityManager.descriptor); 4936 data.writeStrongBinder(token); 4937 data.writeString(destAffinity); 4938 mRemote.transact(SHOULD_UP_RECREATE_TASK_TRANSACTION, data, reply, 0); 4939 reply.readException(); 4940 boolean result = reply.readInt() != 0; 4941 data.recycle(); 4942 reply.recycle(); 4943 return result; 4944 } 4945 4946 public boolean navigateUpTo(IBinder token, Intent target, int resultCode, Intent resultData) 4947 throws RemoteException { 4948 Parcel data = Parcel.obtain(); 4949 Parcel reply = Parcel.obtain(); 4950 data.writeInterfaceToken(IActivityManager.descriptor); 4951 data.writeStrongBinder(token); 4952 target.writeToParcel(data, 0); 4953 data.writeInt(resultCode); 4954 if (resultData != null) { 4955 data.writeInt(1); 4956 resultData.writeToParcel(data, 0); 4957 } else { 4958 data.writeInt(0); 4959 } 4960 mRemote.transact(NAVIGATE_UP_TO_TRANSACTION, data, reply, 0); 4961 reply.readException(); 4962 boolean result = reply.readInt() != 0; 4963 data.recycle(); 4964 reply.recycle(); 4965 return result; 4966 } 4967 4968 public int getLaunchedFromUid(IBinder activityToken) throws RemoteException { 4969 Parcel data = Parcel.obtain(); 4970 Parcel reply = Parcel.obtain(); 4971 data.writeInterfaceToken(IActivityManager.descriptor); 4972 data.writeStrongBinder(activityToken); 4973 mRemote.transact(GET_LAUNCHED_FROM_UID_TRANSACTION, data, reply, 0); 4974 reply.readException(); 4975 int result = reply.readInt(); 4976 data.recycle(); 4977 reply.recycle(); 4978 return result; 4979 } 4980 4981 public String getLaunchedFromPackage(IBinder activityToken) throws RemoteException { 4982 Parcel data = Parcel.obtain(); 4983 Parcel reply = Parcel.obtain(); 4984 data.writeInterfaceToken(IActivityManager.descriptor); 4985 data.writeStrongBinder(activityToken); 4986 mRemote.transact(GET_LAUNCHED_FROM_PACKAGE_TRANSACTION, data, reply, 0); 4987 reply.readException(); 4988 String result = reply.readString(); 4989 data.recycle(); 4990 reply.recycle(); 4991 return result; 4992 } 4993 4994 public void registerUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException { 4995 Parcel data = Parcel.obtain(); 4996 Parcel reply = Parcel.obtain(); 4997 data.writeInterfaceToken(IActivityManager.descriptor); 4998 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 4999 mRemote.transact(REGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0); 5000 reply.readException(); 5001 data.recycle(); 5002 reply.recycle(); 5003 } 5004 5005 public void unregisterUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException { 5006 Parcel data = Parcel.obtain(); 5007 Parcel reply = Parcel.obtain(); 5008 data.writeInterfaceToken(IActivityManager.descriptor); 5009 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 5010 mRemote.transact(UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0); 5011 reply.readException(); 5012 data.recycle(); 5013 reply.recycle(); 5014 } 5015 5016 public void requestBugReport() throws RemoteException { 5017 Parcel data = Parcel.obtain(); 5018 Parcel reply = Parcel.obtain(); 5019 data.writeInterfaceToken(IActivityManager.descriptor); 5020 mRemote.transact(REQUEST_BUG_REPORT_TRANSACTION, data, reply, 0); 5021 reply.readException(); 5022 data.recycle(); 5023 reply.recycle(); 5024 } 5025 5026 public long inputDispatchingTimedOut(int pid, boolean aboveSystem, String reason) 5027 throws RemoteException { 5028 Parcel data = Parcel.obtain(); 5029 Parcel reply = Parcel.obtain(); 5030 data.writeInterfaceToken(IActivityManager.descriptor); 5031 data.writeInt(pid); 5032 data.writeInt(aboveSystem ? 1 : 0); 5033 data.writeString(reason); 5034 mRemote.transact(INPUT_DISPATCHING_TIMED_OUT_TRANSACTION, data, reply, 0); 5035 reply.readException(); 5036 long res = reply.readInt(); 5037 data.recycle(); 5038 reply.recycle(); 5039 return res; 5040 } 5041 5042 public Bundle getAssistContextExtras(int requestType) throws RemoteException { 5043 Parcel data = Parcel.obtain(); 5044 Parcel reply = Parcel.obtain(); 5045 data.writeInterfaceToken(IActivityManager.descriptor); 5046 data.writeInt(requestType); 5047 mRemote.transact(GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0); 5048 reply.readException(); 5049 Bundle res = reply.readBundle(); 5050 data.recycle(); 5051 reply.recycle(); 5052 return res; 5053 } 5054 5055 public void reportAssistContextExtras(IBinder token, Bundle extras) 5056 throws RemoteException { 5057 Parcel data = Parcel.obtain(); 5058 Parcel reply = Parcel.obtain(); 5059 data.writeInterfaceToken(IActivityManager.descriptor); 5060 data.writeStrongBinder(token); 5061 data.writeBundle(extras); 5062 mRemote.transact(REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0); 5063 reply.readException(); 5064 data.recycle(); 5065 reply.recycle(); 5066 } 5067 5068 public boolean launchAssistIntent(Intent intent, int requestType, String hint, int userHandle) 5069 throws RemoteException { 5070 Parcel data = Parcel.obtain(); 5071 Parcel reply = Parcel.obtain(); 5072 data.writeInterfaceToken(IActivityManager.descriptor); 5073 intent.writeToParcel(data, 0); 5074 data.writeInt(requestType); 5075 data.writeString(hint); 5076 data.writeInt(userHandle); 5077 mRemote.transact(LAUNCH_ASSIST_INTENT_TRANSACTION, data, reply, 0); 5078 reply.readException(); 5079 boolean res = reply.readInt() != 0; 5080 data.recycle(); 5081 reply.recycle(); 5082 return res; 5083 } 5084 5085 public void killUid(int uid, String reason) throws RemoteException { 5086 Parcel data = Parcel.obtain(); 5087 Parcel reply = Parcel.obtain(); 5088 data.writeInterfaceToken(IActivityManager.descriptor); 5089 data.writeInt(uid); 5090 data.writeString(reason); 5091 mRemote.transact(KILL_UID_TRANSACTION, data, reply, 0); 5092 reply.readException(); 5093 data.recycle(); 5094 reply.recycle(); 5095 } 5096 5097 public void hang(IBinder who, boolean allowRestart) throws RemoteException { 5098 Parcel data = Parcel.obtain(); 5099 Parcel reply = Parcel.obtain(); 5100 data.writeInterfaceToken(IActivityManager.descriptor); 5101 data.writeStrongBinder(who); 5102 data.writeInt(allowRestart ? 1 : 0); 5103 mRemote.transact(HANG_TRANSACTION, data, reply, 0); 5104 reply.readException(); 5105 data.recycle(); 5106 reply.recycle(); 5107 } 5108 5109 public void reportActivityFullyDrawn(IBinder token) throws RemoteException { 5110 Parcel data = Parcel.obtain(); 5111 Parcel reply = Parcel.obtain(); 5112 data.writeInterfaceToken(IActivityManager.descriptor); 5113 data.writeStrongBinder(token); 5114 mRemote.transact(REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION, data, reply, 0); 5115 reply.readException(); 5116 data.recycle(); 5117 reply.recycle(); 5118 } 5119 5120 public void notifyActivityDrawn(IBinder token) throws RemoteException { 5121 Parcel data = Parcel.obtain(); 5122 Parcel reply = Parcel.obtain(); 5123 data.writeInterfaceToken(IActivityManager.descriptor); 5124 data.writeStrongBinder(token); 5125 mRemote.transact(NOTIFY_ACTIVITY_DRAWN_TRANSACTION, data, reply, 0); 5126 reply.readException(); 5127 data.recycle(); 5128 reply.recycle(); 5129 } 5130 5131 public void restart() throws RemoteException { 5132 Parcel data = Parcel.obtain(); 5133 Parcel reply = Parcel.obtain(); 5134 data.writeInterfaceToken(IActivityManager.descriptor); 5135 mRemote.transact(RESTART_TRANSACTION, data, reply, 0); 5136 reply.readException(); 5137 data.recycle(); 5138 reply.recycle(); 5139 } 5140 5141 public void performIdleMaintenance() throws RemoteException { 5142 Parcel data = Parcel.obtain(); 5143 Parcel reply = Parcel.obtain(); 5144 data.writeInterfaceToken(IActivityManager.descriptor); 5145 mRemote.transact(PERFORM_IDLE_MAINTENANCE_TRANSACTION, data, reply, 0); 5146 reply.readException(); 5147 data.recycle(); 5148 reply.recycle(); 5149 } 5150 5151 public IActivityContainer createActivityContainer(IBinder parentActivityToken, 5152 IActivityContainerCallback callback) throws RemoteException { 5153 Parcel data = Parcel.obtain(); 5154 Parcel reply = Parcel.obtain(); 5155 data.writeInterfaceToken(IActivityManager.descriptor); 5156 data.writeStrongBinder(parentActivityToken); 5157 data.writeStrongBinder(callback == null ? null : callback.asBinder()); 5158 mRemote.transact(CREATE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); 5159 reply.readException(); 5160 final int result = reply.readInt(); 5161 final IActivityContainer res; 5162 if (result == 1) { 5163 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder()); 5164 } else { 5165 res = null; 5166 } 5167 data.recycle(); 5168 reply.recycle(); 5169 return res; 5170 } 5171 5172 public void deleteActivityContainer(IActivityContainer activityContainer) 5173 throws RemoteException { 5174 Parcel data = Parcel.obtain(); 5175 Parcel reply = Parcel.obtain(); 5176 data.writeInterfaceToken(IActivityManager.descriptor); 5177 data.writeStrongBinder(activityContainer.asBinder()); 5178 mRemote.transact(DELETE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); 5179 reply.readException(); 5180 data.recycle(); 5181 reply.recycle(); 5182 } 5183 5184 public IActivityContainer getEnclosingActivityContainer(IBinder activityToken) 5185 throws RemoteException { 5186 Parcel data = Parcel.obtain(); 5187 Parcel reply = Parcel.obtain(); 5188 data.writeInterfaceToken(IActivityManager.descriptor); 5189 data.writeStrongBinder(activityToken); 5190 mRemote.transact(GET_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); 5191 reply.readException(); 5192 final int result = reply.readInt(); 5193 final IActivityContainer res; 5194 if (result == 1) { 5195 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder()); 5196 } else { 5197 res = null; 5198 } 5199 data.recycle(); 5200 reply.recycle(); 5201 return res; 5202 } 5203 5204 public IBinder getHomeActivityToken() throws RemoteException { 5205 Parcel data = Parcel.obtain(); 5206 Parcel reply = Parcel.obtain(); 5207 data.writeInterfaceToken(IActivityManager.descriptor); 5208 mRemote.transact(GET_HOME_ACTIVITY_TOKEN_TRANSACTION, data, reply, 0); 5209 reply.readException(); 5210 IBinder res = reply.readStrongBinder(); 5211 data.recycle(); 5212 reply.recycle(); 5213 return res; 5214 } 5215 5216 @Override 5217 public void startLockTaskMode(int taskId) throws RemoteException { 5218 Parcel data = Parcel.obtain(); 5219 Parcel reply = Parcel.obtain(); 5220 data.writeInterfaceToken(IActivityManager.descriptor); 5221 data.writeInt(taskId); 5222 mRemote.transact(START_LOCK_TASK_BY_TASK_ID_TRANSACTION, data, reply, 0); 5223 reply.readException(); 5224 data.recycle(); 5225 reply.recycle(); 5226 } 5227 5228 @Override 5229 public void startLockTaskMode(IBinder token) throws RemoteException { 5230 Parcel data = Parcel.obtain(); 5231 Parcel reply = Parcel.obtain(); 5232 data.writeInterfaceToken(IActivityManager.descriptor); 5233 data.writeStrongBinder(token); 5234 mRemote.transact(START_LOCK_TASK_BY_TOKEN_TRANSACTION, data, reply, 0); 5235 reply.readException(); 5236 data.recycle(); 5237 reply.recycle(); 5238 } 5239 5240 @Override 5241 public void startLockTaskModeOnCurrent() throws RemoteException { 5242 Parcel data = Parcel.obtain(); 5243 Parcel reply = Parcel.obtain(); 5244 data.writeInterfaceToken(IActivityManager.descriptor); 5245 mRemote.transact(START_LOCK_TASK_BY_CURRENT_TRANSACTION, data, reply, 0); 5246 reply.readException(); 5247 data.recycle(); 5248 reply.recycle(); 5249 } 5250 5251 @Override 5252 public void stopLockTaskMode() throws RemoteException { 5253 Parcel data = Parcel.obtain(); 5254 Parcel reply = Parcel.obtain(); 5255 data.writeInterfaceToken(IActivityManager.descriptor); 5256 mRemote.transact(STOP_LOCK_TASK_MODE_TRANSACTION, data, reply, 0); 5257 reply.readException(); 5258 data.recycle(); 5259 reply.recycle(); 5260 } 5261 5262 @Override 5263 public void stopLockTaskModeOnCurrent() throws RemoteException { 5264 Parcel data = Parcel.obtain(); 5265 Parcel reply = Parcel.obtain(); 5266 data.writeInterfaceToken(IActivityManager.descriptor); 5267 mRemote.transact(STOP_LOCK_TASK_BY_CURRENT_TRANSACTION, data, reply, 0); 5268 reply.readException(); 5269 data.recycle(); 5270 reply.recycle(); 5271 } 5272 5273 @Override 5274 public boolean isInLockTaskMode() throws RemoteException { 5275 Parcel data = Parcel.obtain(); 5276 Parcel reply = Parcel.obtain(); 5277 data.writeInterfaceToken(IActivityManager.descriptor); 5278 mRemote.transact(IS_IN_LOCK_TASK_MODE_TRANSACTION, data, reply, 0); 5279 reply.readException(); 5280 boolean isInLockTaskMode = reply.readInt() == 1; 5281 data.recycle(); 5282 reply.recycle(); 5283 return isInLockTaskMode; 5284 } 5285 5286 @Override 5287 public void setTaskDescription(IBinder token, ActivityManager.TaskDescription values) 5288 throws RemoteException { 5289 Parcel data = Parcel.obtain(); 5290 Parcel reply = Parcel.obtain(); 5291 data.writeInterfaceToken(IActivityManager.descriptor); 5292 data.writeStrongBinder(token); 5293 values.writeToParcel(data, 0); 5294 mRemote.transact(SET_TASK_DESCRIPTION_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 5295 reply.readException(); 5296 data.recycle(); 5297 reply.recycle(); 5298 } 5299 5300 @Override 5301 public Bitmap getTaskDescriptionIcon(String filename) throws RemoteException { 5302 Parcel data = Parcel.obtain(); 5303 Parcel reply = Parcel.obtain(); 5304 data.writeInterfaceToken(IActivityManager.descriptor); 5305 data.writeString(filename); 5306 mRemote.transact(GET_TASK_DESCRIPTION_ICON_TRANSACTION, data, reply, 0); 5307 reply.readException(); 5308 final Bitmap icon = reply.readInt() == 0 ? null : Bitmap.CREATOR.createFromParcel(reply); 5309 data.recycle(); 5310 reply.recycle(); 5311 return icon; 5312 } 5313 5314 @Override 5315 public void startInPlaceAnimationOnFrontMostApplication(ActivityOptions options) 5316 throws RemoteException { 5317 Parcel data = Parcel.obtain(); 5318 Parcel reply = Parcel.obtain(); 5319 data.writeInterfaceToken(IActivityManager.descriptor); 5320 if (options == null) { 5321 data.writeInt(0); 5322 } else { 5323 data.writeInt(1); 5324 data.writeBundle(options.toBundle()); 5325 } 5326 mRemote.transact(START_IN_PLACE_ANIMATION_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 5327 reply.readException(); 5328 data.recycle(); 5329 reply.recycle(); 5330 } 5331 5332 @Override 5333 public boolean requestVisibleBehind(IBinder token, boolean visible) throws RemoteException { 5334 Parcel data = Parcel.obtain(); 5335 Parcel reply = Parcel.obtain(); 5336 data.writeInterfaceToken(IActivityManager.descriptor); 5337 data.writeStrongBinder(token); 5338 data.writeInt(visible ? 1 : 0); 5339 mRemote.transact(REQUEST_VISIBLE_BEHIND_TRANSACTION, data, reply, 0); 5340 reply.readException(); 5341 boolean success = reply.readInt() > 0; 5342 data.recycle(); 5343 reply.recycle(); 5344 return success; 5345 } 5346 5347 @Override 5348 public boolean isBackgroundVisibleBehind(IBinder token) throws RemoteException { 5349 Parcel data = Parcel.obtain(); 5350 Parcel reply = Parcel.obtain(); 5351 data.writeInterfaceToken(IActivityManager.descriptor); 5352 data.writeStrongBinder(token); 5353 mRemote.transact(IS_BACKGROUND_VISIBLE_BEHIND_TRANSACTION, data, reply, 0); 5354 reply.readException(); 5355 final boolean visible = reply.readInt() > 0; 5356 data.recycle(); 5357 reply.recycle(); 5358 return visible; 5359 } 5360 5361 @Override 5362 public void backgroundResourcesReleased(IBinder token) throws RemoteException { 5363 Parcel data = Parcel.obtain(); 5364 Parcel reply = Parcel.obtain(); 5365 data.writeInterfaceToken(IActivityManager.descriptor); 5366 data.writeStrongBinder(token); 5367 mRemote.transact(BACKGROUND_RESOURCES_RELEASED_TRANSACTION, data, reply, 5368 IBinder.FLAG_ONEWAY); 5369 reply.readException(); 5370 data.recycle(); 5371 reply.recycle(); 5372 } 5373 5374 @Override 5375 public void notifyLaunchTaskBehindComplete(IBinder token) throws RemoteException { 5376 Parcel data = Parcel.obtain(); 5377 Parcel reply = Parcel.obtain(); 5378 data.writeInterfaceToken(IActivityManager.descriptor); 5379 data.writeStrongBinder(token); 5380 mRemote.transact(NOTIFY_LAUNCH_TASK_BEHIND_COMPLETE_TRANSACTION, data, reply, 5381 IBinder.FLAG_ONEWAY); 5382 reply.readException(); 5383 data.recycle(); 5384 reply.recycle(); 5385 } 5386 5387 @Override 5388 public void notifyEnterAnimationComplete(IBinder token) throws RemoteException { 5389 Parcel data = Parcel.obtain(); 5390 Parcel reply = Parcel.obtain(); 5391 data.writeInterfaceToken(IActivityManager.descriptor); 5392 data.writeStrongBinder(token); 5393 mRemote.transact(NOTIFY_ENTER_ANIMATION_COMPLETE_TRANSACTION, data, reply, 5394 IBinder.FLAG_ONEWAY); 5395 reply.readException(); 5396 data.recycle(); 5397 reply.recycle(); 5398 } 5399 5400 @Override 5401 public void bootAnimationComplete() throws RemoteException { 5402 Parcel data = Parcel.obtain(); 5403 Parcel reply = Parcel.obtain(); 5404 data.writeInterfaceToken(IActivityManager.descriptor); 5405 mRemote.transact(BOOT_ANIMATION_COMPLETE_TRANSACTION, data, reply, 0); 5406 reply.readException(); 5407 data.recycle(); 5408 reply.recycle(); 5409 } 5410 5411 private IBinder mRemote; 5412} 5413