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