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