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