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