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