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