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