ActivityManagerNative.java revision 0b77ef9f5199b7cd0956f2bfe049cbd699ca03b4
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 List<ActivityManager.RecentTaskInfo> list = getRecentTasks(maxNum, 687 fl, userId); 688 reply.writeNoException(); 689 reply.writeTypedList(list); 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_WITH_APPID_TRANSACTION: { 1817 data.enforceInterface(IActivityManager.descriptor); 1818 String pkg = data.readString(); 1819 int appid = data.readInt(); 1820 String reason = data.readString(); 1821 killApplicationWithAppId(pkg, appid, reason); 1822 reply.writeNoException(); 1823 return true; 1824 } 1825 1826 case CLOSE_SYSTEM_DIALOGS_TRANSACTION: { 1827 data.enforceInterface(IActivityManager.descriptor); 1828 String reason = data.readString(); 1829 closeSystemDialogs(reason); 1830 reply.writeNoException(); 1831 return true; 1832 } 1833 1834 case GET_PROCESS_MEMORY_INFO_TRANSACTION: { 1835 data.enforceInterface(IActivityManager.descriptor); 1836 int[] pids = data.createIntArray(); 1837 Debug.MemoryInfo[] res = getProcessMemoryInfo(pids); 1838 reply.writeNoException(); 1839 reply.writeTypedArray(res, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1840 return true; 1841 } 1842 1843 case KILL_APPLICATION_PROCESS_TRANSACTION: { 1844 data.enforceInterface(IActivityManager.descriptor); 1845 String processName = data.readString(); 1846 int uid = data.readInt(); 1847 killApplicationProcess(processName, uid); 1848 reply.writeNoException(); 1849 return true; 1850 } 1851 1852 case OVERRIDE_PENDING_TRANSITION_TRANSACTION: { 1853 data.enforceInterface(IActivityManager.descriptor); 1854 IBinder token = data.readStrongBinder(); 1855 String packageName = data.readString(); 1856 int enterAnim = data.readInt(); 1857 int exitAnim = data.readInt(); 1858 overridePendingTransition(token, packageName, enterAnim, exitAnim); 1859 reply.writeNoException(); 1860 return true; 1861 } 1862 1863 case IS_USER_A_MONKEY_TRANSACTION: { 1864 data.enforceInterface(IActivityManager.descriptor); 1865 boolean areThey = isUserAMonkey(); 1866 reply.writeNoException(); 1867 reply.writeInt(areThey ? 1 : 0); 1868 return true; 1869 } 1870 1871 case SET_USER_IS_MONKEY_TRANSACTION: { 1872 data.enforceInterface(IActivityManager.descriptor); 1873 final boolean monkey = (data.readInt() == 1); 1874 setUserIsMonkey(monkey); 1875 reply.writeNoException(); 1876 return true; 1877 } 1878 1879 case FINISH_HEAVY_WEIGHT_APP_TRANSACTION: { 1880 data.enforceInterface(IActivityManager.descriptor); 1881 finishHeavyWeightApp(); 1882 reply.writeNoException(); 1883 return true; 1884 } 1885 1886 case IS_IMMERSIVE_TRANSACTION: { 1887 data.enforceInterface(IActivityManager.descriptor); 1888 IBinder token = data.readStrongBinder(); 1889 boolean isit = isImmersive(token); 1890 reply.writeNoException(); 1891 reply.writeInt(isit ? 1 : 0); 1892 return true; 1893 } 1894 1895 case IS_TOP_OF_TASK_TRANSACTION: { 1896 data.enforceInterface(IActivityManager.descriptor); 1897 IBinder token = data.readStrongBinder(); 1898 final boolean isTopOfTask = isTopOfTask(token); 1899 reply.writeNoException(); 1900 reply.writeInt(isTopOfTask ? 1 : 0); 1901 return true; 1902 } 1903 1904 case CONVERT_FROM_TRANSLUCENT_TRANSACTION: { 1905 data.enforceInterface(IActivityManager.descriptor); 1906 IBinder token = data.readStrongBinder(); 1907 boolean converted = convertFromTranslucent(token); 1908 reply.writeNoException(); 1909 reply.writeInt(converted ? 1 : 0); 1910 return true; 1911 } 1912 1913 case CONVERT_TO_TRANSLUCENT_TRANSACTION: { 1914 data.enforceInterface(IActivityManager.descriptor); 1915 IBinder token = data.readStrongBinder(); 1916 final Bundle bundle; 1917 if (data.readInt() == 0) { 1918 bundle = null; 1919 } else { 1920 bundle = data.readBundle(); 1921 } 1922 final ActivityOptions options = ActivityOptions.fromBundle(bundle); 1923 boolean converted = convertToTranslucent(token, options); 1924 reply.writeNoException(); 1925 reply.writeInt(converted ? 1 : 0); 1926 return true; 1927 } 1928 1929 case GET_ACTIVITY_OPTIONS_TRANSACTION: { 1930 data.enforceInterface(IActivityManager.descriptor); 1931 IBinder token = data.readStrongBinder(); 1932 final ActivityOptions options = getActivityOptions(token); 1933 reply.writeNoException(); 1934 reply.writeBundle(options == null ? null : options.toBundle()); 1935 return true; 1936 } 1937 1938 case SET_IMMERSIVE_TRANSACTION: { 1939 data.enforceInterface(IActivityManager.descriptor); 1940 IBinder token = data.readStrongBinder(); 1941 boolean imm = data.readInt() == 1; 1942 setImmersive(token, imm); 1943 reply.writeNoException(); 1944 return true; 1945 } 1946 1947 case IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION: { 1948 data.enforceInterface(IActivityManager.descriptor); 1949 boolean isit = isTopActivityImmersive(); 1950 reply.writeNoException(); 1951 reply.writeInt(isit ? 1 : 0); 1952 return true; 1953 } 1954 1955 case CRASH_APPLICATION_TRANSACTION: { 1956 data.enforceInterface(IActivityManager.descriptor); 1957 int uid = data.readInt(); 1958 int initialPid = data.readInt(); 1959 String packageName = data.readString(); 1960 String message = data.readString(); 1961 crashApplication(uid, initialPid, packageName, message); 1962 reply.writeNoException(); 1963 return true; 1964 } 1965 1966 case GET_PROVIDER_MIME_TYPE_TRANSACTION: { 1967 data.enforceInterface(IActivityManager.descriptor); 1968 Uri uri = Uri.CREATOR.createFromParcel(data); 1969 int userId = data.readInt(); 1970 String type = getProviderMimeType(uri, userId); 1971 reply.writeNoException(); 1972 reply.writeString(type); 1973 return true; 1974 } 1975 1976 case NEW_URI_PERMISSION_OWNER_TRANSACTION: { 1977 data.enforceInterface(IActivityManager.descriptor); 1978 String name = data.readString(); 1979 IBinder perm = newUriPermissionOwner(name); 1980 reply.writeNoException(); 1981 reply.writeStrongBinder(perm); 1982 return true; 1983 } 1984 1985 case GET_URI_PERMISSION_OWNER_FOR_ACTIVITY_TRANSACTION: { 1986 data.enforceInterface(IActivityManager.descriptor); 1987 IBinder activityToken = data.readStrongBinder(); 1988 IBinder perm = getUriPermissionOwnerForActivity(activityToken); 1989 reply.writeNoException(); 1990 reply.writeStrongBinder(perm); 1991 return true; 1992 } 1993 1994 case GRANT_URI_PERMISSION_FROM_OWNER_TRANSACTION: { 1995 data.enforceInterface(IActivityManager.descriptor); 1996 IBinder owner = data.readStrongBinder(); 1997 int fromUid = data.readInt(); 1998 String targetPkg = data.readString(); 1999 Uri uri = Uri.CREATOR.createFromParcel(data); 2000 int mode = data.readInt(); 2001 int sourceUserId = data.readInt(); 2002 int targetUserId = data.readInt(); 2003 grantUriPermissionFromOwner(owner, fromUid, targetPkg, uri, mode, sourceUserId, 2004 targetUserId); 2005 reply.writeNoException(); 2006 return true; 2007 } 2008 2009 case REVOKE_URI_PERMISSION_FROM_OWNER_TRANSACTION: { 2010 data.enforceInterface(IActivityManager.descriptor); 2011 IBinder owner = data.readStrongBinder(); 2012 Uri uri = null; 2013 if (data.readInt() != 0) { 2014 uri = Uri.CREATOR.createFromParcel(data); 2015 } 2016 int mode = data.readInt(); 2017 int userId = data.readInt(); 2018 revokeUriPermissionFromOwner(owner, uri, mode, userId); 2019 reply.writeNoException(); 2020 return true; 2021 } 2022 2023 case CHECK_GRANT_URI_PERMISSION_TRANSACTION: { 2024 data.enforceInterface(IActivityManager.descriptor); 2025 int callingUid = data.readInt(); 2026 String targetPkg = data.readString(); 2027 Uri uri = Uri.CREATOR.createFromParcel(data); 2028 int modeFlags = data.readInt(); 2029 int userId = data.readInt(); 2030 int res = checkGrantUriPermission(callingUid, targetPkg, uri, modeFlags, userId); 2031 reply.writeNoException(); 2032 reply.writeInt(res); 2033 return true; 2034 } 2035 2036 case DUMP_HEAP_TRANSACTION: { 2037 data.enforceInterface(IActivityManager.descriptor); 2038 String process = data.readString(); 2039 int userId = data.readInt(); 2040 boolean managed = data.readInt() != 0; 2041 String path = data.readString(); 2042 ParcelFileDescriptor fd = data.readInt() != 0 2043 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null; 2044 boolean res = dumpHeap(process, userId, managed, path, fd); 2045 reply.writeNoException(); 2046 reply.writeInt(res ? 1 : 0); 2047 return true; 2048 } 2049 2050 case START_ACTIVITIES_TRANSACTION: 2051 { 2052 data.enforceInterface(IActivityManager.descriptor); 2053 IBinder b = data.readStrongBinder(); 2054 IApplicationThread app = ApplicationThreadNative.asInterface(b); 2055 String callingPackage = data.readString(); 2056 Intent[] intents = data.createTypedArray(Intent.CREATOR); 2057 String[] resolvedTypes = data.createStringArray(); 2058 IBinder resultTo = data.readStrongBinder(); 2059 Bundle options = data.readInt() != 0 2060 ? Bundle.CREATOR.createFromParcel(data) : null; 2061 int userId = data.readInt(); 2062 int result = startActivities(app, callingPackage, intents, resolvedTypes, resultTo, 2063 options, userId); 2064 reply.writeNoException(); 2065 reply.writeInt(result); 2066 return true; 2067 } 2068 2069 case GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION: 2070 { 2071 data.enforceInterface(IActivityManager.descriptor); 2072 int mode = getFrontActivityScreenCompatMode(); 2073 reply.writeNoException(); 2074 reply.writeInt(mode); 2075 return true; 2076 } 2077 2078 case SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION: 2079 { 2080 data.enforceInterface(IActivityManager.descriptor); 2081 int mode = data.readInt(); 2082 setFrontActivityScreenCompatMode(mode); 2083 reply.writeNoException(); 2084 reply.writeInt(mode); 2085 return true; 2086 } 2087 2088 case GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION: 2089 { 2090 data.enforceInterface(IActivityManager.descriptor); 2091 String pkg = data.readString(); 2092 int mode = getPackageScreenCompatMode(pkg); 2093 reply.writeNoException(); 2094 reply.writeInt(mode); 2095 return true; 2096 } 2097 2098 case SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION: 2099 { 2100 data.enforceInterface(IActivityManager.descriptor); 2101 String pkg = data.readString(); 2102 int mode = data.readInt(); 2103 setPackageScreenCompatMode(pkg, mode); 2104 reply.writeNoException(); 2105 return true; 2106 } 2107 2108 case SWITCH_USER_TRANSACTION: { 2109 data.enforceInterface(IActivityManager.descriptor); 2110 int userid = data.readInt(); 2111 boolean result = switchUser(userid); 2112 reply.writeNoException(); 2113 reply.writeInt(result ? 1 : 0); 2114 return true; 2115 } 2116 2117 case START_USER_IN_BACKGROUND_TRANSACTION: { 2118 data.enforceInterface(IActivityManager.descriptor); 2119 int userid = data.readInt(); 2120 boolean result = startUserInBackground(userid); 2121 reply.writeNoException(); 2122 reply.writeInt(result ? 1 : 0); 2123 return true; 2124 } 2125 2126 case UNLOCK_USER_TRANSACTION: { 2127 data.enforceInterface(IActivityManager.descriptor); 2128 int userId = data.readInt(); 2129 byte[] token = data.createByteArray(); 2130 byte[] secret = data.createByteArray(); 2131 IProgressListener listener = IProgressListener.Stub 2132 .asInterface(data.readStrongBinder()); 2133 boolean result = unlockUser(userId, token, secret, listener); 2134 reply.writeNoException(); 2135 reply.writeInt(result ? 1 : 0); 2136 return true; 2137 } 2138 2139 case STOP_USER_TRANSACTION: { 2140 data.enforceInterface(IActivityManager.descriptor); 2141 int userid = data.readInt(); 2142 boolean force = data.readInt() != 0; 2143 IStopUserCallback callback = IStopUserCallback.Stub.asInterface( 2144 data.readStrongBinder()); 2145 int result = stopUser(userid, force, callback); 2146 reply.writeNoException(); 2147 reply.writeInt(result); 2148 return true; 2149 } 2150 2151 case GET_CURRENT_USER_TRANSACTION: { 2152 data.enforceInterface(IActivityManager.descriptor); 2153 UserInfo userInfo = getCurrentUser(); 2154 reply.writeNoException(); 2155 userInfo.writeToParcel(reply, 0); 2156 return true; 2157 } 2158 2159 case IS_USER_RUNNING_TRANSACTION: { 2160 data.enforceInterface(IActivityManager.descriptor); 2161 int userid = data.readInt(); 2162 int _flags = data.readInt(); 2163 boolean result = isUserRunning(userid, _flags); 2164 reply.writeNoException(); 2165 reply.writeInt(result ? 1 : 0); 2166 return true; 2167 } 2168 2169 case GET_RUNNING_USER_IDS_TRANSACTION: { 2170 data.enforceInterface(IActivityManager.descriptor); 2171 int[] result = getRunningUserIds(); 2172 reply.writeNoException(); 2173 reply.writeIntArray(result); 2174 return true; 2175 } 2176 2177 case REMOVE_TASK_TRANSACTION: 2178 { 2179 data.enforceInterface(IActivityManager.descriptor); 2180 int taskId = data.readInt(); 2181 boolean result = removeTask(taskId); 2182 reply.writeNoException(); 2183 reply.writeInt(result ? 1 : 0); 2184 return true; 2185 } 2186 2187 case REGISTER_PROCESS_OBSERVER_TRANSACTION: { 2188 data.enforceInterface(IActivityManager.descriptor); 2189 IProcessObserver observer = IProcessObserver.Stub.asInterface( 2190 data.readStrongBinder()); 2191 registerProcessObserver(observer); 2192 return true; 2193 } 2194 2195 case UNREGISTER_PROCESS_OBSERVER_TRANSACTION: { 2196 data.enforceInterface(IActivityManager.descriptor); 2197 IProcessObserver observer = IProcessObserver.Stub.asInterface( 2198 data.readStrongBinder()); 2199 unregisterProcessObserver(observer); 2200 return true; 2201 } 2202 2203 case REGISTER_UID_OBSERVER_TRANSACTION: { 2204 data.enforceInterface(IActivityManager.descriptor); 2205 IUidObserver observer = IUidObserver.Stub.asInterface( 2206 data.readStrongBinder()); 2207 int which = data.readInt(); 2208 registerUidObserver(observer, which); 2209 return true; 2210 } 2211 2212 case UNREGISTER_UID_OBSERVER_TRANSACTION: { 2213 data.enforceInterface(IActivityManager.descriptor); 2214 IUidObserver observer = IUidObserver.Stub.asInterface( 2215 data.readStrongBinder()); 2216 unregisterUidObserver(observer); 2217 return true; 2218 } 2219 2220 case GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION: 2221 { 2222 data.enforceInterface(IActivityManager.descriptor); 2223 String pkg = data.readString(); 2224 boolean ask = getPackageAskScreenCompat(pkg); 2225 reply.writeNoException(); 2226 reply.writeInt(ask ? 1 : 0); 2227 return true; 2228 } 2229 2230 case SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION: 2231 { 2232 data.enforceInterface(IActivityManager.descriptor); 2233 String pkg = data.readString(); 2234 boolean ask = data.readInt() != 0; 2235 setPackageAskScreenCompat(pkg, ask); 2236 reply.writeNoException(); 2237 return true; 2238 } 2239 2240 case IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION: { 2241 data.enforceInterface(IActivityManager.descriptor); 2242 IIntentSender r = IIntentSender.Stub.asInterface( 2243 data.readStrongBinder()); 2244 boolean res = isIntentSenderTargetedToPackage(r); 2245 reply.writeNoException(); 2246 reply.writeInt(res ? 1 : 0); 2247 return true; 2248 } 2249 2250 case IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION: { 2251 data.enforceInterface(IActivityManager.descriptor); 2252 IIntentSender r = IIntentSender.Stub.asInterface( 2253 data.readStrongBinder()); 2254 boolean res = isIntentSenderAnActivity(r); 2255 reply.writeNoException(); 2256 reply.writeInt(res ? 1 : 0); 2257 return true; 2258 } 2259 2260 case GET_INTENT_FOR_INTENT_SENDER_TRANSACTION: { 2261 data.enforceInterface(IActivityManager.descriptor); 2262 IIntentSender r = IIntentSender.Stub.asInterface( 2263 data.readStrongBinder()); 2264 Intent intent = getIntentForIntentSender(r); 2265 reply.writeNoException(); 2266 if (intent != null) { 2267 reply.writeInt(1); 2268 intent.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2269 } else { 2270 reply.writeInt(0); 2271 } 2272 return true; 2273 } 2274 2275 case GET_TAG_FOR_INTENT_SENDER_TRANSACTION: { 2276 data.enforceInterface(IActivityManager.descriptor); 2277 IIntentSender r = IIntentSender.Stub.asInterface( 2278 data.readStrongBinder()); 2279 String prefix = data.readString(); 2280 String tag = getTagForIntentSender(r, prefix); 2281 reply.writeNoException(); 2282 reply.writeString(tag); 2283 return true; 2284 } 2285 2286 case UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION: { 2287 data.enforceInterface(IActivityManager.descriptor); 2288 Configuration config = Configuration.CREATOR.createFromParcel(data); 2289 updatePersistentConfiguration(config); 2290 reply.writeNoException(); 2291 return true; 2292 } 2293 2294 case GET_PROCESS_PSS_TRANSACTION: { 2295 data.enforceInterface(IActivityManager.descriptor); 2296 int[] pids = data.createIntArray(); 2297 long[] pss = getProcessPss(pids); 2298 reply.writeNoException(); 2299 reply.writeLongArray(pss); 2300 return true; 2301 } 2302 2303 case SHOW_BOOT_MESSAGE_TRANSACTION: { 2304 data.enforceInterface(IActivityManager.descriptor); 2305 CharSequence msg = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data); 2306 boolean always = data.readInt() != 0; 2307 showBootMessage(msg, always); 2308 reply.writeNoException(); 2309 return true; 2310 } 2311 2312 case KEYGUARD_WAITING_FOR_ACTIVITY_DRAWN_TRANSACTION: { 2313 data.enforceInterface(IActivityManager.descriptor); 2314 keyguardWaitingForActivityDrawn(); 2315 reply.writeNoException(); 2316 return true; 2317 } 2318 2319 case KEYGUARD_GOING_AWAY_TRANSACTION: { 2320 data.enforceInterface(IActivityManager.descriptor); 2321 keyguardGoingAway(data.readInt()); 2322 reply.writeNoException(); 2323 return true; 2324 } 2325 2326 case SHOULD_UP_RECREATE_TASK_TRANSACTION: { 2327 data.enforceInterface(IActivityManager.descriptor); 2328 IBinder token = data.readStrongBinder(); 2329 String destAffinity = data.readString(); 2330 boolean res = shouldUpRecreateTask(token, destAffinity); 2331 reply.writeNoException(); 2332 reply.writeInt(res ? 1 : 0); 2333 return true; 2334 } 2335 2336 case NAVIGATE_UP_TO_TRANSACTION: { 2337 data.enforceInterface(IActivityManager.descriptor); 2338 IBinder token = data.readStrongBinder(); 2339 Intent target = Intent.CREATOR.createFromParcel(data); 2340 int resultCode = data.readInt(); 2341 Intent resultData = null; 2342 if (data.readInt() != 0) { 2343 resultData = Intent.CREATOR.createFromParcel(data); 2344 } 2345 boolean res = navigateUpTo(token, target, resultCode, resultData); 2346 reply.writeNoException(); 2347 reply.writeInt(res ? 1 : 0); 2348 return true; 2349 } 2350 2351 case GET_LAUNCHED_FROM_UID_TRANSACTION: { 2352 data.enforceInterface(IActivityManager.descriptor); 2353 IBinder token = data.readStrongBinder(); 2354 int res = getLaunchedFromUid(token); 2355 reply.writeNoException(); 2356 reply.writeInt(res); 2357 return true; 2358 } 2359 2360 case GET_LAUNCHED_FROM_PACKAGE_TRANSACTION: { 2361 data.enforceInterface(IActivityManager.descriptor); 2362 IBinder token = data.readStrongBinder(); 2363 String res = getLaunchedFromPackage(token); 2364 reply.writeNoException(); 2365 reply.writeString(res); 2366 return true; 2367 } 2368 2369 case REGISTER_USER_SWITCH_OBSERVER_TRANSACTION: { 2370 data.enforceInterface(IActivityManager.descriptor); 2371 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface( 2372 data.readStrongBinder()); 2373 String name = data.readString(); 2374 registerUserSwitchObserver(observer, name); 2375 reply.writeNoException(); 2376 return true; 2377 } 2378 2379 case UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION: { 2380 data.enforceInterface(IActivityManager.descriptor); 2381 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface( 2382 data.readStrongBinder()); 2383 unregisterUserSwitchObserver(observer); 2384 reply.writeNoException(); 2385 return true; 2386 } 2387 2388 case REQUEST_BUG_REPORT_TRANSACTION: { 2389 data.enforceInterface(IActivityManager.descriptor); 2390 int bugreportType = data.readInt(); 2391 requestBugReport(bugreportType); 2392 reply.writeNoException(); 2393 return true; 2394 } 2395 2396 case INPUT_DISPATCHING_TIMED_OUT_TRANSACTION: { 2397 data.enforceInterface(IActivityManager.descriptor); 2398 int pid = data.readInt(); 2399 boolean aboveSystem = data.readInt() != 0; 2400 String reason = data.readString(); 2401 long res = inputDispatchingTimedOut(pid, aboveSystem, reason); 2402 reply.writeNoException(); 2403 reply.writeLong(res); 2404 return true; 2405 } 2406 2407 case GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION: { 2408 data.enforceInterface(IActivityManager.descriptor); 2409 int requestType = data.readInt(); 2410 Bundle res = getAssistContextExtras(requestType); 2411 reply.writeNoException(); 2412 reply.writeBundle(res); 2413 return true; 2414 } 2415 2416 case REQUEST_ASSIST_CONTEXT_EXTRAS_TRANSACTION: { 2417 data.enforceInterface(IActivityManager.descriptor); 2418 int requestType = data.readInt(); 2419 IResultReceiver receiver = IResultReceiver.Stub.asInterface(data.readStrongBinder()); 2420 Bundle receiverExtras = data.readBundle(); 2421 IBinder activityToken = data.readStrongBinder(); 2422 boolean focused = data.readInt() == 1; 2423 boolean newSessionId = data.readInt() == 1; 2424 boolean res = requestAssistContextExtras(requestType, receiver, receiverExtras, 2425 activityToken, focused, newSessionId); 2426 reply.writeNoException(); 2427 reply.writeInt(res ? 1 : 0); 2428 return true; 2429 } 2430 2431 case REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION: { 2432 data.enforceInterface(IActivityManager.descriptor); 2433 IBinder token = data.readStrongBinder(); 2434 Bundle extras = data.readBundle(); 2435 AssistStructure structure = AssistStructure.CREATOR.createFromParcel(data); 2436 AssistContent content = AssistContent.CREATOR.createFromParcel(data); 2437 Uri referrer = data.readInt() != 0 ? Uri.CREATOR.createFromParcel(data) : null; 2438 reportAssistContextExtras(token, extras, structure, content, referrer); 2439 reply.writeNoException(); 2440 return true; 2441 } 2442 2443 case LAUNCH_ASSIST_INTENT_TRANSACTION: { 2444 data.enforceInterface(IActivityManager.descriptor); 2445 Intent intent = Intent.CREATOR.createFromParcel(data); 2446 int requestType = data.readInt(); 2447 String hint = data.readString(); 2448 int userHandle = data.readInt(); 2449 Bundle args = data.readBundle(); 2450 boolean res = launchAssistIntent(intent, requestType, hint, userHandle, args); 2451 reply.writeNoException(); 2452 reply.writeInt(res ? 1 : 0); 2453 return true; 2454 } 2455 2456 case IS_SCREEN_CAPTURE_ALLOWED_ON_CURRENT_ACTIVITY_TRANSACTION: { 2457 data.enforceInterface(IActivityManager.descriptor); 2458 boolean res = isAssistDataAllowedOnCurrentActivity(); 2459 reply.writeNoException(); 2460 reply.writeInt(res ? 1 : 0); 2461 return true; 2462 } 2463 2464 case SHOW_ASSIST_FROM_ACTIVITY_TRANSACTION: { 2465 data.enforceInterface(IActivityManager.descriptor); 2466 IBinder token = data.readStrongBinder(); 2467 Bundle args = data.readBundle(); 2468 boolean res = showAssistFromActivity(token, args); 2469 reply.writeNoException(); 2470 reply.writeInt(res ? 1 : 0); 2471 return true; 2472 } 2473 2474 case KILL_UID_TRANSACTION: { 2475 data.enforceInterface(IActivityManager.descriptor); 2476 int appId = data.readInt(); 2477 int userId = data.readInt(); 2478 String reason = data.readString(); 2479 killUid(appId, userId, reason); 2480 reply.writeNoException(); 2481 return true; 2482 } 2483 2484 case HANG_TRANSACTION: { 2485 data.enforceInterface(IActivityManager.descriptor); 2486 IBinder who = data.readStrongBinder(); 2487 boolean allowRestart = data.readInt() != 0; 2488 hang(who, allowRestart); 2489 reply.writeNoException(); 2490 return true; 2491 } 2492 2493 case REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION: { 2494 data.enforceInterface(IActivityManager.descriptor); 2495 IBinder token = data.readStrongBinder(); 2496 reportActivityFullyDrawn(token); 2497 reply.writeNoException(); 2498 return true; 2499 } 2500 2501 case NOTIFY_ACTIVITY_DRAWN_TRANSACTION: { 2502 data.enforceInterface(IActivityManager.descriptor); 2503 IBinder token = data.readStrongBinder(); 2504 notifyActivityDrawn(token); 2505 reply.writeNoException(); 2506 return true; 2507 } 2508 2509 case RESTART_TRANSACTION: { 2510 data.enforceInterface(IActivityManager.descriptor); 2511 restart(); 2512 reply.writeNoException(); 2513 return true; 2514 } 2515 2516 case PERFORM_IDLE_MAINTENANCE_TRANSACTION: { 2517 data.enforceInterface(IActivityManager.descriptor); 2518 performIdleMaintenance(); 2519 reply.writeNoException(); 2520 return true; 2521 } 2522 2523 case CREATE_VIRTUAL_ACTIVITY_CONTAINER_TRANSACTION: { 2524 data.enforceInterface(IActivityManager.descriptor); 2525 IBinder parentActivityToken = data.readStrongBinder(); 2526 IActivityContainerCallback callback = 2527 IActivityContainerCallback.Stub.asInterface(data.readStrongBinder()); 2528 IActivityContainer activityContainer = 2529 createVirtualActivityContainer(parentActivityToken, callback); 2530 reply.writeNoException(); 2531 if (activityContainer != null) { 2532 reply.writeInt(1); 2533 reply.writeStrongBinder(activityContainer.asBinder()); 2534 } else { 2535 reply.writeInt(0); 2536 } 2537 return true; 2538 } 2539 2540 case DELETE_ACTIVITY_CONTAINER_TRANSACTION: { 2541 data.enforceInterface(IActivityManager.descriptor); 2542 IActivityContainer activityContainer = 2543 IActivityContainer.Stub.asInterface(data.readStrongBinder()); 2544 deleteActivityContainer(activityContainer); 2545 reply.writeNoException(); 2546 return true; 2547 } 2548 2549 case CREATE_STACK_ON_DISPLAY: { 2550 data.enforceInterface(IActivityManager.descriptor); 2551 int displayId = data.readInt(); 2552 IActivityContainer activityContainer = createStackOnDisplay(displayId); 2553 reply.writeNoException(); 2554 if (activityContainer != null) { 2555 reply.writeInt(1); 2556 reply.writeStrongBinder(activityContainer.asBinder()); 2557 } else { 2558 reply.writeInt(0); 2559 } 2560 return true; 2561 } 2562 2563 case GET_ACTIVITY_DISPLAY_ID_TRANSACTION: { 2564 data.enforceInterface(IActivityManager.descriptor); 2565 IBinder activityToken = data.readStrongBinder(); 2566 int displayId = getActivityDisplayId(activityToken); 2567 reply.writeNoException(); 2568 reply.writeInt(displayId); 2569 return true; 2570 } 2571 2572 case START_LOCK_TASK_BY_TASK_ID_TRANSACTION: { 2573 data.enforceInterface(IActivityManager.descriptor); 2574 final int taskId = data.readInt(); 2575 startLockTaskMode(taskId); 2576 reply.writeNoException(); 2577 return true; 2578 } 2579 2580 case START_LOCK_TASK_BY_TOKEN_TRANSACTION: { 2581 data.enforceInterface(IActivityManager.descriptor); 2582 IBinder token = data.readStrongBinder(); 2583 startLockTaskMode(token); 2584 reply.writeNoException(); 2585 return true; 2586 } 2587 2588 case START_SYSTEM_LOCK_TASK_TRANSACTION: { 2589 data.enforceInterface(IActivityManager.descriptor); 2590 int taskId = data.readInt(); 2591 startSystemLockTaskMode(taskId); 2592 reply.writeNoException(); 2593 return true; 2594 } 2595 2596 case STOP_LOCK_TASK_MODE_TRANSACTION: { 2597 data.enforceInterface(IActivityManager.descriptor); 2598 stopLockTaskMode(); 2599 reply.writeNoException(); 2600 return true; 2601 } 2602 2603 case STOP_SYSTEM_LOCK_TASK_TRANSACTION: { 2604 data.enforceInterface(IActivityManager.descriptor); 2605 stopSystemLockTaskMode(); 2606 reply.writeNoException(); 2607 return true; 2608 } 2609 2610 case IS_IN_LOCK_TASK_MODE_TRANSACTION: { 2611 data.enforceInterface(IActivityManager.descriptor); 2612 final boolean isInLockTaskMode = isInLockTaskMode(); 2613 reply.writeNoException(); 2614 reply.writeInt(isInLockTaskMode ? 1 : 0); 2615 return true; 2616 } 2617 2618 case GET_LOCK_TASK_MODE_STATE_TRANSACTION: { 2619 data.enforceInterface(IActivityManager.descriptor); 2620 final int lockTaskModeState = getLockTaskModeState(); 2621 reply.writeNoException(); 2622 reply.writeInt(lockTaskModeState); 2623 return true; 2624 } 2625 2626 case SHOW_LOCK_TASK_ESCAPE_MESSAGE_TRANSACTION: { 2627 data.enforceInterface(IActivityManager.descriptor); 2628 final IBinder token = data.readStrongBinder(); 2629 showLockTaskEscapeMessage(token); 2630 reply.writeNoException(); 2631 return true; 2632 } 2633 2634 case SET_TASK_DESCRIPTION_TRANSACTION: { 2635 data.enforceInterface(IActivityManager.descriptor); 2636 IBinder token = data.readStrongBinder(); 2637 ActivityManager.TaskDescription values = 2638 ActivityManager.TaskDescription.CREATOR.createFromParcel(data); 2639 setTaskDescription(token, values); 2640 reply.writeNoException(); 2641 return true; 2642 } 2643 2644 case SET_TASK_RESIZEABLE_TRANSACTION: { 2645 data.enforceInterface(IActivityManager.descriptor); 2646 final int taskId = data.readInt(); 2647 final int resizeableMode = data.readInt(); 2648 setTaskResizeable(taskId, resizeableMode); 2649 reply.writeNoException(); 2650 return true; 2651 } 2652 2653 case RESIZE_TASK_TRANSACTION: { 2654 data.enforceInterface(IActivityManager.descriptor); 2655 int taskId = data.readInt(); 2656 int resizeMode = data.readInt(); 2657 Rect r = Rect.CREATOR.createFromParcel(data); 2658 resizeTask(taskId, r, resizeMode); 2659 reply.writeNoException(); 2660 return true; 2661 } 2662 2663 case GET_TASK_BOUNDS_TRANSACTION: { 2664 data.enforceInterface(IActivityManager.descriptor); 2665 int taskId = data.readInt(); 2666 Rect r = getTaskBounds(taskId); 2667 reply.writeNoException(); 2668 r.writeToParcel(reply, 0); 2669 return true; 2670 } 2671 2672 case GET_TASK_DESCRIPTION_ICON_TRANSACTION: { 2673 data.enforceInterface(IActivityManager.descriptor); 2674 String filename = data.readString(); 2675 int userId = data.readInt(); 2676 Bitmap icon = getTaskDescriptionIcon(filename, userId); 2677 reply.writeNoException(); 2678 if (icon == null) { 2679 reply.writeInt(0); 2680 } else { 2681 reply.writeInt(1); 2682 icon.writeToParcel(reply, 0); 2683 } 2684 return true; 2685 } 2686 2687 case START_IN_PLACE_ANIMATION_TRANSACTION: { 2688 data.enforceInterface(IActivityManager.descriptor); 2689 final Bundle bundle; 2690 if (data.readInt() == 0) { 2691 bundle = null; 2692 } else { 2693 bundle = data.readBundle(); 2694 } 2695 final ActivityOptions options = ActivityOptions.fromBundle(bundle); 2696 startInPlaceAnimationOnFrontMostApplication(options); 2697 reply.writeNoException(); 2698 return true; 2699 } 2700 2701 case REQUEST_VISIBLE_BEHIND_TRANSACTION: { 2702 data.enforceInterface(IActivityManager.descriptor); 2703 IBinder token = data.readStrongBinder(); 2704 boolean enable = data.readInt() > 0; 2705 boolean success = requestVisibleBehind(token, enable); 2706 reply.writeNoException(); 2707 reply.writeInt(success ? 1 : 0); 2708 return true; 2709 } 2710 2711 case IS_BACKGROUND_VISIBLE_BEHIND_TRANSACTION: { 2712 data.enforceInterface(IActivityManager.descriptor); 2713 IBinder token = data.readStrongBinder(); 2714 final boolean enabled = isBackgroundVisibleBehind(token); 2715 reply.writeNoException(); 2716 reply.writeInt(enabled ? 1 : 0); 2717 return true; 2718 } 2719 2720 case BACKGROUND_RESOURCES_RELEASED_TRANSACTION: { 2721 data.enforceInterface(IActivityManager.descriptor); 2722 IBinder token = data.readStrongBinder(); 2723 backgroundResourcesReleased(token); 2724 reply.writeNoException(); 2725 return true; 2726 } 2727 2728 case NOTIFY_LAUNCH_TASK_BEHIND_COMPLETE_TRANSACTION: { 2729 data.enforceInterface(IActivityManager.descriptor); 2730 IBinder token = data.readStrongBinder(); 2731 notifyLaunchTaskBehindComplete(token); 2732 reply.writeNoException(); 2733 return true; 2734 } 2735 2736 case NOTIFY_ENTER_ANIMATION_COMPLETE_TRANSACTION: { 2737 data.enforceInterface(IActivityManager.descriptor); 2738 IBinder token = data.readStrongBinder(); 2739 notifyEnterAnimationComplete(token); 2740 reply.writeNoException(); 2741 return true; 2742 } 2743 2744 case BOOT_ANIMATION_COMPLETE_TRANSACTION: { 2745 data.enforceInterface(IActivityManager.descriptor); 2746 bootAnimationComplete(); 2747 reply.writeNoException(); 2748 return true; 2749 } 2750 2751 case NOTIFY_CLEARTEXT_NETWORK_TRANSACTION: { 2752 data.enforceInterface(IActivityManager.descriptor); 2753 final int uid = data.readInt(); 2754 final byte[] firstPacket = data.createByteArray(); 2755 notifyCleartextNetwork(uid, firstPacket); 2756 reply.writeNoException(); 2757 return true; 2758 } 2759 2760 case SET_DUMP_HEAP_DEBUG_LIMIT_TRANSACTION: { 2761 data.enforceInterface(IActivityManager.descriptor); 2762 String procName = data.readString(); 2763 int uid = data.readInt(); 2764 long maxMemSize = data.readLong(); 2765 String reportPackage = data.readString(); 2766 setDumpHeapDebugLimit(procName, uid, maxMemSize, reportPackage); 2767 reply.writeNoException(); 2768 return true; 2769 } 2770 2771 case DUMP_HEAP_FINISHED_TRANSACTION: { 2772 data.enforceInterface(IActivityManager.descriptor); 2773 String path = data.readString(); 2774 dumpHeapFinished(path); 2775 reply.writeNoException(); 2776 return true; 2777 } 2778 2779 case SET_VOICE_KEEP_AWAKE_TRANSACTION: { 2780 data.enforceInterface(IActivityManager.descriptor); 2781 IVoiceInteractionSession session = IVoiceInteractionSession.Stub.asInterface( 2782 data.readStrongBinder()); 2783 boolean keepAwake = data.readInt() != 0; 2784 setVoiceKeepAwake(session, keepAwake); 2785 reply.writeNoException(); 2786 return true; 2787 } 2788 2789 case UPDATE_LOCK_TASK_PACKAGES_TRANSACTION: { 2790 data.enforceInterface(IActivityManager.descriptor); 2791 int userId = data.readInt(); 2792 String[] packages = data.readStringArray(); 2793 updateLockTaskPackages(userId, packages); 2794 reply.writeNoException(); 2795 return true; 2796 } 2797 2798 case UPDATE_DEVICE_OWNER_TRANSACTION: { 2799 data.enforceInterface(IActivityManager.descriptor); 2800 String packageName = data.readString(); 2801 updateDeviceOwner(packageName); 2802 reply.writeNoException(); 2803 return true; 2804 } 2805 2806 case GET_PACKAGE_PROCESS_STATE_TRANSACTION: { 2807 data.enforceInterface(IActivityManager.descriptor); 2808 String pkg = data.readString(); 2809 String callingPackage = data.readString(); 2810 int res = getPackageProcessState(pkg, callingPackage); 2811 reply.writeNoException(); 2812 reply.writeInt(res); 2813 return true; 2814 } 2815 2816 case SET_PROCESS_MEMORY_TRIM_TRANSACTION: { 2817 data.enforceInterface(IActivityManager.descriptor); 2818 String process = data.readString(); 2819 int userId = data.readInt(); 2820 int level = data.readInt(); 2821 boolean res = setProcessMemoryTrimLevel(process, userId, level); 2822 reply.writeNoException(); 2823 reply.writeInt(res ? 1 : 0); 2824 return true; 2825 } 2826 2827 case IS_ROOT_VOICE_INTERACTION_TRANSACTION: { 2828 data.enforceInterface(IActivityManager.descriptor); 2829 IBinder token = data.readStrongBinder(); 2830 boolean res = isRootVoiceInteraction(token); 2831 reply.writeNoException(); 2832 reply.writeInt(res ? 1 : 0); 2833 return true; 2834 } 2835 2836 case START_BINDER_TRACKING_TRANSACTION: { 2837 data.enforceInterface(IActivityManager.descriptor); 2838 boolean res = startBinderTracking(); 2839 reply.writeNoException(); 2840 reply.writeInt(res ? 1 : 0); 2841 return true; 2842 } 2843 2844 case STOP_BINDER_TRACKING_AND_DUMP_TRANSACTION: { 2845 data.enforceInterface(IActivityManager.descriptor); 2846 ParcelFileDescriptor fd = data.readInt() != 0 2847 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null; 2848 boolean res = stopBinderTrackingAndDump(fd); 2849 reply.writeNoException(); 2850 reply.writeInt(res ? 1 : 0); 2851 return true; 2852 } 2853 case GET_ACTIVITY_STACK_ID_TRANSACTION: { 2854 data.enforceInterface(IActivityManager.descriptor); 2855 IBinder token = data.readStrongBinder(); 2856 int stackId = getActivityStackId(token); 2857 reply.writeNoException(); 2858 reply.writeInt(stackId); 2859 return true; 2860 } 2861 case EXIT_FREEFORM_MODE_TRANSACTION: { 2862 data.enforceInterface(IActivityManager.descriptor); 2863 IBinder token = data.readStrongBinder(); 2864 exitFreeformMode(token); 2865 reply.writeNoException(); 2866 return true; 2867 } 2868 case REPORT_SIZE_CONFIGURATIONS: { 2869 data.enforceInterface(IActivityManager.descriptor); 2870 IBinder token = data.readStrongBinder(); 2871 int[] horizontal = readIntArray(data); 2872 int[] vertical = readIntArray(data); 2873 int[] smallest = readIntArray(data); 2874 reportSizeConfigurations(token, horizontal, vertical, smallest); 2875 return true; 2876 } 2877 case SUPPRESS_RESIZE_CONFIG_CHANGES_TRANSACTION: { 2878 data.enforceInterface(IActivityManager.descriptor); 2879 final boolean suppress = data.readInt() == 1; 2880 suppressResizeConfigChanges(suppress); 2881 reply.writeNoException(); 2882 return true; 2883 } 2884 case MOVE_TASKS_TO_FULLSCREEN_STACK_TRANSACTION: { 2885 data.enforceInterface(IActivityManager.descriptor); 2886 final int stackId = data.readInt(); 2887 final boolean onTop = data.readInt() == 1; 2888 moveTasksToFullscreenStack(stackId, onTop); 2889 reply.writeNoException(); 2890 return true; 2891 } 2892 case GET_APP_START_MODE_TRANSACTION: { 2893 data.enforceInterface(IActivityManager.descriptor); 2894 final int uid = data.readInt(); 2895 final String pkg = data.readString(); 2896 int res = getAppStartMode(uid, pkg); 2897 reply.writeNoException(); 2898 reply.writeInt(res); 2899 return true; 2900 } 2901 case IN_MULTI_WINDOW_TRANSACTION: { 2902 data.enforceInterface(IActivityManager.descriptor); 2903 final IBinder token = data.readStrongBinder(); 2904 final boolean inMultiWindow = isInMultiWindowMode(token); 2905 reply.writeNoException(); 2906 reply.writeInt(inMultiWindow ? 1 : 0); 2907 return true; 2908 } 2909 case IN_PICTURE_IN_PICTURE_TRANSACTION: { 2910 data.enforceInterface(IActivityManager.descriptor); 2911 final IBinder token = data.readStrongBinder(); 2912 final boolean inPip = isInPictureInPictureMode(token); 2913 reply.writeNoException(); 2914 reply.writeInt(inPip ? 1 : 0); 2915 return true; 2916 } 2917 case ENTER_PICTURE_IN_PICTURE_TRANSACTION: { 2918 data.enforceInterface(IActivityManager.descriptor); 2919 final IBinder token = data.readStrongBinder(); 2920 enterPictureInPictureMode(token); 2921 reply.writeNoException(); 2922 return true; 2923 } 2924 case SET_VR_MODE_TRANSACTION: { 2925 data.enforceInterface(IActivityManager.descriptor); 2926 final IBinder token = data.readStrongBinder(); 2927 final boolean enable = data.readInt() == 1; 2928 final ComponentName packageName = ComponentName.CREATOR.createFromParcel(data); 2929 int res = setVrMode(token, enable, packageName); 2930 reply.writeNoException(); 2931 reply.writeInt(res); 2932 return true; 2933 } 2934 case IS_VR_PACKAGE_ENABLED_TRANSACTION: { 2935 data.enforceInterface(IActivityManager.descriptor); 2936 final ComponentName packageName = ComponentName.CREATOR.createFromParcel(data); 2937 boolean res = isVrModePackageEnabled(packageName); 2938 reply.writeNoException(); 2939 reply.writeInt(res ? 1 : 0); 2940 return true; 2941 } 2942 case IS_APP_FOREGROUND_TRANSACTION: { 2943 data.enforceInterface(IActivityManager.descriptor); 2944 final int userHandle = data.readInt(); 2945 final boolean isForeground = isAppForeground(userHandle); 2946 reply.writeNoException(); 2947 reply.writeInt(isForeground ? 1 : 0); 2948 return true; 2949 } 2950 case NOTIFY_PINNED_STACK_ANIMATION_ENDED_TRANSACTION: { 2951 data.enforceInterface(IActivityManager.descriptor); 2952 reply.writeNoException(); 2953 return true; 2954 } 2955 case REMOVE_STACK: { 2956 data.enforceInterface(IActivityManager.descriptor); 2957 final int stackId = data.readInt(); 2958 removeStack(stackId); 2959 reply.writeNoException(); 2960 return true; 2961 } 2962 case NOTIFY_LOCKED_PROFILE: { 2963 data.enforceInterface(IActivityManager.descriptor); 2964 final int userId = data.readInt(); 2965 notifyLockedProfile(userId); 2966 reply.writeNoException(); 2967 return true; 2968 } 2969 case START_CONFIRM_DEVICE_CREDENTIAL_INTENT: { 2970 data.enforceInterface(IActivityManager.descriptor); 2971 final Intent intent = Intent.CREATOR.createFromParcel(data); 2972 startConfirmDeviceCredentialIntent(intent); 2973 reply.writeNoException(); 2974 return true; 2975 } 2976 case SEND_IDLE_JOB_TRIGGER_TRANSACTION: { 2977 data.enforceInterface(IActivityManager.descriptor); 2978 sendIdleJobTrigger(); 2979 reply.writeNoException(); 2980 return true; 2981 } 2982 case SEND_INTENT_SENDER_TRANSACTION: { 2983 data.enforceInterface(IActivityManager.descriptor); 2984 IIntentSender sender = IIntentSender.Stub.asInterface(data.readStrongBinder()); 2985 int scode = data.readInt(); 2986 Intent intent = data.readInt() != 0 ? Intent.CREATOR.createFromParcel(data) : null; 2987 String resolvedType = data.readString(); 2988 IIntentReceiver finishedReceiver = IIntentReceiver.Stub.asInterface( 2989 data.readStrongBinder()); 2990 String requiredPermission = data.readString(); 2991 Bundle options = data.readInt() != 0 ? Bundle.CREATOR.createFromParcel(data) : null; 2992 int result = sendIntentSender(sender, scode, intent, resolvedType, finishedReceiver, 2993 requiredPermission, options); 2994 reply.writeNoException(); 2995 reply.writeInt(result); 2996 return true; 2997 } 2998 } 2999 3000 return super.onTransact(code, data, reply, flags); 3001 } 3002 3003 private int[] readIntArray(Parcel data) { 3004 int[] smallest = null; 3005 int smallestSize = data.readInt(); 3006 if (smallestSize > 0) { 3007 smallest = new int[smallestSize]; 3008 data.readIntArray(smallest); 3009 } 3010 return smallest; 3011 } 3012 3013 public IBinder asBinder() { 3014 return this; 3015 } 3016 3017 private static final Singleton<IActivityManager> gDefault = new Singleton<IActivityManager>() { 3018 protected IActivityManager create() { 3019 IBinder b = ServiceManager.getService("activity"); 3020 if (false) { 3021 Log.v("ActivityManager", "default service binder = " + b); 3022 } 3023 IActivityManager am = asInterface(b); 3024 if (false) { 3025 Log.v("ActivityManager", "default service = " + am); 3026 } 3027 return am; 3028 } 3029 }; 3030} 3031 3032class ActivityManagerProxy implements IActivityManager 3033{ 3034 public ActivityManagerProxy(IBinder remote) 3035 { 3036 mRemote = remote; 3037 } 3038 3039 public IBinder asBinder() 3040 { 3041 return mRemote; 3042 } 3043 3044 public int startActivity(IApplicationThread caller, String callingPackage, Intent intent, 3045 String resolvedType, IBinder resultTo, String resultWho, int requestCode, 3046 int startFlags, ProfilerInfo profilerInfo, Bundle options) throws RemoteException { 3047 Parcel data = Parcel.obtain(); 3048 Parcel reply = Parcel.obtain(); 3049 data.writeInterfaceToken(IActivityManager.descriptor); 3050 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3051 data.writeString(callingPackage); 3052 intent.writeToParcel(data, 0); 3053 data.writeString(resolvedType); 3054 data.writeStrongBinder(resultTo); 3055 data.writeString(resultWho); 3056 data.writeInt(requestCode); 3057 data.writeInt(startFlags); 3058 if (profilerInfo != null) { 3059 data.writeInt(1); 3060 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 3061 } else { 3062 data.writeInt(0); 3063 } 3064 if (options != null) { 3065 data.writeInt(1); 3066 options.writeToParcel(data, 0); 3067 } else { 3068 data.writeInt(0); 3069 } 3070 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0); 3071 reply.readException(); 3072 int result = reply.readInt(); 3073 reply.recycle(); 3074 data.recycle(); 3075 return result; 3076 } 3077 3078 public int startActivityAsUser(IApplicationThread caller, String callingPackage, Intent intent, 3079 String resolvedType, IBinder resultTo, String resultWho, int requestCode, 3080 int startFlags, ProfilerInfo profilerInfo, Bundle options, 3081 int userId) throws RemoteException { 3082 Parcel data = Parcel.obtain(); 3083 Parcel reply = Parcel.obtain(); 3084 data.writeInterfaceToken(IActivityManager.descriptor); 3085 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3086 data.writeString(callingPackage); 3087 intent.writeToParcel(data, 0); 3088 data.writeString(resolvedType); 3089 data.writeStrongBinder(resultTo); 3090 data.writeString(resultWho); 3091 data.writeInt(requestCode); 3092 data.writeInt(startFlags); 3093 if (profilerInfo != null) { 3094 data.writeInt(1); 3095 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 3096 } else { 3097 data.writeInt(0); 3098 } 3099 if (options != null) { 3100 data.writeInt(1); 3101 options.writeToParcel(data, 0); 3102 } else { 3103 data.writeInt(0); 3104 } 3105 data.writeInt(userId); 3106 mRemote.transact(START_ACTIVITY_AS_USER_TRANSACTION, data, reply, 0); 3107 reply.readException(); 3108 int result = reply.readInt(); 3109 reply.recycle(); 3110 data.recycle(); 3111 return result; 3112 } 3113 public int startActivityAsCaller(IApplicationThread caller, String callingPackage, 3114 Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode, 3115 int startFlags, ProfilerInfo profilerInfo, Bundle options, boolean ignoreTargetSecurity, 3116 int userId) throws RemoteException { 3117 Parcel data = Parcel.obtain(); 3118 Parcel reply = Parcel.obtain(); 3119 data.writeInterfaceToken(IActivityManager.descriptor); 3120 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3121 data.writeString(callingPackage); 3122 intent.writeToParcel(data, 0); 3123 data.writeString(resolvedType); 3124 data.writeStrongBinder(resultTo); 3125 data.writeString(resultWho); 3126 data.writeInt(requestCode); 3127 data.writeInt(startFlags); 3128 if (profilerInfo != null) { 3129 data.writeInt(1); 3130 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 3131 } else { 3132 data.writeInt(0); 3133 } 3134 if (options != null) { 3135 data.writeInt(1); 3136 options.writeToParcel(data, 0); 3137 } else { 3138 data.writeInt(0); 3139 } 3140 data.writeInt(ignoreTargetSecurity ? 1 : 0); 3141 data.writeInt(userId); 3142 mRemote.transact(START_ACTIVITY_AS_CALLER_TRANSACTION, data, reply, 0); 3143 reply.readException(); 3144 int result = reply.readInt(); 3145 reply.recycle(); 3146 data.recycle(); 3147 return result; 3148 } 3149 public WaitResult startActivityAndWait(IApplicationThread caller, String callingPackage, 3150 Intent intent, String resolvedType, IBinder resultTo, String resultWho, 3151 int requestCode, int startFlags, ProfilerInfo profilerInfo, Bundle options, 3152 int userId) throws RemoteException { 3153 Parcel data = Parcel.obtain(); 3154 Parcel reply = Parcel.obtain(); 3155 data.writeInterfaceToken(IActivityManager.descriptor); 3156 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3157 data.writeString(callingPackage); 3158 intent.writeToParcel(data, 0); 3159 data.writeString(resolvedType); 3160 data.writeStrongBinder(resultTo); 3161 data.writeString(resultWho); 3162 data.writeInt(requestCode); 3163 data.writeInt(startFlags); 3164 if (profilerInfo != null) { 3165 data.writeInt(1); 3166 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 3167 } else { 3168 data.writeInt(0); 3169 } 3170 if (options != null) { 3171 data.writeInt(1); 3172 options.writeToParcel(data, 0); 3173 } else { 3174 data.writeInt(0); 3175 } 3176 data.writeInt(userId); 3177 mRemote.transact(START_ACTIVITY_AND_WAIT_TRANSACTION, data, reply, 0); 3178 reply.readException(); 3179 WaitResult result = WaitResult.CREATOR.createFromParcel(reply); 3180 reply.recycle(); 3181 data.recycle(); 3182 return result; 3183 } 3184 public int startActivityWithConfig(IApplicationThread caller, String callingPackage, 3185 Intent intent, String resolvedType, IBinder resultTo, String resultWho, 3186 int requestCode, int startFlags, Configuration config, 3187 Bundle options, int userId) throws RemoteException { 3188 Parcel data = Parcel.obtain(); 3189 Parcel reply = Parcel.obtain(); 3190 data.writeInterfaceToken(IActivityManager.descriptor); 3191 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3192 data.writeString(callingPackage); 3193 intent.writeToParcel(data, 0); 3194 data.writeString(resolvedType); 3195 data.writeStrongBinder(resultTo); 3196 data.writeString(resultWho); 3197 data.writeInt(requestCode); 3198 data.writeInt(startFlags); 3199 config.writeToParcel(data, 0); 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_TRANSACTION, data, reply, 0); 3208 reply.readException(); 3209 int result = reply.readInt(); 3210 reply.recycle(); 3211 data.recycle(); 3212 return result; 3213 } 3214 public int startActivityIntentSender(IApplicationThread caller, 3215 IntentSender intent, Intent fillInIntent, String resolvedType, 3216 IBinder resultTo, String resultWho, int requestCode, 3217 int flagsMask, int flagsValues, Bundle options) 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 intent.writeToParcel(data, 0); 3223 if (fillInIntent != null) { 3224 data.writeInt(1); 3225 fillInIntent.writeToParcel(data, 0); 3226 } else { 3227 data.writeInt(0); 3228 } 3229 data.writeString(resolvedType); 3230 data.writeStrongBinder(resultTo); 3231 data.writeString(resultWho); 3232 data.writeInt(requestCode); 3233 data.writeInt(flagsMask); 3234 data.writeInt(flagsValues); 3235 if (options != null) { 3236 data.writeInt(1); 3237 options.writeToParcel(data, 0); 3238 } else { 3239 data.writeInt(0); 3240 } 3241 mRemote.transact(START_ACTIVITY_INTENT_SENDER_TRANSACTION, data, reply, 0); 3242 reply.readException(); 3243 int result = reply.readInt(); 3244 reply.recycle(); 3245 data.recycle(); 3246 return result; 3247 } 3248 public int startVoiceActivity(String callingPackage, int callingPid, int callingUid, 3249 Intent intent, String resolvedType, IVoiceInteractionSession session, 3250 IVoiceInteractor interactor, int startFlags, ProfilerInfo profilerInfo, 3251 Bundle options, int userId) throws RemoteException { 3252 Parcel data = Parcel.obtain(); 3253 Parcel reply = Parcel.obtain(); 3254 data.writeInterfaceToken(IActivityManager.descriptor); 3255 data.writeString(callingPackage); 3256 data.writeInt(callingPid); 3257 data.writeInt(callingUid); 3258 intent.writeToParcel(data, 0); 3259 data.writeString(resolvedType); 3260 data.writeStrongBinder(session.asBinder()); 3261 data.writeStrongBinder(interactor.asBinder()); 3262 data.writeInt(startFlags); 3263 if (profilerInfo != null) { 3264 data.writeInt(1); 3265 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 3266 } else { 3267 data.writeInt(0); 3268 } 3269 if (options != null) { 3270 data.writeInt(1); 3271 options.writeToParcel(data, 0); 3272 } else { 3273 data.writeInt(0); 3274 } 3275 data.writeInt(userId); 3276 mRemote.transact(START_VOICE_ACTIVITY_TRANSACTION, data, reply, 0); 3277 reply.readException(); 3278 int result = reply.readInt(); 3279 reply.recycle(); 3280 data.recycle(); 3281 return result; 3282 } 3283 3284 public void startLocalVoiceInteraction(IBinder callingActivity, Bundle options) 3285 throws RemoteException { 3286 Parcel data = Parcel.obtain(); 3287 Parcel reply = Parcel.obtain(); 3288 data.writeInterfaceToken(IActivityManager.descriptor); 3289 data.writeStrongBinder(callingActivity); 3290 data.writeBundle(options); 3291 mRemote.transact(START_LOCAL_VOICE_INTERACTION_TRANSACTION, data, reply, 0); 3292 reply.readException(); 3293 reply.recycle(); 3294 data.recycle(); 3295 } 3296 3297 public void stopLocalVoiceInteraction(IBinder callingActivity) throws RemoteException { 3298 Parcel data = Parcel.obtain(); 3299 Parcel reply = Parcel.obtain(); 3300 data.writeInterfaceToken(IActivityManager.descriptor); 3301 data.writeStrongBinder(callingActivity); 3302 mRemote.transact(STOP_LOCAL_VOICE_INTERACTION_TRANSACTION, data, reply, 0); 3303 reply.readException(); 3304 reply.recycle(); 3305 data.recycle(); 3306 } 3307 3308 public boolean supportsLocalVoiceInteraction() throws RemoteException { 3309 Parcel data = Parcel.obtain(); 3310 Parcel reply = Parcel.obtain(); 3311 data.writeInterfaceToken(IActivityManager.descriptor); 3312 mRemote.transact(SUPPORTS_LOCAL_VOICE_INTERACTION_TRANSACTION, data, reply, 0); 3313 reply.readException(); 3314 int result = reply.readInt(); 3315 reply.recycle(); 3316 data.recycle(); 3317 return result != 0; 3318 } 3319 3320 public boolean startNextMatchingActivity(IBinder callingActivity, 3321 Intent intent, Bundle options) throws RemoteException { 3322 Parcel data = Parcel.obtain(); 3323 Parcel reply = Parcel.obtain(); 3324 data.writeInterfaceToken(IActivityManager.descriptor); 3325 data.writeStrongBinder(callingActivity); 3326 intent.writeToParcel(data, 0); 3327 if (options != null) { 3328 data.writeInt(1); 3329 options.writeToParcel(data, 0); 3330 } else { 3331 data.writeInt(0); 3332 } 3333 mRemote.transact(START_NEXT_MATCHING_ACTIVITY_TRANSACTION, data, reply, 0); 3334 reply.readException(); 3335 int result = reply.readInt(); 3336 reply.recycle(); 3337 data.recycle(); 3338 return result != 0; 3339 } 3340 public int startActivityFromRecents(int taskId, Bundle options) 3341 throws RemoteException { 3342 Parcel data = Parcel.obtain(); 3343 Parcel reply = Parcel.obtain(); 3344 data.writeInterfaceToken(IActivityManager.descriptor); 3345 data.writeInt(taskId); 3346 if (options == null) { 3347 data.writeInt(0); 3348 } else { 3349 data.writeInt(1); 3350 options.writeToParcel(data, 0); 3351 } 3352 mRemote.transact(START_ACTIVITY_FROM_RECENTS_TRANSACTION, data, reply, 0); 3353 reply.readException(); 3354 int result = reply.readInt(); 3355 reply.recycle(); 3356 data.recycle(); 3357 return result; 3358 } 3359 public boolean finishActivity(IBinder token, int resultCode, Intent resultData, int finishTask) 3360 throws RemoteException { 3361 Parcel data = Parcel.obtain(); 3362 Parcel reply = Parcel.obtain(); 3363 data.writeInterfaceToken(IActivityManager.descriptor); 3364 data.writeStrongBinder(token); 3365 data.writeInt(resultCode); 3366 if (resultData != null) { 3367 data.writeInt(1); 3368 resultData.writeToParcel(data, 0); 3369 } else { 3370 data.writeInt(0); 3371 } 3372 data.writeInt(finishTask); 3373 mRemote.transact(FINISH_ACTIVITY_TRANSACTION, data, reply, 0); 3374 reply.readException(); 3375 boolean res = reply.readInt() != 0; 3376 data.recycle(); 3377 reply.recycle(); 3378 return res; 3379 } 3380 public void finishSubActivity(IBinder token, String resultWho, int requestCode) throws RemoteException 3381 { 3382 Parcel data = Parcel.obtain(); 3383 Parcel reply = Parcel.obtain(); 3384 data.writeInterfaceToken(IActivityManager.descriptor); 3385 data.writeStrongBinder(token); 3386 data.writeString(resultWho); 3387 data.writeInt(requestCode); 3388 mRemote.transact(FINISH_SUB_ACTIVITY_TRANSACTION, data, reply, 0); 3389 reply.readException(); 3390 data.recycle(); 3391 reply.recycle(); 3392 } 3393 public boolean finishActivityAffinity(IBinder token) throws RemoteException { 3394 Parcel data = Parcel.obtain(); 3395 Parcel reply = Parcel.obtain(); 3396 data.writeInterfaceToken(IActivityManager.descriptor); 3397 data.writeStrongBinder(token); 3398 mRemote.transact(FINISH_ACTIVITY_AFFINITY_TRANSACTION, data, reply, 0); 3399 reply.readException(); 3400 boolean res = reply.readInt() != 0; 3401 data.recycle(); 3402 reply.recycle(); 3403 return res; 3404 } 3405 public void finishVoiceTask(IVoiceInteractionSession session) throws RemoteException { 3406 Parcel data = Parcel.obtain(); 3407 Parcel reply = Parcel.obtain(); 3408 data.writeInterfaceToken(IActivityManager.descriptor); 3409 data.writeStrongBinder(session.asBinder()); 3410 mRemote.transact(FINISH_VOICE_TASK_TRANSACTION, data, reply, 0); 3411 reply.readException(); 3412 data.recycle(); 3413 reply.recycle(); 3414 } 3415 public boolean releaseActivityInstance(IBinder token) throws RemoteException { 3416 Parcel data = Parcel.obtain(); 3417 Parcel reply = Parcel.obtain(); 3418 data.writeInterfaceToken(IActivityManager.descriptor); 3419 data.writeStrongBinder(token); 3420 mRemote.transact(RELEASE_ACTIVITY_INSTANCE_TRANSACTION, data, reply, 0); 3421 reply.readException(); 3422 boolean res = reply.readInt() != 0; 3423 data.recycle(); 3424 reply.recycle(); 3425 return res; 3426 } 3427 public void releaseSomeActivities(IApplicationThread app) throws RemoteException { 3428 Parcel data = Parcel.obtain(); 3429 Parcel reply = Parcel.obtain(); 3430 data.writeInterfaceToken(IActivityManager.descriptor); 3431 data.writeStrongBinder(app.asBinder()); 3432 mRemote.transact(RELEASE_SOME_ACTIVITIES_TRANSACTION, data, reply, 0); 3433 reply.readException(); 3434 data.recycle(); 3435 reply.recycle(); 3436 } 3437 public boolean willActivityBeVisible(IBinder token) throws RemoteException { 3438 Parcel data = Parcel.obtain(); 3439 Parcel reply = Parcel.obtain(); 3440 data.writeInterfaceToken(IActivityManager.descriptor); 3441 data.writeStrongBinder(token); 3442 mRemote.transact(WILL_ACTIVITY_BE_VISIBLE_TRANSACTION, data, reply, 0); 3443 reply.readException(); 3444 boolean res = reply.readInt() != 0; 3445 data.recycle(); 3446 reply.recycle(); 3447 return res; 3448 } 3449 public Intent registerReceiver(IApplicationThread caller, String packageName, 3450 IIntentReceiver receiver, 3451 IntentFilter filter, String perm, int userId) throws RemoteException 3452 { 3453 Parcel data = Parcel.obtain(); 3454 Parcel reply = Parcel.obtain(); 3455 data.writeInterfaceToken(IActivityManager.descriptor); 3456 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3457 data.writeString(packageName); 3458 data.writeStrongBinder(receiver != null ? receiver.asBinder() : null); 3459 filter.writeToParcel(data, 0); 3460 data.writeString(perm); 3461 data.writeInt(userId); 3462 mRemote.transact(REGISTER_RECEIVER_TRANSACTION, data, reply, 0); 3463 reply.readException(); 3464 Intent intent = null; 3465 int haveIntent = reply.readInt(); 3466 if (haveIntent != 0) { 3467 intent = Intent.CREATOR.createFromParcel(reply); 3468 } 3469 reply.recycle(); 3470 data.recycle(); 3471 return intent; 3472 } 3473 public void unregisterReceiver(IIntentReceiver receiver) throws RemoteException 3474 { 3475 Parcel data = Parcel.obtain(); 3476 Parcel reply = Parcel.obtain(); 3477 data.writeInterfaceToken(IActivityManager.descriptor); 3478 data.writeStrongBinder(receiver.asBinder()); 3479 mRemote.transact(UNREGISTER_RECEIVER_TRANSACTION, data, reply, 0); 3480 reply.readException(); 3481 data.recycle(); 3482 reply.recycle(); 3483 } 3484 public int broadcastIntent(IApplicationThread caller, 3485 Intent intent, String resolvedType, IIntentReceiver resultTo, 3486 int resultCode, String resultData, Bundle map, 3487 String[] requiredPermissions, int appOp, Bundle options, boolean serialized, 3488 boolean sticky, int userId) throws RemoteException 3489 { 3490 Parcel data = Parcel.obtain(); 3491 Parcel reply = Parcel.obtain(); 3492 data.writeInterfaceToken(IActivityManager.descriptor); 3493 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3494 intent.writeToParcel(data, 0); 3495 data.writeString(resolvedType); 3496 data.writeStrongBinder(resultTo != null ? resultTo.asBinder() : null); 3497 data.writeInt(resultCode); 3498 data.writeString(resultData); 3499 data.writeBundle(map); 3500 data.writeStringArray(requiredPermissions); 3501 data.writeInt(appOp); 3502 data.writeBundle(options); 3503 data.writeInt(serialized ? 1 : 0); 3504 data.writeInt(sticky ? 1 : 0); 3505 data.writeInt(userId); 3506 mRemote.transact(BROADCAST_INTENT_TRANSACTION, data, reply, 0); 3507 reply.readException(); 3508 int res = reply.readInt(); 3509 reply.recycle(); 3510 data.recycle(); 3511 return res; 3512 } 3513 public void unbroadcastIntent(IApplicationThread caller, Intent intent, int userId) 3514 throws RemoteException 3515 { 3516 Parcel data = Parcel.obtain(); 3517 Parcel reply = Parcel.obtain(); 3518 data.writeInterfaceToken(IActivityManager.descriptor); 3519 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3520 intent.writeToParcel(data, 0); 3521 data.writeInt(userId); 3522 mRemote.transact(UNBROADCAST_INTENT_TRANSACTION, data, reply, 0); 3523 reply.readException(); 3524 data.recycle(); 3525 reply.recycle(); 3526 } 3527 public void finishReceiver(IBinder who, int resultCode, String resultData, Bundle map, 3528 boolean abortBroadcast, int flags) throws RemoteException 3529 { 3530 Parcel data = Parcel.obtain(); 3531 Parcel reply = Parcel.obtain(); 3532 data.writeInterfaceToken(IActivityManager.descriptor); 3533 data.writeStrongBinder(who); 3534 data.writeInt(resultCode); 3535 data.writeString(resultData); 3536 data.writeBundle(map); 3537 data.writeInt(abortBroadcast ? 1 : 0); 3538 data.writeInt(flags); 3539 mRemote.transact(FINISH_RECEIVER_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3540 reply.readException(); 3541 data.recycle(); 3542 reply.recycle(); 3543 } 3544 public void attachApplication(IApplicationThread app) throws RemoteException 3545 { 3546 Parcel data = Parcel.obtain(); 3547 Parcel reply = Parcel.obtain(); 3548 data.writeInterfaceToken(IActivityManager.descriptor); 3549 data.writeStrongBinder(app.asBinder()); 3550 mRemote.transact(ATTACH_APPLICATION_TRANSACTION, data, reply, 0); 3551 reply.readException(); 3552 data.recycle(); 3553 reply.recycle(); 3554 } 3555 public void activityIdle(IBinder token, Configuration config, boolean stopProfiling) 3556 throws RemoteException 3557 { 3558 Parcel data = Parcel.obtain(); 3559 Parcel reply = Parcel.obtain(); 3560 data.writeInterfaceToken(IActivityManager.descriptor); 3561 data.writeStrongBinder(token); 3562 if (config != null) { 3563 data.writeInt(1); 3564 config.writeToParcel(data, 0); 3565 } else { 3566 data.writeInt(0); 3567 } 3568 data.writeInt(stopProfiling ? 1 : 0); 3569 mRemote.transact(ACTIVITY_IDLE_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3570 reply.readException(); 3571 data.recycle(); 3572 reply.recycle(); 3573 } 3574 public void activityResumed(IBinder token) throws RemoteException 3575 { 3576 Parcel data = Parcel.obtain(); 3577 Parcel reply = Parcel.obtain(); 3578 data.writeInterfaceToken(IActivityManager.descriptor); 3579 data.writeStrongBinder(token); 3580 mRemote.transact(ACTIVITY_RESUMED_TRANSACTION, data, reply, 0); 3581 reply.readException(); 3582 data.recycle(); 3583 reply.recycle(); 3584 } 3585 public void activityPaused(IBinder token) throws RemoteException 3586 { 3587 Parcel data = Parcel.obtain(); 3588 Parcel reply = Parcel.obtain(); 3589 data.writeInterfaceToken(IActivityManager.descriptor); 3590 data.writeStrongBinder(token); 3591 mRemote.transact(ACTIVITY_PAUSED_TRANSACTION, data, reply, 0); 3592 reply.readException(); 3593 data.recycle(); 3594 reply.recycle(); 3595 } 3596 public void activityStopped(IBinder token, Bundle state, 3597 PersistableBundle persistentState, CharSequence description) throws RemoteException 3598 { 3599 Parcel data = Parcel.obtain(); 3600 Parcel reply = Parcel.obtain(); 3601 data.writeInterfaceToken(IActivityManager.descriptor); 3602 data.writeStrongBinder(token); 3603 data.writeBundle(state); 3604 data.writePersistableBundle(persistentState); 3605 TextUtils.writeToParcel(description, data, 0); 3606 mRemote.transact(ACTIVITY_STOPPED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3607 reply.readException(); 3608 data.recycle(); 3609 reply.recycle(); 3610 } 3611 public void activitySlept(IBinder token) throws RemoteException 3612 { 3613 Parcel data = Parcel.obtain(); 3614 Parcel reply = Parcel.obtain(); 3615 data.writeInterfaceToken(IActivityManager.descriptor); 3616 data.writeStrongBinder(token); 3617 mRemote.transact(ACTIVITY_SLEPT_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3618 reply.readException(); 3619 data.recycle(); 3620 reply.recycle(); 3621 } 3622 public void activityDestroyed(IBinder token) throws RemoteException 3623 { 3624 Parcel data = Parcel.obtain(); 3625 Parcel reply = Parcel.obtain(); 3626 data.writeInterfaceToken(IActivityManager.descriptor); 3627 data.writeStrongBinder(token); 3628 mRemote.transact(ACTIVITY_DESTROYED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3629 reply.readException(); 3630 data.recycle(); 3631 reply.recycle(); 3632 } 3633 public void activityRelaunched(IBinder token) throws RemoteException 3634 { 3635 Parcel data = Parcel.obtain(); 3636 Parcel reply = Parcel.obtain(); 3637 data.writeInterfaceToken(IActivityManager.descriptor); 3638 data.writeStrongBinder(token); 3639 mRemote.transact(ACTIVITY_RELAUNCHED_TRANSACTION, data, reply, 0); 3640 reply.readException(); 3641 data.recycle(); 3642 reply.recycle(); 3643 } 3644 public String getCallingPackage(IBinder token) throws RemoteException 3645 { 3646 Parcel data = Parcel.obtain(); 3647 Parcel reply = Parcel.obtain(); 3648 data.writeInterfaceToken(IActivityManager.descriptor); 3649 data.writeStrongBinder(token); 3650 mRemote.transact(GET_CALLING_PACKAGE_TRANSACTION, data, reply, 0); 3651 reply.readException(); 3652 String res = reply.readString(); 3653 data.recycle(); 3654 reply.recycle(); 3655 return res; 3656 } 3657 public ComponentName getCallingActivity(IBinder token) 3658 throws RemoteException { 3659 Parcel data = Parcel.obtain(); 3660 Parcel reply = Parcel.obtain(); 3661 data.writeInterfaceToken(IActivityManager.descriptor); 3662 data.writeStrongBinder(token); 3663 mRemote.transact(GET_CALLING_ACTIVITY_TRANSACTION, data, reply, 0); 3664 reply.readException(); 3665 ComponentName res = ComponentName.readFromParcel(reply); 3666 data.recycle(); 3667 reply.recycle(); 3668 return res; 3669 } 3670 public List<IAppTask> getAppTasks(String callingPackage) throws RemoteException { 3671 Parcel data = Parcel.obtain(); 3672 Parcel reply = Parcel.obtain(); 3673 data.writeInterfaceToken(IActivityManager.descriptor); 3674 data.writeString(callingPackage); 3675 mRemote.transact(GET_APP_TASKS_TRANSACTION, data, reply, 0); 3676 reply.readException(); 3677 ArrayList<IAppTask> list = null; 3678 int N = reply.readInt(); 3679 if (N >= 0) { 3680 list = new ArrayList<>(); 3681 while (N > 0) { 3682 IAppTask task = IAppTask.Stub.asInterface(reply.readStrongBinder()); 3683 list.add(task); 3684 N--; 3685 } 3686 } 3687 data.recycle(); 3688 reply.recycle(); 3689 return list; 3690 } 3691 public int addAppTask(IBinder activityToken, Intent intent, 3692 ActivityManager.TaskDescription description, Bitmap thumbnail) throws RemoteException { 3693 Parcel data = Parcel.obtain(); 3694 Parcel reply = Parcel.obtain(); 3695 data.writeInterfaceToken(IActivityManager.descriptor); 3696 data.writeStrongBinder(activityToken); 3697 intent.writeToParcel(data, 0); 3698 description.writeToParcel(data, 0); 3699 thumbnail.writeToParcel(data, 0); 3700 mRemote.transact(ADD_APP_TASK_TRANSACTION, data, reply, 0); 3701 reply.readException(); 3702 int res = reply.readInt(); 3703 data.recycle(); 3704 reply.recycle(); 3705 return res; 3706 } 3707 public Point getAppTaskThumbnailSize() throws RemoteException { 3708 Parcel data = Parcel.obtain(); 3709 Parcel reply = Parcel.obtain(); 3710 data.writeInterfaceToken(IActivityManager.descriptor); 3711 mRemote.transact(GET_APP_TASK_THUMBNAIL_SIZE_TRANSACTION, data, reply, 0); 3712 reply.readException(); 3713 Point size = Point.CREATOR.createFromParcel(reply); 3714 data.recycle(); 3715 reply.recycle(); 3716 return size; 3717 } 3718 public List<ActivityManager.RunningTaskInfo> getTasks(int maxNum, int flags) 3719 throws RemoteException { 3720 Parcel data = Parcel.obtain(); 3721 Parcel reply = Parcel.obtain(); 3722 data.writeInterfaceToken(IActivityManager.descriptor); 3723 data.writeInt(maxNum); 3724 data.writeInt(flags); 3725 mRemote.transact(GET_TASKS_TRANSACTION, data, reply, 0); 3726 reply.readException(); 3727 ArrayList<ActivityManager.RunningTaskInfo> list = null; 3728 int N = reply.readInt(); 3729 if (N >= 0) { 3730 list = new ArrayList<>(); 3731 while (N > 0) { 3732 ActivityManager.RunningTaskInfo info = 3733 ActivityManager.RunningTaskInfo.CREATOR 3734 .createFromParcel(reply); 3735 list.add(info); 3736 N--; 3737 } 3738 } 3739 data.recycle(); 3740 reply.recycle(); 3741 return list; 3742 } 3743 public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, 3744 int flags, int userId) throws RemoteException { 3745 Parcel data = Parcel.obtain(); 3746 Parcel reply = Parcel.obtain(); 3747 data.writeInterfaceToken(IActivityManager.descriptor); 3748 data.writeInt(maxNum); 3749 data.writeInt(flags); 3750 data.writeInt(userId); 3751 mRemote.transact(GET_RECENT_TASKS_TRANSACTION, data, reply, 0); 3752 reply.readException(); 3753 ArrayList<ActivityManager.RecentTaskInfo> list 3754 = reply.createTypedArrayList(ActivityManager.RecentTaskInfo.CREATOR); 3755 data.recycle(); 3756 reply.recycle(); 3757 return list; 3758 } 3759 public ActivityManager.TaskThumbnail getTaskThumbnail(int id) throws RemoteException { 3760 Parcel data = Parcel.obtain(); 3761 Parcel reply = Parcel.obtain(); 3762 data.writeInterfaceToken(IActivityManager.descriptor); 3763 data.writeInt(id); 3764 mRemote.transact(GET_TASK_THUMBNAIL_TRANSACTION, data, reply, 0); 3765 reply.readException(); 3766 ActivityManager.TaskThumbnail taskThumbnail = null; 3767 if (reply.readInt() != 0) { 3768 taskThumbnail = ActivityManager.TaskThumbnail.CREATOR.createFromParcel(reply); 3769 } 3770 data.recycle(); 3771 reply.recycle(); 3772 return taskThumbnail; 3773 } 3774 public List<ActivityManager.RunningServiceInfo> getServices(int maxNum, int flags) 3775 throws RemoteException { 3776 Parcel data = Parcel.obtain(); 3777 Parcel reply = Parcel.obtain(); 3778 data.writeInterfaceToken(IActivityManager.descriptor); 3779 data.writeInt(maxNum); 3780 data.writeInt(flags); 3781 mRemote.transact(GET_SERVICES_TRANSACTION, data, reply, 0); 3782 reply.readException(); 3783 ArrayList<ActivityManager.RunningServiceInfo> list = null; 3784 int N = reply.readInt(); 3785 if (N >= 0) { 3786 list = new ArrayList<>(); 3787 while (N > 0) { 3788 ActivityManager.RunningServiceInfo info = 3789 ActivityManager.RunningServiceInfo.CREATOR 3790 .createFromParcel(reply); 3791 list.add(info); 3792 N--; 3793 } 3794 } 3795 data.recycle(); 3796 reply.recycle(); 3797 return list; 3798 } 3799 public List<ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState() 3800 throws RemoteException { 3801 Parcel data = Parcel.obtain(); 3802 Parcel reply = Parcel.obtain(); 3803 data.writeInterfaceToken(IActivityManager.descriptor); 3804 mRemote.transact(GET_PROCESSES_IN_ERROR_STATE_TRANSACTION, data, reply, 0); 3805 reply.readException(); 3806 ArrayList<ActivityManager.ProcessErrorStateInfo> list 3807 = reply.createTypedArrayList(ActivityManager.ProcessErrorStateInfo.CREATOR); 3808 data.recycle(); 3809 reply.recycle(); 3810 return list; 3811 } 3812 public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses() 3813 throws RemoteException { 3814 Parcel data = Parcel.obtain(); 3815 Parcel reply = Parcel.obtain(); 3816 data.writeInterfaceToken(IActivityManager.descriptor); 3817 mRemote.transact(GET_RUNNING_APP_PROCESSES_TRANSACTION, data, reply, 0); 3818 reply.readException(); 3819 ArrayList<ActivityManager.RunningAppProcessInfo> list 3820 = reply.createTypedArrayList(ActivityManager.RunningAppProcessInfo.CREATOR); 3821 data.recycle(); 3822 reply.recycle(); 3823 return list; 3824 } 3825 public List<ApplicationInfo> getRunningExternalApplications() 3826 throws RemoteException { 3827 Parcel data = Parcel.obtain(); 3828 Parcel reply = Parcel.obtain(); 3829 data.writeInterfaceToken(IActivityManager.descriptor); 3830 mRemote.transact(GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION, data, reply, 0); 3831 reply.readException(); 3832 ArrayList<ApplicationInfo> list 3833 = reply.createTypedArrayList(ApplicationInfo.CREATOR); 3834 data.recycle(); 3835 reply.recycle(); 3836 return list; 3837 } 3838 public void moveTaskToFront(int task, int flags, Bundle options) throws RemoteException 3839 { 3840 Parcel data = Parcel.obtain(); 3841 Parcel reply = Parcel.obtain(); 3842 data.writeInterfaceToken(IActivityManager.descriptor); 3843 data.writeInt(task); 3844 data.writeInt(flags); 3845 if (options != null) { 3846 data.writeInt(1); 3847 options.writeToParcel(data, 0); 3848 } else { 3849 data.writeInt(0); 3850 } 3851 mRemote.transact(MOVE_TASK_TO_FRONT_TRANSACTION, data, reply, 0); 3852 reply.readException(); 3853 data.recycle(); 3854 reply.recycle(); 3855 } 3856 public boolean moveActivityTaskToBack(IBinder token, boolean nonRoot) 3857 throws RemoteException { 3858 Parcel data = Parcel.obtain(); 3859 Parcel reply = Parcel.obtain(); 3860 data.writeInterfaceToken(IActivityManager.descriptor); 3861 data.writeStrongBinder(token); 3862 data.writeInt(nonRoot ? 1 : 0); 3863 mRemote.transact(MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION, data, reply, 0); 3864 reply.readException(); 3865 boolean res = reply.readInt() != 0; 3866 data.recycle(); 3867 reply.recycle(); 3868 return res; 3869 } 3870 public void moveTaskBackwards(int task) throws RemoteException 3871 { 3872 Parcel data = Parcel.obtain(); 3873 Parcel reply = Parcel.obtain(); 3874 data.writeInterfaceToken(IActivityManager.descriptor); 3875 data.writeInt(task); 3876 mRemote.transact(MOVE_TASK_BACKWARDS_TRANSACTION, data, reply, 0); 3877 reply.readException(); 3878 data.recycle(); 3879 reply.recycle(); 3880 } 3881 @Override 3882 public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException 3883 { 3884 Parcel data = Parcel.obtain(); 3885 Parcel reply = Parcel.obtain(); 3886 data.writeInterfaceToken(IActivityManager.descriptor); 3887 data.writeInt(taskId); 3888 data.writeInt(stackId); 3889 data.writeInt(toTop ? 1 : 0); 3890 mRemote.transact(MOVE_TASK_TO_STACK_TRANSACTION, data, reply, 0); 3891 reply.readException(); 3892 data.recycle(); 3893 reply.recycle(); 3894 } 3895 @Override 3896 public boolean moveTaskToDockedStack(int taskId, int createMode, boolean toTop, boolean animate, 3897 Rect initialBounds, boolean moveHomeStackFront) throws RemoteException 3898 { 3899 Parcel data = Parcel.obtain(); 3900 Parcel reply = Parcel.obtain(); 3901 data.writeInterfaceToken(IActivityManager.descriptor); 3902 data.writeInt(taskId); 3903 data.writeInt(createMode); 3904 data.writeInt(toTop ? 1 : 0); 3905 data.writeInt(animate ? 1 : 0); 3906 if (initialBounds != null) { 3907 data.writeInt(1); 3908 initialBounds.writeToParcel(data, 0); 3909 } else { 3910 data.writeInt(0); 3911 } 3912 data.writeInt(moveHomeStackFront ? 1 : 0); 3913 mRemote.transact(MOVE_TASK_TO_DOCKED_STACK_TRANSACTION, data, reply, 0); 3914 reply.readException(); 3915 boolean res = reply.readInt() > 0; 3916 data.recycle(); 3917 reply.recycle(); 3918 return res; 3919 } 3920 @Override 3921 public boolean moveTopActivityToPinnedStack(int stackId, Rect r) 3922 throws RemoteException 3923 { 3924 Parcel data = Parcel.obtain(); 3925 Parcel reply = Parcel.obtain(); 3926 data.writeInterfaceToken(IActivityManager.descriptor); 3927 data.writeInt(stackId); 3928 r.writeToParcel(data, 0); 3929 mRemote.transact(MOVE_TOP_ACTIVITY_TO_PINNED_STACK_TRANSACTION, data, reply, 0); 3930 reply.readException(); 3931 final boolean res = reply.readInt() != 0; 3932 data.recycle(); 3933 reply.recycle(); 3934 return res; 3935 } 3936 @Override 3937 public void resizeStack(int stackId, Rect r, boolean allowResizeInDockedMode, 3938 boolean preserveWindows, boolean animate, int animationDuration) 3939 throws RemoteException { 3940 Parcel data = Parcel.obtain(); 3941 Parcel reply = Parcel.obtain(); 3942 data.writeInterfaceToken(IActivityManager.descriptor); 3943 data.writeInt(stackId); 3944 if (r != null) { 3945 data.writeInt(1); 3946 r.writeToParcel(data, 0); 3947 } else { 3948 data.writeInt(0); 3949 } 3950 data.writeInt(allowResizeInDockedMode ? 1 : 0); 3951 data.writeInt(preserveWindows ? 1 : 0); 3952 data.writeInt(animate ? 1 : 0); 3953 data.writeInt(animationDuration); 3954 mRemote.transact(RESIZE_STACK_TRANSACTION, data, reply, 0); 3955 reply.readException(); 3956 data.recycle(); 3957 reply.recycle(); 3958 } 3959 @Override 3960 public void swapDockedAndFullscreenStack() throws RemoteException 3961 { 3962 Parcel data = Parcel.obtain(); 3963 Parcel reply = Parcel.obtain(); 3964 data.writeInterfaceToken(IActivityManager.descriptor); 3965 mRemote.transact(SWAP_DOCKED_AND_FULLSCREEN_STACK, data, reply, 0); 3966 reply.readException(); 3967 data.recycle(); 3968 reply.recycle(); 3969 } 3970 @Override 3971 public void resizeDockedStack(Rect dockedBounds, Rect tempDockedTaskBounds, 3972 Rect tempDockedTaskInsetBounds, 3973 Rect tempOtherTaskBounds, Rect tempOtherTaskInsetBounds) 3974 throws RemoteException 3975 { 3976 Parcel data = Parcel.obtain(); 3977 Parcel reply = Parcel.obtain(); 3978 data.writeInterfaceToken(IActivityManager.descriptor); 3979 if (dockedBounds != null) { 3980 data.writeInt(1); 3981 dockedBounds.writeToParcel(data, 0); 3982 } else { 3983 data.writeInt(0); 3984 } 3985 if (tempDockedTaskBounds != null) { 3986 data.writeInt(1); 3987 tempDockedTaskBounds.writeToParcel(data, 0); 3988 } else { 3989 data.writeInt(0); 3990 } 3991 if (tempDockedTaskInsetBounds != null) { 3992 data.writeInt(1); 3993 tempDockedTaskInsetBounds.writeToParcel(data, 0); 3994 } else { 3995 data.writeInt(0); 3996 } 3997 if (tempOtherTaskBounds != null) { 3998 data.writeInt(1); 3999 tempOtherTaskBounds.writeToParcel(data, 0); 4000 } else { 4001 data.writeInt(0); 4002 } 4003 if (tempOtherTaskInsetBounds != null) { 4004 data.writeInt(1); 4005 tempOtherTaskInsetBounds.writeToParcel(data, 0); 4006 } else { 4007 data.writeInt(0); 4008 } 4009 mRemote.transact(RESIZE_DOCKED_STACK_TRANSACTION, data, reply, 0); 4010 reply.readException(); 4011 data.recycle(); 4012 reply.recycle(); 4013 } 4014 4015 @Override 4016 public void resizePinnedStack(Rect pinnedBounds, Rect tempPinnedTaskBounds) throws RemoteException 4017 { 4018 Parcel data = Parcel.obtain(); 4019 Parcel reply = Parcel.obtain(); 4020 data.writeInterfaceToken(IActivityManager.descriptor); 4021 if (pinnedBounds != null) { 4022 data.writeInt(1); 4023 pinnedBounds.writeToParcel(data, 0); 4024 } else { 4025 data.writeInt(0); 4026 } 4027 if (tempPinnedTaskBounds != null) { 4028 data.writeInt(1); 4029 tempPinnedTaskBounds.writeToParcel(data, 0); 4030 } else { 4031 data.writeInt(0); 4032 } 4033 mRemote.transact(RESIZE_PINNED_STACK_TRANSACTION, data, reply, 0); 4034 reply.readException(); 4035 data.recycle(); 4036 reply.recycle(); 4037 } 4038 4039 @Override 4040 public void positionTaskInStack(int taskId, int stackId, int position) throws RemoteException 4041 { 4042 Parcel data = Parcel.obtain(); 4043 Parcel reply = Parcel.obtain(); 4044 data.writeInterfaceToken(IActivityManager.descriptor); 4045 data.writeInt(taskId); 4046 data.writeInt(stackId); 4047 data.writeInt(position); 4048 mRemote.transact(POSITION_TASK_IN_STACK_TRANSACTION, data, reply, 0); 4049 reply.readException(); 4050 data.recycle(); 4051 reply.recycle(); 4052 } 4053 @Override 4054 public List<StackInfo> getAllStackInfos() throws RemoteException 4055 { 4056 Parcel data = Parcel.obtain(); 4057 Parcel reply = Parcel.obtain(); 4058 data.writeInterfaceToken(IActivityManager.descriptor); 4059 mRemote.transact(GET_ALL_STACK_INFOS_TRANSACTION, data, reply, 0); 4060 reply.readException(); 4061 ArrayList<StackInfo> list = reply.createTypedArrayList(StackInfo.CREATOR); 4062 data.recycle(); 4063 reply.recycle(); 4064 return list; 4065 } 4066 @Override 4067 public StackInfo getStackInfo(int stackId) throws RemoteException 4068 { 4069 Parcel data = Parcel.obtain(); 4070 Parcel reply = Parcel.obtain(); 4071 data.writeInterfaceToken(IActivityManager.descriptor); 4072 data.writeInt(stackId); 4073 mRemote.transact(GET_STACK_INFO_TRANSACTION, data, reply, 0); 4074 reply.readException(); 4075 int res = reply.readInt(); 4076 StackInfo info = null; 4077 if (res != 0) { 4078 info = StackInfo.CREATOR.createFromParcel(reply); 4079 } 4080 data.recycle(); 4081 reply.recycle(); 4082 return info; 4083 } 4084 @Override 4085 public boolean isInHomeStack(int taskId) throws RemoteException { 4086 Parcel data = Parcel.obtain(); 4087 Parcel reply = Parcel.obtain(); 4088 data.writeInterfaceToken(IActivityManager.descriptor); 4089 data.writeInt(taskId); 4090 mRemote.transact(IS_IN_HOME_STACK_TRANSACTION, data, reply, 0); 4091 reply.readException(); 4092 boolean isInHomeStack = reply.readInt() > 0; 4093 data.recycle(); 4094 reply.recycle(); 4095 return isInHomeStack; 4096 } 4097 @Override 4098 public void setFocusedStack(int stackId) throws RemoteException 4099 { 4100 Parcel data = Parcel.obtain(); 4101 Parcel reply = Parcel.obtain(); 4102 data.writeInterfaceToken(IActivityManager.descriptor); 4103 data.writeInt(stackId); 4104 mRemote.transact(SET_FOCUSED_STACK_TRANSACTION, data, reply, 0); 4105 reply.readException(); 4106 data.recycle(); 4107 reply.recycle(); 4108 } 4109 @Override 4110 public int getFocusedStackId() throws RemoteException { 4111 Parcel data = Parcel.obtain(); 4112 Parcel reply = Parcel.obtain(); 4113 data.writeInterfaceToken(IActivityManager.descriptor); 4114 mRemote.transact(GET_FOCUSED_STACK_ID_TRANSACTION, data, reply, 0); 4115 reply.readException(); 4116 int focusedStackId = reply.readInt(); 4117 data.recycle(); 4118 reply.recycle(); 4119 return focusedStackId; 4120 } 4121 @Override 4122 public void setFocusedTask(int taskId) throws RemoteException 4123 { 4124 Parcel data = Parcel.obtain(); 4125 Parcel reply = Parcel.obtain(); 4126 data.writeInterfaceToken(IActivityManager.descriptor); 4127 data.writeInt(taskId); 4128 mRemote.transact(SET_FOCUSED_TASK_TRANSACTION, data, reply, 0); 4129 reply.readException(); 4130 data.recycle(); 4131 reply.recycle(); 4132 } 4133 @Override 4134 public void registerTaskStackListener(ITaskStackListener listener) throws RemoteException 4135 { 4136 Parcel data = Parcel.obtain(); 4137 Parcel reply = Parcel.obtain(); 4138 data.writeInterfaceToken(IActivityManager.descriptor); 4139 data.writeStrongBinder(listener.asBinder()); 4140 mRemote.transact(REGISTER_TASK_STACK_LISTENER_TRANSACTION, data, reply, 0); 4141 reply.readException(); 4142 data.recycle(); 4143 reply.recycle(); 4144 } 4145 public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException 4146 { 4147 Parcel data = Parcel.obtain(); 4148 Parcel reply = Parcel.obtain(); 4149 data.writeInterfaceToken(IActivityManager.descriptor); 4150 data.writeStrongBinder(token); 4151 data.writeInt(onlyRoot ? 1 : 0); 4152 mRemote.transact(GET_TASK_FOR_ACTIVITY_TRANSACTION, data, reply, 0); 4153 reply.readException(); 4154 int res = reply.readInt(); 4155 data.recycle(); 4156 reply.recycle(); 4157 return res; 4158 } 4159 public ContentProviderHolder getContentProvider(IApplicationThread caller, 4160 String name, int userId, boolean stable) throws RemoteException { 4161 Parcel data = Parcel.obtain(); 4162 Parcel reply = Parcel.obtain(); 4163 data.writeInterfaceToken(IActivityManager.descriptor); 4164 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 4165 data.writeString(name); 4166 data.writeInt(userId); 4167 data.writeInt(stable ? 1 : 0); 4168 mRemote.transact(GET_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 4169 reply.readException(); 4170 int res = reply.readInt(); 4171 ContentProviderHolder cph = null; 4172 if (res != 0) { 4173 cph = ContentProviderHolder.CREATOR.createFromParcel(reply); 4174 } 4175 data.recycle(); 4176 reply.recycle(); 4177 return cph; 4178 } 4179 public ContentProviderHolder getContentProviderExternal(String name, int userId, IBinder token) 4180 throws RemoteException { 4181 Parcel data = Parcel.obtain(); 4182 Parcel reply = Parcel.obtain(); 4183 data.writeInterfaceToken(IActivityManager.descriptor); 4184 data.writeString(name); 4185 data.writeInt(userId); 4186 data.writeStrongBinder(token); 4187 mRemote.transact(GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0); 4188 reply.readException(); 4189 int res = reply.readInt(); 4190 ContentProviderHolder cph = null; 4191 if (res != 0) { 4192 cph = ContentProviderHolder.CREATOR.createFromParcel(reply); 4193 } 4194 data.recycle(); 4195 reply.recycle(); 4196 return cph; 4197 } 4198 public void publishContentProviders(IApplicationThread caller, 4199 List<ContentProviderHolder> providers) throws RemoteException 4200 { 4201 Parcel data = Parcel.obtain(); 4202 Parcel reply = Parcel.obtain(); 4203 data.writeInterfaceToken(IActivityManager.descriptor); 4204 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 4205 data.writeTypedList(providers); 4206 mRemote.transact(PUBLISH_CONTENT_PROVIDERS_TRANSACTION, data, reply, 0); 4207 reply.readException(); 4208 data.recycle(); 4209 reply.recycle(); 4210 } 4211 public boolean refContentProvider(IBinder connection, int stable, int unstable) 4212 throws RemoteException { 4213 Parcel data = Parcel.obtain(); 4214 Parcel reply = Parcel.obtain(); 4215 data.writeInterfaceToken(IActivityManager.descriptor); 4216 data.writeStrongBinder(connection); 4217 data.writeInt(stable); 4218 data.writeInt(unstable); 4219 mRemote.transact(REF_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 4220 reply.readException(); 4221 boolean res = reply.readInt() != 0; 4222 data.recycle(); 4223 reply.recycle(); 4224 return res; 4225 } 4226 4227 public void unstableProviderDied(IBinder connection) throws RemoteException { 4228 Parcel data = Parcel.obtain(); 4229 Parcel reply = Parcel.obtain(); 4230 data.writeInterfaceToken(IActivityManager.descriptor); 4231 data.writeStrongBinder(connection); 4232 mRemote.transact(UNSTABLE_PROVIDER_DIED_TRANSACTION, data, reply, 0); 4233 reply.readException(); 4234 data.recycle(); 4235 reply.recycle(); 4236 } 4237 4238 @Override 4239 public void appNotRespondingViaProvider(IBinder connection) throws RemoteException { 4240 Parcel data = Parcel.obtain(); 4241 Parcel reply = Parcel.obtain(); 4242 data.writeInterfaceToken(IActivityManager.descriptor); 4243 data.writeStrongBinder(connection); 4244 mRemote.transact(APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION, data, reply, 0); 4245 reply.readException(); 4246 data.recycle(); 4247 reply.recycle(); 4248 } 4249 4250 public void removeContentProvider(IBinder connection, boolean stable) throws RemoteException { 4251 Parcel data = Parcel.obtain(); 4252 Parcel reply = Parcel.obtain(); 4253 data.writeInterfaceToken(IActivityManager.descriptor); 4254 data.writeStrongBinder(connection); 4255 data.writeInt(stable ? 1 : 0); 4256 mRemote.transact(REMOVE_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 4257 reply.readException(); 4258 data.recycle(); 4259 reply.recycle(); 4260 } 4261 4262 public void removeContentProviderExternal(String name, IBinder token) throws RemoteException { 4263 Parcel data = Parcel.obtain(); 4264 Parcel reply = Parcel.obtain(); 4265 data.writeInterfaceToken(IActivityManager.descriptor); 4266 data.writeString(name); 4267 data.writeStrongBinder(token); 4268 mRemote.transact(REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0); 4269 reply.readException(); 4270 data.recycle(); 4271 reply.recycle(); 4272 } 4273 4274 public PendingIntent getRunningServiceControlPanel(ComponentName service) 4275 throws RemoteException 4276 { 4277 Parcel data = Parcel.obtain(); 4278 Parcel reply = Parcel.obtain(); 4279 data.writeInterfaceToken(IActivityManager.descriptor); 4280 service.writeToParcel(data, 0); 4281 mRemote.transact(GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION, data, reply, 0); 4282 reply.readException(); 4283 PendingIntent res = PendingIntent.readPendingIntentOrNullFromParcel(reply); 4284 data.recycle(); 4285 reply.recycle(); 4286 return res; 4287 } 4288 4289 public ComponentName startService(IApplicationThread caller, Intent service, 4290 String resolvedType, String callingPackage, int userId) throws RemoteException 4291 { 4292 Parcel data = Parcel.obtain(); 4293 Parcel reply = Parcel.obtain(); 4294 data.writeInterfaceToken(IActivityManager.descriptor); 4295 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 4296 service.writeToParcel(data, 0); 4297 data.writeString(resolvedType); 4298 data.writeString(callingPackage); 4299 data.writeInt(userId); 4300 mRemote.transact(START_SERVICE_TRANSACTION, data, reply, 0); 4301 reply.readException(); 4302 ComponentName res = ComponentName.readFromParcel(reply); 4303 data.recycle(); 4304 reply.recycle(); 4305 return res; 4306 } 4307 public int stopService(IApplicationThread caller, Intent service, 4308 String resolvedType, int userId) throws RemoteException 4309 { 4310 Parcel data = Parcel.obtain(); 4311 Parcel reply = Parcel.obtain(); 4312 data.writeInterfaceToken(IActivityManager.descriptor); 4313 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 4314 service.writeToParcel(data, 0); 4315 data.writeString(resolvedType); 4316 data.writeInt(userId); 4317 mRemote.transact(STOP_SERVICE_TRANSACTION, data, reply, 0); 4318 reply.readException(); 4319 int res = reply.readInt(); 4320 reply.recycle(); 4321 data.recycle(); 4322 return res; 4323 } 4324 public boolean stopServiceToken(ComponentName className, IBinder token, 4325 int startId) throws RemoteException { 4326 Parcel data = Parcel.obtain(); 4327 Parcel reply = Parcel.obtain(); 4328 data.writeInterfaceToken(IActivityManager.descriptor); 4329 ComponentName.writeToParcel(className, data); 4330 data.writeStrongBinder(token); 4331 data.writeInt(startId); 4332 mRemote.transact(STOP_SERVICE_TOKEN_TRANSACTION, data, reply, 0); 4333 reply.readException(); 4334 boolean res = reply.readInt() != 0; 4335 data.recycle(); 4336 reply.recycle(); 4337 return res; 4338 } 4339 public void setServiceForeground(ComponentName className, IBinder token, 4340 int id, Notification notification, int flags) throws RemoteException { 4341 Parcel data = Parcel.obtain(); 4342 Parcel reply = Parcel.obtain(); 4343 data.writeInterfaceToken(IActivityManager.descriptor); 4344 ComponentName.writeToParcel(className, data); 4345 data.writeStrongBinder(token); 4346 data.writeInt(id); 4347 if (notification != null) { 4348 data.writeInt(1); 4349 notification.writeToParcel(data, 0); 4350 } else { 4351 data.writeInt(0); 4352 } 4353 data.writeInt(flags); 4354 mRemote.transact(SET_SERVICE_FOREGROUND_TRANSACTION, data, reply, 0); 4355 reply.readException(); 4356 data.recycle(); 4357 reply.recycle(); 4358 } 4359 public int bindService(IApplicationThread caller, IBinder token, 4360 Intent service, String resolvedType, IServiceConnection connection, 4361 int flags, String callingPackage, int userId) throws RemoteException { 4362 Parcel data = Parcel.obtain(); 4363 Parcel reply = Parcel.obtain(); 4364 data.writeInterfaceToken(IActivityManager.descriptor); 4365 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 4366 data.writeStrongBinder(token); 4367 service.writeToParcel(data, 0); 4368 data.writeString(resolvedType); 4369 data.writeStrongBinder(connection.asBinder()); 4370 data.writeInt(flags); 4371 data.writeString(callingPackage); 4372 data.writeInt(userId); 4373 mRemote.transact(BIND_SERVICE_TRANSACTION, data, reply, 0); 4374 reply.readException(); 4375 int res = reply.readInt(); 4376 data.recycle(); 4377 reply.recycle(); 4378 return res; 4379 } 4380 public boolean unbindService(IServiceConnection connection) throws RemoteException 4381 { 4382 Parcel data = Parcel.obtain(); 4383 Parcel reply = Parcel.obtain(); 4384 data.writeInterfaceToken(IActivityManager.descriptor); 4385 data.writeStrongBinder(connection.asBinder()); 4386 mRemote.transact(UNBIND_SERVICE_TRANSACTION, data, reply, 0); 4387 reply.readException(); 4388 boolean res = reply.readInt() != 0; 4389 data.recycle(); 4390 reply.recycle(); 4391 return res; 4392 } 4393 4394 public void publishService(IBinder token, 4395 Intent intent, IBinder service) throws RemoteException { 4396 Parcel data = Parcel.obtain(); 4397 Parcel reply = Parcel.obtain(); 4398 data.writeInterfaceToken(IActivityManager.descriptor); 4399 data.writeStrongBinder(token); 4400 intent.writeToParcel(data, 0); 4401 data.writeStrongBinder(service); 4402 mRemote.transact(PUBLISH_SERVICE_TRANSACTION, data, reply, 0); 4403 reply.readException(); 4404 data.recycle(); 4405 reply.recycle(); 4406 } 4407 4408 public void unbindFinished(IBinder token, Intent intent, boolean doRebind) 4409 throws RemoteException { 4410 Parcel data = Parcel.obtain(); 4411 Parcel reply = Parcel.obtain(); 4412 data.writeInterfaceToken(IActivityManager.descriptor); 4413 data.writeStrongBinder(token); 4414 intent.writeToParcel(data, 0); 4415 data.writeInt(doRebind ? 1 : 0); 4416 mRemote.transact(UNBIND_FINISHED_TRANSACTION, data, reply, 0); 4417 reply.readException(); 4418 data.recycle(); 4419 reply.recycle(); 4420 } 4421 4422 public void serviceDoneExecuting(IBinder token, int type, int startId, 4423 int res) throws RemoteException { 4424 Parcel data = Parcel.obtain(); 4425 Parcel reply = Parcel.obtain(); 4426 data.writeInterfaceToken(IActivityManager.descriptor); 4427 data.writeStrongBinder(token); 4428 data.writeInt(type); 4429 data.writeInt(startId); 4430 data.writeInt(res); 4431 mRemote.transact(SERVICE_DONE_EXECUTING_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 4432 reply.readException(); 4433 data.recycle(); 4434 reply.recycle(); 4435 } 4436 4437 public IBinder peekService(Intent service, String resolvedType, String callingPackage) 4438 throws RemoteException { 4439 Parcel data = Parcel.obtain(); 4440 Parcel reply = Parcel.obtain(); 4441 data.writeInterfaceToken(IActivityManager.descriptor); 4442 service.writeToParcel(data, 0); 4443 data.writeString(resolvedType); 4444 data.writeString(callingPackage); 4445 mRemote.transact(PEEK_SERVICE_TRANSACTION, data, reply, 0); 4446 reply.readException(); 4447 IBinder binder = reply.readStrongBinder(); 4448 reply.recycle(); 4449 data.recycle(); 4450 return binder; 4451 } 4452 4453 public boolean bindBackupAgent(String packageName, int backupRestoreMode, int userId) 4454 throws RemoteException { 4455 Parcel data = Parcel.obtain(); 4456 Parcel reply = Parcel.obtain(); 4457 data.writeInterfaceToken(IActivityManager.descriptor); 4458 data.writeString(packageName); 4459 data.writeInt(backupRestoreMode); 4460 data.writeInt(userId); 4461 mRemote.transact(START_BACKUP_AGENT_TRANSACTION, data, reply, 0); 4462 reply.readException(); 4463 boolean success = reply.readInt() != 0; 4464 reply.recycle(); 4465 data.recycle(); 4466 return success; 4467 } 4468 4469 public void clearPendingBackup() throws RemoteException { 4470 Parcel data = Parcel.obtain(); 4471 Parcel reply = Parcel.obtain(); 4472 data.writeInterfaceToken(IActivityManager.descriptor); 4473 mRemote.transact(CLEAR_PENDING_BACKUP_TRANSACTION, data, reply, 0); 4474 reply.recycle(); 4475 data.recycle(); 4476 } 4477 4478 public void backupAgentCreated(String packageName, IBinder agent) throws RemoteException { 4479 Parcel data = Parcel.obtain(); 4480 Parcel reply = Parcel.obtain(); 4481 data.writeInterfaceToken(IActivityManager.descriptor); 4482 data.writeString(packageName); 4483 data.writeStrongBinder(agent); 4484 mRemote.transact(BACKUP_AGENT_CREATED_TRANSACTION, data, reply, 0); 4485 reply.recycle(); 4486 data.recycle(); 4487 } 4488 4489 public void unbindBackupAgent(ApplicationInfo app) throws RemoteException { 4490 Parcel data = Parcel.obtain(); 4491 Parcel reply = Parcel.obtain(); 4492 data.writeInterfaceToken(IActivityManager.descriptor); 4493 app.writeToParcel(data, 0); 4494 mRemote.transact(UNBIND_BACKUP_AGENT_TRANSACTION, data, reply, 0); 4495 reply.readException(); 4496 reply.recycle(); 4497 data.recycle(); 4498 } 4499 4500 public boolean startInstrumentation(ComponentName className, String profileFile, 4501 int flags, Bundle arguments, IInstrumentationWatcher watcher, 4502 IUiAutomationConnection connection, int userId, String instructionSet) 4503 throws RemoteException { 4504 Parcel data = Parcel.obtain(); 4505 Parcel reply = Parcel.obtain(); 4506 data.writeInterfaceToken(IActivityManager.descriptor); 4507 ComponentName.writeToParcel(className, data); 4508 data.writeString(profileFile); 4509 data.writeInt(flags); 4510 data.writeBundle(arguments); 4511 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null); 4512 data.writeStrongBinder(connection != null ? connection.asBinder() : null); 4513 data.writeInt(userId); 4514 data.writeString(instructionSet); 4515 mRemote.transact(START_INSTRUMENTATION_TRANSACTION, data, reply, 0); 4516 reply.readException(); 4517 boolean res = reply.readInt() != 0; 4518 reply.recycle(); 4519 data.recycle(); 4520 return res; 4521 } 4522 4523 public void finishInstrumentation(IApplicationThread target, 4524 int resultCode, Bundle results) throws RemoteException { 4525 Parcel data = Parcel.obtain(); 4526 Parcel reply = Parcel.obtain(); 4527 data.writeInterfaceToken(IActivityManager.descriptor); 4528 data.writeStrongBinder(target != null ? target.asBinder() : null); 4529 data.writeInt(resultCode); 4530 data.writeBundle(results); 4531 mRemote.transact(FINISH_INSTRUMENTATION_TRANSACTION, data, reply, 0); 4532 reply.readException(); 4533 data.recycle(); 4534 reply.recycle(); 4535 } 4536 public Configuration getConfiguration() throws RemoteException 4537 { 4538 Parcel data = Parcel.obtain(); 4539 Parcel reply = Parcel.obtain(); 4540 data.writeInterfaceToken(IActivityManager.descriptor); 4541 mRemote.transact(GET_CONFIGURATION_TRANSACTION, data, reply, 0); 4542 reply.readException(); 4543 Configuration res = Configuration.CREATOR.createFromParcel(reply); 4544 reply.recycle(); 4545 data.recycle(); 4546 return res; 4547 } 4548 public void updateConfiguration(Configuration values) throws RemoteException 4549 { 4550 Parcel data = Parcel.obtain(); 4551 Parcel reply = Parcel.obtain(); 4552 data.writeInterfaceToken(IActivityManager.descriptor); 4553 values.writeToParcel(data, 0); 4554 mRemote.transact(UPDATE_CONFIGURATION_TRANSACTION, data, reply, 0); 4555 reply.readException(); 4556 data.recycle(); 4557 reply.recycle(); 4558 } 4559 public void setRequestedOrientation(IBinder token, int requestedOrientation) 4560 throws RemoteException { 4561 Parcel data = Parcel.obtain(); 4562 Parcel reply = Parcel.obtain(); 4563 data.writeInterfaceToken(IActivityManager.descriptor); 4564 data.writeStrongBinder(token); 4565 data.writeInt(requestedOrientation); 4566 mRemote.transact(SET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0); 4567 reply.readException(); 4568 data.recycle(); 4569 reply.recycle(); 4570 } 4571 public int getRequestedOrientation(IBinder token) throws RemoteException { 4572 Parcel data = Parcel.obtain(); 4573 Parcel reply = Parcel.obtain(); 4574 data.writeInterfaceToken(IActivityManager.descriptor); 4575 data.writeStrongBinder(token); 4576 mRemote.transact(GET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0); 4577 reply.readException(); 4578 int res = reply.readInt(); 4579 data.recycle(); 4580 reply.recycle(); 4581 return res; 4582 } 4583 public ComponentName getActivityClassForToken(IBinder token) 4584 throws RemoteException { 4585 Parcel data = Parcel.obtain(); 4586 Parcel reply = Parcel.obtain(); 4587 data.writeInterfaceToken(IActivityManager.descriptor); 4588 data.writeStrongBinder(token); 4589 mRemote.transact(GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION, data, reply, 0); 4590 reply.readException(); 4591 ComponentName res = ComponentName.readFromParcel(reply); 4592 data.recycle(); 4593 reply.recycle(); 4594 return res; 4595 } 4596 public String getPackageForToken(IBinder token) throws RemoteException 4597 { 4598 Parcel data = Parcel.obtain(); 4599 Parcel reply = Parcel.obtain(); 4600 data.writeInterfaceToken(IActivityManager.descriptor); 4601 data.writeStrongBinder(token); 4602 mRemote.transact(GET_PACKAGE_FOR_TOKEN_TRANSACTION, data, reply, 0); 4603 reply.readException(); 4604 String res = reply.readString(); 4605 data.recycle(); 4606 reply.recycle(); 4607 return res; 4608 } 4609 public IIntentSender getIntentSender(int type, 4610 String packageName, IBinder token, String resultWho, 4611 int requestCode, Intent[] intents, String[] resolvedTypes, int flags, 4612 Bundle options, int userId) throws RemoteException { 4613 Parcel data = Parcel.obtain(); 4614 Parcel reply = Parcel.obtain(); 4615 data.writeInterfaceToken(IActivityManager.descriptor); 4616 data.writeInt(type); 4617 data.writeString(packageName); 4618 data.writeStrongBinder(token); 4619 data.writeString(resultWho); 4620 data.writeInt(requestCode); 4621 if (intents != null) { 4622 data.writeInt(1); 4623 data.writeTypedArray(intents, 0); 4624 data.writeStringArray(resolvedTypes); 4625 } else { 4626 data.writeInt(0); 4627 } 4628 data.writeInt(flags); 4629 if (options != null) { 4630 data.writeInt(1); 4631 options.writeToParcel(data, 0); 4632 } else { 4633 data.writeInt(0); 4634 } 4635 data.writeInt(userId); 4636 mRemote.transact(GET_INTENT_SENDER_TRANSACTION, data, reply, 0); 4637 reply.readException(); 4638 IIntentSender res = IIntentSender.Stub.asInterface( 4639 reply.readStrongBinder()); 4640 data.recycle(); 4641 reply.recycle(); 4642 return res; 4643 } 4644 public void cancelIntentSender(IIntentSender sender) throws RemoteException { 4645 Parcel data = Parcel.obtain(); 4646 Parcel reply = Parcel.obtain(); 4647 data.writeInterfaceToken(IActivityManager.descriptor); 4648 data.writeStrongBinder(sender.asBinder()); 4649 mRemote.transact(CANCEL_INTENT_SENDER_TRANSACTION, data, reply, 0); 4650 reply.readException(); 4651 data.recycle(); 4652 reply.recycle(); 4653 } 4654 public String getPackageForIntentSender(IIntentSender sender) throws RemoteException { 4655 Parcel data = Parcel.obtain(); 4656 Parcel reply = Parcel.obtain(); 4657 data.writeInterfaceToken(IActivityManager.descriptor); 4658 data.writeStrongBinder(sender.asBinder()); 4659 mRemote.transact(GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 4660 reply.readException(); 4661 String res = reply.readString(); 4662 data.recycle(); 4663 reply.recycle(); 4664 return res; 4665 } 4666 public int getUidForIntentSender(IIntentSender sender) throws RemoteException { 4667 Parcel data = Parcel.obtain(); 4668 Parcel reply = Parcel.obtain(); 4669 data.writeInterfaceToken(IActivityManager.descriptor); 4670 data.writeStrongBinder(sender.asBinder()); 4671 mRemote.transact(GET_UID_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 4672 reply.readException(); 4673 int res = reply.readInt(); 4674 data.recycle(); 4675 reply.recycle(); 4676 return res; 4677 } 4678 public int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll, 4679 boolean requireFull, String name, String callerPackage) throws RemoteException { 4680 Parcel data = Parcel.obtain(); 4681 Parcel reply = Parcel.obtain(); 4682 data.writeInterfaceToken(IActivityManager.descriptor); 4683 data.writeInt(callingPid); 4684 data.writeInt(callingUid); 4685 data.writeInt(userId); 4686 data.writeInt(allowAll ? 1 : 0); 4687 data.writeInt(requireFull ? 1 : 0); 4688 data.writeString(name); 4689 data.writeString(callerPackage); 4690 mRemote.transact(HANDLE_INCOMING_USER_TRANSACTION, data, reply, 0); 4691 reply.readException(); 4692 int res = reply.readInt(); 4693 data.recycle(); 4694 reply.recycle(); 4695 return res; 4696 } 4697 public void setProcessLimit(int max) throws RemoteException 4698 { 4699 Parcel data = Parcel.obtain(); 4700 Parcel reply = Parcel.obtain(); 4701 data.writeInterfaceToken(IActivityManager.descriptor); 4702 data.writeInt(max); 4703 mRemote.transact(SET_PROCESS_LIMIT_TRANSACTION, data, reply, 0); 4704 reply.readException(); 4705 data.recycle(); 4706 reply.recycle(); 4707 } 4708 public int getProcessLimit() throws RemoteException 4709 { 4710 Parcel data = Parcel.obtain(); 4711 Parcel reply = Parcel.obtain(); 4712 data.writeInterfaceToken(IActivityManager.descriptor); 4713 mRemote.transact(GET_PROCESS_LIMIT_TRANSACTION, data, reply, 0); 4714 reply.readException(); 4715 int res = reply.readInt(); 4716 data.recycle(); 4717 reply.recycle(); 4718 return res; 4719 } 4720 public void setProcessForeground(IBinder token, int pid, 4721 boolean isForeground) throws RemoteException { 4722 Parcel data = Parcel.obtain(); 4723 Parcel reply = Parcel.obtain(); 4724 data.writeInterfaceToken(IActivityManager.descriptor); 4725 data.writeStrongBinder(token); 4726 data.writeInt(pid); 4727 data.writeInt(isForeground ? 1 : 0); 4728 mRemote.transact(SET_PROCESS_FOREGROUND_TRANSACTION, data, reply, 0); 4729 reply.readException(); 4730 data.recycle(); 4731 reply.recycle(); 4732 } 4733 public int checkPermission(String permission, int pid, int uid) 4734 throws RemoteException { 4735 Parcel data = Parcel.obtain(); 4736 Parcel reply = Parcel.obtain(); 4737 data.writeInterfaceToken(IActivityManager.descriptor); 4738 data.writeString(permission); 4739 data.writeInt(pid); 4740 data.writeInt(uid); 4741 mRemote.transact(CHECK_PERMISSION_TRANSACTION, data, reply, 0); 4742 reply.readException(); 4743 int res = reply.readInt(); 4744 data.recycle(); 4745 reply.recycle(); 4746 return res; 4747 } 4748 public int checkPermissionWithToken(String permission, int pid, int uid, IBinder callerToken) 4749 throws RemoteException { 4750 Parcel data = Parcel.obtain(); 4751 Parcel reply = Parcel.obtain(); 4752 data.writeInterfaceToken(IActivityManager.descriptor); 4753 data.writeString(permission); 4754 data.writeInt(pid); 4755 data.writeInt(uid); 4756 data.writeStrongBinder(callerToken); 4757 mRemote.transact(CHECK_PERMISSION_WITH_TOKEN_TRANSACTION, data, reply, 0); 4758 reply.readException(); 4759 int res = reply.readInt(); 4760 data.recycle(); 4761 reply.recycle(); 4762 return res; 4763 } 4764 public boolean clearApplicationUserData(final String packageName, 4765 final IPackageDataObserver observer, final int userId) throws RemoteException { 4766 Parcel data = Parcel.obtain(); 4767 Parcel reply = Parcel.obtain(); 4768 data.writeInterfaceToken(IActivityManager.descriptor); 4769 data.writeString(packageName); 4770 data.writeStrongBinder((observer != null) ? observer.asBinder() : null); 4771 data.writeInt(userId); 4772 mRemote.transact(CLEAR_APP_DATA_TRANSACTION, data, reply, 0); 4773 reply.readException(); 4774 boolean res = reply.readInt() != 0; 4775 data.recycle(); 4776 reply.recycle(); 4777 return res; 4778 } 4779 public int checkUriPermission(Uri uri, int pid, int uid, int mode, int userId, 4780 IBinder callerToken) throws RemoteException { 4781 Parcel data = Parcel.obtain(); 4782 Parcel reply = Parcel.obtain(); 4783 data.writeInterfaceToken(IActivityManager.descriptor); 4784 uri.writeToParcel(data, 0); 4785 data.writeInt(pid); 4786 data.writeInt(uid); 4787 data.writeInt(mode); 4788 data.writeInt(userId); 4789 data.writeStrongBinder(callerToken); 4790 mRemote.transact(CHECK_URI_PERMISSION_TRANSACTION, data, reply, 0); 4791 reply.readException(); 4792 int res = reply.readInt(); 4793 data.recycle(); 4794 reply.recycle(); 4795 return res; 4796 } 4797 public void grantUriPermission(IApplicationThread caller, String targetPkg, 4798 Uri uri, int mode, int userId) throws RemoteException { 4799 Parcel data = Parcel.obtain(); 4800 Parcel reply = Parcel.obtain(); 4801 data.writeInterfaceToken(IActivityManager.descriptor); 4802 data.writeStrongBinder(caller.asBinder()); 4803 data.writeString(targetPkg); 4804 uri.writeToParcel(data, 0); 4805 data.writeInt(mode); 4806 data.writeInt(userId); 4807 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 4808 reply.readException(); 4809 data.recycle(); 4810 reply.recycle(); 4811 } 4812 public void revokeUriPermission(IApplicationThread caller, Uri uri, 4813 int mode, int userId) throws RemoteException { 4814 Parcel data = Parcel.obtain(); 4815 Parcel reply = Parcel.obtain(); 4816 data.writeInterfaceToken(IActivityManager.descriptor); 4817 data.writeStrongBinder(caller.asBinder()); 4818 uri.writeToParcel(data, 0); 4819 data.writeInt(mode); 4820 data.writeInt(userId); 4821 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0); 4822 reply.readException(); 4823 data.recycle(); 4824 reply.recycle(); 4825 } 4826 4827 @Override 4828 public void takePersistableUriPermission(Uri uri, int mode, int userId) 4829 throws RemoteException { 4830 Parcel data = Parcel.obtain(); 4831 Parcel reply = Parcel.obtain(); 4832 data.writeInterfaceToken(IActivityManager.descriptor); 4833 uri.writeToParcel(data, 0); 4834 data.writeInt(mode); 4835 data.writeInt(userId); 4836 mRemote.transact(TAKE_PERSISTABLE_URI_PERMISSION_TRANSACTION, data, reply, 0); 4837 reply.readException(); 4838 data.recycle(); 4839 reply.recycle(); 4840 } 4841 4842 @Override 4843 public void releasePersistableUriPermission(Uri uri, int mode, int userId) 4844 throws RemoteException { 4845 Parcel data = Parcel.obtain(); 4846 Parcel reply = Parcel.obtain(); 4847 data.writeInterfaceToken(IActivityManager.descriptor); 4848 uri.writeToParcel(data, 0); 4849 data.writeInt(mode); 4850 data.writeInt(userId); 4851 mRemote.transact(RELEASE_PERSISTABLE_URI_PERMISSION_TRANSACTION, data, reply, 0); 4852 reply.readException(); 4853 data.recycle(); 4854 reply.recycle(); 4855 } 4856 4857 @Override 4858 public ParceledListSlice<UriPermission> getPersistedUriPermissions( 4859 String packageName, boolean incoming) throws RemoteException { 4860 Parcel data = Parcel.obtain(); 4861 Parcel reply = Parcel.obtain(); 4862 data.writeInterfaceToken(IActivityManager.descriptor); 4863 data.writeString(packageName); 4864 data.writeInt(incoming ? 1 : 0); 4865 mRemote.transact(GET_PERSISTED_URI_PERMISSIONS_TRANSACTION, data, reply, 0); 4866 reply.readException(); 4867 @SuppressWarnings("unchecked") 4868 final ParceledListSlice<UriPermission> perms = ParceledListSlice.CREATOR.createFromParcel( 4869 reply); 4870 data.recycle(); 4871 reply.recycle(); 4872 return perms; 4873 } 4874 4875 @Override 4876 public ParceledListSlice<UriPermission> getGrantedUriPermissions(String packageName, int userId) 4877 throws RemoteException { 4878 Parcel data = Parcel.obtain(); 4879 Parcel reply = Parcel.obtain(); 4880 data.writeInterfaceToken(IActivityManager.descriptor); 4881 data.writeString(packageName); 4882 data.writeInt(userId); 4883 mRemote.transact(GET_GRANTED_URI_PERMISSIONS_TRANSACTION, data, reply, 0); 4884 reply.readException(); 4885 @SuppressWarnings("unchecked") 4886 final ParceledListSlice<UriPermission> perms = ParceledListSlice.CREATOR.createFromParcel( 4887 reply); 4888 data.recycle(); 4889 reply.recycle(); 4890 return perms; 4891 } 4892 4893 @Override 4894 public void clearGrantedUriPermissions(String packageName, int userId) throws RemoteException { 4895 Parcel data = Parcel.obtain(); 4896 Parcel reply = Parcel.obtain(); 4897 data.writeInterfaceToken(IActivityManager.descriptor); 4898 data.writeString(packageName); 4899 data.writeInt(userId); 4900 mRemote.transact(CLEAR_GRANTED_URI_PERMISSIONS_TRANSACTION, data, reply, 0); 4901 reply.readException(); 4902 data.recycle(); 4903 reply.recycle(); 4904 } 4905 4906 public void showWaitingForDebugger(IApplicationThread who, boolean waiting) 4907 throws RemoteException { 4908 Parcel data = Parcel.obtain(); 4909 Parcel reply = Parcel.obtain(); 4910 data.writeInterfaceToken(IActivityManager.descriptor); 4911 data.writeStrongBinder(who.asBinder()); 4912 data.writeInt(waiting ? 1 : 0); 4913 mRemote.transact(SHOW_WAITING_FOR_DEBUGGER_TRANSACTION, data, reply, 0); 4914 reply.readException(); 4915 data.recycle(); 4916 reply.recycle(); 4917 } 4918 public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) throws RemoteException { 4919 Parcel data = Parcel.obtain(); 4920 Parcel reply = Parcel.obtain(); 4921 data.writeInterfaceToken(IActivityManager.descriptor); 4922 mRemote.transact(GET_MEMORY_INFO_TRANSACTION, data, reply, 0); 4923 reply.readException(); 4924 outInfo.readFromParcel(reply); 4925 data.recycle(); 4926 reply.recycle(); 4927 } 4928 public void unhandledBack() throws RemoteException 4929 { 4930 Parcel data = Parcel.obtain(); 4931 Parcel reply = Parcel.obtain(); 4932 data.writeInterfaceToken(IActivityManager.descriptor); 4933 mRemote.transact(UNHANDLED_BACK_TRANSACTION, data, reply, 0); 4934 reply.readException(); 4935 data.recycle(); 4936 reply.recycle(); 4937 } 4938 public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException 4939 { 4940 Parcel data = Parcel.obtain(); 4941 Parcel reply = Parcel.obtain(); 4942 data.writeInterfaceToken(IActivityManager.descriptor); 4943 mRemote.transact(OPEN_CONTENT_URI_TRANSACTION, data, reply, 0); 4944 reply.readException(); 4945 ParcelFileDescriptor pfd = null; 4946 if (reply.readInt() != 0) { 4947 pfd = ParcelFileDescriptor.CREATOR.createFromParcel(reply); 4948 } 4949 data.recycle(); 4950 reply.recycle(); 4951 return pfd; 4952 } 4953 public void setLockScreenShown(boolean showing, boolean occluded) throws RemoteException 4954 { 4955 Parcel data = Parcel.obtain(); 4956 Parcel reply = Parcel.obtain(); 4957 data.writeInterfaceToken(IActivityManager.descriptor); 4958 data.writeInt(showing ? 1 : 0); 4959 data.writeInt(occluded ? 1 : 0); 4960 mRemote.transact(SET_LOCK_SCREEN_SHOWN_TRANSACTION, data, reply, 0); 4961 reply.readException(); 4962 data.recycle(); 4963 reply.recycle(); 4964 } 4965 public void setDebugApp( 4966 String packageName, boolean waitForDebugger, boolean persistent) 4967 throws RemoteException 4968 { 4969 Parcel data = Parcel.obtain(); 4970 Parcel reply = Parcel.obtain(); 4971 data.writeInterfaceToken(IActivityManager.descriptor); 4972 data.writeString(packageName); 4973 data.writeInt(waitForDebugger ? 1 : 0); 4974 data.writeInt(persistent ? 1 : 0); 4975 mRemote.transact(SET_DEBUG_APP_TRANSACTION, data, reply, 0); 4976 reply.readException(); 4977 data.recycle(); 4978 reply.recycle(); 4979 } 4980 public void setAlwaysFinish(boolean enabled) throws RemoteException 4981 { 4982 Parcel data = Parcel.obtain(); 4983 Parcel reply = Parcel.obtain(); 4984 data.writeInterfaceToken(IActivityManager.descriptor); 4985 data.writeInt(enabled ? 1 : 0); 4986 mRemote.transact(SET_ALWAYS_FINISH_TRANSACTION, data, reply, 0); 4987 reply.readException(); 4988 data.recycle(); 4989 reply.recycle(); 4990 } 4991 public void setActivityController(IActivityController watcher, boolean imAMonkey) 4992 throws RemoteException 4993 { 4994 Parcel data = Parcel.obtain(); 4995 Parcel reply = Parcel.obtain(); 4996 data.writeInterfaceToken(IActivityManager.descriptor); 4997 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null); 4998 data.writeInt(imAMonkey ? 1 : 0); 4999 mRemote.transact(SET_ACTIVITY_CONTROLLER_TRANSACTION, data, reply, 0); 5000 reply.readException(); 5001 data.recycle(); 5002 reply.recycle(); 5003 } 5004 public void setLenientBackgroundCheck(boolean enabled) throws RemoteException 5005 { 5006 Parcel data = Parcel.obtain(); 5007 Parcel reply = Parcel.obtain(); 5008 data.writeInterfaceToken(IActivityManager.descriptor); 5009 data.writeInt(enabled ? 1 : 0); 5010 mRemote.transact(SET_LENIENT_BACKGROUND_CHECK_TRANSACTION, data, reply, 0); 5011 reply.readException(); 5012 data.recycle(); 5013 reply.recycle(); 5014 } 5015 public int getMemoryTrimLevel() throws RemoteException 5016 { 5017 Parcel data = Parcel.obtain(); 5018 Parcel reply = Parcel.obtain(); 5019 data.writeInterfaceToken(IActivityManager.descriptor); 5020 mRemote.transact(GET_MEMORY_TRIM_LEVEL_TRANSACTION, data, reply, 0); 5021 reply.readException(); 5022 int level = reply.readInt(); 5023 data.recycle(); 5024 reply.recycle(); 5025 return level; 5026 } 5027 public void enterSafeMode() throws RemoteException { 5028 Parcel data = Parcel.obtain(); 5029 data.writeInterfaceToken(IActivityManager.descriptor); 5030 mRemote.transact(ENTER_SAFE_MODE_TRANSACTION, data, null, 0); 5031 data.recycle(); 5032 } 5033 public void noteWakeupAlarm(IIntentSender sender, int sourceUid, String sourcePkg, String tag) 5034 throws RemoteException { 5035 Parcel data = Parcel.obtain(); 5036 data.writeInterfaceToken(IActivityManager.descriptor); 5037 data.writeStrongBinder(sender.asBinder()); 5038 data.writeInt(sourceUid); 5039 data.writeString(sourcePkg); 5040 data.writeString(tag); 5041 mRemote.transact(NOTE_WAKEUP_ALARM_TRANSACTION, data, null, 0); 5042 data.recycle(); 5043 } 5044 public void noteAlarmStart(IIntentSender sender, int sourceUid, String tag) 5045 throws RemoteException { 5046 Parcel data = Parcel.obtain(); 5047 data.writeInterfaceToken(IActivityManager.descriptor); 5048 data.writeStrongBinder(sender.asBinder()); 5049 data.writeInt(sourceUid); 5050 data.writeString(tag); 5051 mRemote.transact(NOTE_ALARM_START_TRANSACTION, data, null, 0); 5052 data.recycle(); 5053 } 5054 public void noteAlarmFinish(IIntentSender sender, int sourceUid, String tag) 5055 throws RemoteException { 5056 Parcel data = Parcel.obtain(); 5057 data.writeInterfaceToken(IActivityManager.descriptor); 5058 data.writeStrongBinder(sender.asBinder()); 5059 data.writeInt(sourceUid); 5060 data.writeString(tag); 5061 mRemote.transact(NOTE_ALARM_FINISH_TRANSACTION, data, null, 0); 5062 data.recycle(); 5063 } 5064 public boolean killPids(int[] pids, String reason, boolean secure) throws RemoteException { 5065 Parcel data = Parcel.obtain(); 5066 Parcel reply = Parcel.obtain(); 5067 data.writeInterfaceToken(IActivityManager.descriptor); 5068 data.writeIntArray(pids); 5069 data.writeString(reason); 5070 data.writeInt(secure ? 1 : 0); 5071 mRemote.transact(KILL_PIDS_TRANSACTION, data, reply, 0); 5072 reply.readException(); 5073 boolean res = reply.readInt() != 0; 5074 data.recycle(); 5075 reply.recycle(); 5076 return res; 5077 } 5078 @Override 5079 public boolean killProcessesBelowForeground(String reason) throws RemoteException { 5080 Parcel data = Parcel.obtain(); 5081 Parcel reply = Parcel.obtain(); 5082 data.writeInterfaceToken(IActivityManager.descriptor); 5083 data.writeString(reason); 5084 mRemote.transact(KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION, data, reply, 0); 5085 boolean res = reply.readInt() != 0; 5086 data.recycle(); 5087 reply.recycle(); 5088 return res; 5089 } 5090 public boolean testIsSystemReady() 5091 { 5092 /* this base class version is never called */ 5093 return true; 5094 } 5095 public void handleApplicationCrash(IBinder app, 5096 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException 5097 { 5098 Parcel data = Parcel.obtain(); 5099 Parcel reply = Parcel.obtain(); 5100 data.writeInterfaceToken(IActivityManager.descriptor); 5101 data.writeStrongBinder(app); 5102 crashInfo.writeToParcel(data, 0); 5103 mRemote.transact(HANDLE_APPLICATION_CRASH_TRANSACTION, data, reply, 0); 5104 reply.readException(); 5105 reply.recycle(); 5106 data.recycle(); 5107 } 5108 5109 public boolean handleApplicationWtf(IBinder app, String tag, boolean system, 5110 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException 5111 { 5112 Parcel data = Parcel.obtain(); 5113 Parcel reply = Parcel.obtain(); 5114 data.writeInterfaceToken(IActivityManager.descriptor); 5115 data.writeStrongBinder(app); 5116 data.writeString(tag); 5117 data.writeInt(system ? 1 : 0); 5118 crashInfo.writeToParcel(data, 0); 5119 mRemote.transact(HANDLE_APPLICATION_WTF_TRANSACTION, data, reply, 0); 5120 reply.readException(); 5121 boolean res = reply.readInt() != 0; 5122 reply.recycle(); 5123 data.recycle(); 5124 return res; 5125 } 5126 5127 public void handleApplicationStrictModeViolation(IBinder app, 5128 int violationMask, 5129 StrictMode.ViolationInfo info) throws RemoteException 5130 { 5131 Parcel data = Parcel.obtain(); 5132 Parcel reply = Parcel.obtain(); 5133 data.writeInterfaceToken(IActivityManager.descriptor); 5134 data.writeStrongBinder(app); 5135 data.writeInt(violationMask); 5136 info.writeToParcel(data, 0); 5137 mRemote.transact(HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION, data, reply, 0); 5138 reply.readException(); 5139 reply.recycle(); 5140 data.recycle(); 5141 } 5142 5143 public void signalPersistentProcesses(int sig) throws RemoteException { 5144 Parcel data = Parcel.obtain(); 5145 Parcel reply = Parcel.obtain(); 5146 data.writeInterfaceToken(IActivityManager.descriptor); 5147 data.writeInt(sig); 5148 mRemote.transact(SIGNAL_PERSISTENT_PROCESSES_TRANSACTION, data, reply, 0); 5149 reply.readException(); 5150 data.recycle(); 5151 reply.recycle(); 5152 } 5153 5154 public void killBackgroundProcesses(String packageName, int userId) throws RemoteException { 5155 Parcel data = Parcel.obtain(); 5156 Parcel reply = Parcel.obtain(); 5157 data.writeInterfaceToken(IActivityManager.descriptor); 5158 data.writeString(packageName); 5159 data.writeInt(userId); 5160 mRemote.transact(KILL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0); 5161 reply.readException(); 5162 data.recycle(); 5163 reply.recycle(); 5164 } 5165 5166 public void killAllBackgroundProcesses() throws RemoteException { 5167 Parcel data = Parcel.obtain(); 5168 Parcel reply = Parcel.obtain(); 5169 data.writeInterfaceToken(IActivityManager.descriptor); 5170 mRemote.transact(KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0); 5171 reply.readException(); 5172 data.recycle(); 5173 reply.recycle(); 5174 } 5175 5176 public void killPackageDependents(String packageName, int userId) throws RemoteException { 5177 Parcel data = Parcel.obtain(); 5178 Parcel reply = Parcel.obtain(); 5179 data.writeInterfaceToken(IActivityManager.descriptor); 5180 data.writeString(packageName); 5181 data.writeInt(userId); 5182 mRemote.transact(KILL_PACKAGE_DEPENDENTS_TRANSACTION, data, reply, 0); 5183 reply.readException(); 5184 data.recycle(); 5185 reply.recycle(); 5186 } 5187 5188 public void forceStopPackage(String packageName, int userId) throws RemoteException { 5189 Parcel data = Parcel.obtain(); 5190 Parcel reply = Parcel.obtain(); 5191 data.writeInterfaceToken(IActivityManager.descriptor); 5192 data.writeString(packageName); 5193 data.writeInt(userId); 5194 mRemote.transact(FORCE_STOP_PACKAGE_TRANSACTION, data, reply, 0); 5195 reply.readException(); 5196 data.recycle(); 5197 reply.recycle(); 5198 } 5199 5200 public void getMyMemoryState(ActivityManager.RunningAppProcessInfo outInfo) 5201 throws RemoteException 5202 { 5203 Parcel data = Parcel.obtain(); 5204 Parcel reply = Parcel.obtain(); 5205 data.writeInterfaceToken(IActivityManager.descriptor); 5206 mRemote.transact(GET_MY_MEMORY_STATE_TRANSACTION, data, reply, 0); 5207 reply.readException(); 5208 outInfo.readFromParcel(reply); 5209 reply.recycle(); 5210 data.recycle(); 5211 } 5212 5213 public ConfigurationInfo getDeviceConfigurationInfo() throws RemoteException 5214 { 5215 Parcel data = Parcel.obtain(); 5216 Parcel reply = Parcel.obtain(); 5217 data.writeInterfaceToken(IActivityManager.descriptor); 5218 mRemote.transact(GET_DEVICE_CONFIGURATION_TRANSACTION, data, reply, 0); 5219 reply.readException(); 5220 ConfigurationInfo res = ConfigurationInfo.CREATOR.createFromParcel(reply); 5221 reply.recycle(); 5222 data.recycle(); 5223 return res; 5224 } 5225 5226 public boolean profileControl(String process, int userId, boolean start, 5227 ProfilerInfo profilerInfo, int profileType) throws RemoteException 5228 { 5229 Parcel data = Parcel.obtain(); 5230 Parcel reply = Parcel.obtain(); 5231 data.writeInterfaceToken(IActivityManager.descriptor); 5232 data.writeString(process); 5233 data.writeInt(userId); 5234 data.writeInt(start ? 1 : 0); 5235 data.writeInt(profileType); 5236 if (profilerInfo != null) { 5237 data.writeInt(1); 5238 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 5239 } else { 5240 data.writeInt(0); 5241 } 5242 mRemote.transact(PROFILE_CONTROL_TRANSACTION, data, reply, 0); 5243 reply.readException(); 5244 boolean res = reply.readInt() != 0; 5245 reply.recycle(); 5246 data.recycle(); 5247 return res; 5248 } 5249 5250 public boolean shutdown(int timeout) throws RemoteException 5251 { 5252 Parcel data = Parcel.obtain(); 5253 Parcel reply = Parcel.obtain(); 5254 data.writeInterfaceToken(IActivityManager.descriptor); 5255 data.writeInt(timeout); 5256 mRemote.transact(SHUTDOWN_TRANSACTION, data, reply, 0); 5257 reply.readException(); 5258 boolean res = reply.readInt() != 0; 5259 reply.recycle(); 5260 data.recycle(); 5261 return res; 5262 } 5263 5264 public void stopAppSwitches() throws RemoteException { 5265 Parcel data = Parcel.obtain(); 5266 Parcel reply = Parcel.obtain(); 5267 data.writeInterfaceToken(IActivityManager.descriptor); 5268 mRemote.transact(STOP_APP_SWITCHES_TRANSACTION, data, reply, 0); 5269 reply.readException(); 5270 reply.recycle(); 5271 data.recycle(); 5272 } 5273 5274 public void resumeAppSwitches() throws RemoteException { 5275 Parcel data = Parcel.obtain(); 5276 Parcel reply = Parcel.obtain(); 5277 data.writeInterfaceToken(IActivityManager.descriptor); 5278 mRemote.transact(RESUME_APP_SWITCHES_TRANSACTION, data, reply, 0); 5279 reply.readException(); 5280 reply.recycle(); 5281 data.recycle(); 5282 } 5283 5284 public void addPackageDependency(String packageName) throws RemoteException { 5285 Parcel data = Parcel.obtain(); 5286 Parcel reply = Parcel.obtain(); 5287 data.writeInterfaceToken(IActivityManager.descriptor); 5288 data.writeString(packageName); 5289 mRemote.transact(ADD_PACKAGE_DEPENDENCY_TRANSACTION, data, reply, 0); 5290 reply.readException(); 5291 data.recycle(); 5292 reply.recycle(); 5293 } 5294 5295 public void killApplicationWithAppId(String pkg, int appid, String reason) 5296 throws RemoteException { 5297 Parcel data = Parcel.obtain(); 5298 Parcel reply = Parcel.obtain(); 5299 data.writeInterfaceToken(IActivityManager.descriptor); 5300 data.writeString(pkg); 5301 data.writeInt(appid); 5302 data.writeString(reason); 5303 mRemote.transact(KILL_APPLICATION_WITH_APPID_TRANSACTION, data, reply, 0); 5304 reply.readException(); 5305 data.recycle(); 5306 reply.recycle(); 5307 } 5308 5309 public void closeSystemDialogs(String reason) throws RemoteException { 5310 Parcel data = Parcel.obtain(); 5311 Parcel reply = Parcel.obtain(); 5312 data.writeInterfaceToken(IActivityManager.descriptor); 5313 data.writeString(reason); 5314 mRemote.transact(CLOSE_SYSTEM_DIALOGS_TRANSACTION, data, reply, 0); 5315 reply.readException(); 5316 data.recycle(); 5317 reply.recycle(); 5318 } 5319 5320 public Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids) 5321 throws RemoteException { 5322 Parcel data = Parcel.obtain(); 5323 Parcel reply = Parcel.obtain(); 5324 data.writeInterfaceToken(IActivityManager.descriptor); 5325 data.writeIntArray(pids); 5326 mRemote.transact(GET_PROCESS_MEMORY_INFO_TRANSACTION, data, reply, 0); 5327 reply.readException(); 5328 Debug.MemoryInfo[] res = reply.createTypedArray(Debug.MemoryInfo.CREATOR); 5329 data.recycle(); 5330 reply.recycle(); 5331 return res; 5332 } 5333 5334 public void killApplicationProcess(String processName, int uid) throws RemoteException { 5335 Parcel data = Parcel.obtain(); 5336 Parcel reply = Parcel.obtain(); 5337 data.writeInterfaceToken(IActivityManager.descriptor); 5338 data.writeString(processName); 5339 data.writeInt(uid); 5340 mRemote.transact(KILL_APPLICATION_PROCESS_TRANSACTION, data, reply, 0); 5341 reply.readException(); 5342 data.recycle(); 5343 reply.recycle(); 5344 } 5345 5346 public void overridePendingTransition(IBinder token, String packageName, 5347 int enterAnim, int exitAnim) throws RemoteException { 5348 Parcel data = Parcel.obtain(); 5349 Parcel reply = Parcel.obtain(); 5350 data.writeInterfaceToken(IActivityManager.descriptor); 5351 data.writeStrongBinder(token); 5352 data.writeString(packageName); 5353 data.writeInt(enterAnim); 5354 data.writeInt(exitAnim); 5355 mRemote.transact(OVERRIDE_PENDING_TRANSITION_TRANSACTION, data, reply, 0); 5356 reply.readException(); 5357 data.recycle(); 5358 reply.recycle(); 5359 } 5360 5361 public boolean isUserAMonkey() throws RemoteException { 5362 Parcel data = Parcel.obtain(); 5363 Parcel reply = Parcel.obtain(); 5364 data.writeInterfaceToken(IActivityManager.descriptor); 5365 mRemote.transact(IS_USER_A_MONKEY_TRANSACTION, data, reply, 0); 5366 reply.readException(); 5367 boolean res = reply.readInt() != 0; 5368 data.recycle(); 5369 reply.recycle(); 5370 return res; 5371 } 5372 5373 public void setUserIsMonkey(boolean monkey) throws RemoteException { 5374 Parcel data = Parcel.obtain(); 5375 Parcel reply = Parcel.obtain(); 5376 data.writeInterfaceToken(IActivityManager.descriptor); 5377 data.writeInt(monkey ? 1 : 0); 5378 mRemote.transact(SET_USER_IS_MONKEY_TRANSACTION, data, reply, 0); 5379 reply.readException(); 5380 data.recycle(); 5381 reply.recycle(); 5382 } 5383 5384 public void finishHeavyWeightApp() throws RemoteException { 5385 Parcel data = Parcel.obtain(); 5386 Parcel reply = Parcel.obtain(); 5387 data.writeInterfaceToken(IActivityManager.descriptor); 5388 mRemote.transact(FINISH_HEAVY_WEIGHT_APP_TRANSACTION, data, reply, 0); 5389 reply.readException(); 5390 data.recycle(); 5391 reply.recycle(); 5392 } 5393 5394 public boolean convertFromTranslucent(IBinder token) 5395 throws RemoteException { 5396 Parcel data = Parcel.obtain(); 5397 Parcel reply = Parcel.obtain(); 5398 data.writeInterfaceToken(IActivityManager.descriptor); 5399 data.writeStrongBinder(token); 5400 mRemote.transact(CONVERT_FROM_TRANSLUCENT_TRANSACTION, data, reply, 0); 5401 reply.readException(); 5402 boolean res = reply.readInt() != 0; 5403 data.recycle(); 5404 reply.recycle(); 5405 return res; 5406 } 5407 5408 public boolean convertToTranslucent(IBinder token, ActivityOptions options) 5409 throws RemoteException { 5410 Parcel data = Parcel.obtain(); 5411 Parcel reply = Parcel.obtain(); 5412 data.writeInterfaceToken(IActivityManager.descriptor); 5413 data.writeStrongBinder(token); 5414 if (options == null) { 5415 data.writeInt(0); 5416 } else { 5417 data.writeInt(1); 5418 data.writeBundle(options.toBundle()); 5419 } 5420 mRemote.transact(CONVERT_TO_TRANSLUCENT_TRANSACTION, data, reply, 0); 5421 reply.readException(); 5422 boolean res = reply.readInt() != 0; 5423 data.recycle(); 5424 reply.recycle(); 5425 return res; 5426 } 5427 5428 public ActivityOptions getActivityOptions(IBinder token) throws RemoteException { 5429 Parcel data = Parcel.obtain(); 5430 Parcel reply = Parcel.obtain(); 5431 data.writeInterfaceToken(IActivityManager.descriptor); 5432 data.writeStrongBinder(token); 5433 mRemote.transact(GET_ACTIVITY_OPTIONS_TRANSACTION, data, reply, 0); 5434 reply.readException(); 5435 ActivityOptions options = ActivityOptions.fromBundle(reply.readBundle()); 5436 data.recycle(); 5437 reply.recycle(); 5438 return options; 5439 } 5440 5441 public void setImmersive(IBinder token, boolean immersive) 5442 throws RemoteException { 5443 Parcel data = Parcel.obtain(); 5444 Parcel reply = Parcel.obtain(); 5445 data.writeInterfaceToken(IActivityManager.descriptor); 5446 data.writeStrongBinder(token); 5447 data.writeInt(immersive ? 1 : 0); 5448 mRemote.transact(SET_IMMERSIVE_TRANSACTION, data, reply, 0); 5449 reply.readException(); 5450 data.recycle(); 5451 reply.recycle(); 5452 } 5453 5454 public boolean isImmersive(IBinder token) 5455 throws RemoteException { 5456 Parcel data = Parcel.obtain(); 5457 Parcel reply = Parcel.obtain(); 5458 data.writeInterfaceToken(IActivityManager.descriptor); 5459 data.writeStrongBinder(token); 5460 mRemote.transact(IS_IMMERSIVE_TRANSACTION, data, reply, 0); 5461 reply.readException(); 5462 boolean res = reply.readInt() == 1; 5463 data.recycle(); 5464 reply.recycle(); 5465 return res; 5466 } 5467 5468 public boolean isTopOfTask(IBinder token) throws RemoteException { 5469 Parcel data = Parcel.obtain(); 5470 Parcel reply = Parcel.obtain(); 5471 data.writeInterfaceToken(IActivityManager.descriptor); 5472 data.writeStrongBinder(token); 5473 mRemote.transact(IS_TOP_OF_TASK_TRANSACTION, data, reply, 0); 5474 reply.readException(); 5475 boolean res = reply.readInt() == 1; 5476 data.recycle(); 5477 reply.recycle(); 5478 return res; 5479 } 5480 5481 public boolean isTopActivityImmersive() 5482 throws RemoteException { 5483 Parcel data = Parcel.obtain(); 5484 Parcel reply = Parcel.obtain(); 5485 data.writeInterfaceToken(IActivityManager.descriptor); 5486 mRemote.transact(IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION, data, reply, 0); 5487 reply.readException(); 5488 boolean res = reply.readInt() == 1; 5489 data.recycle(); 5490 reply.recycle(); 5491 return res; 5492 } 5493 5494 public void crashApplication(int uid, int initialPid, String packageName, 5495 String message) throws RemoteException { 5496 Parcel data = Parcel.obtain(); 5497 Parcel reply = Parcel.obtain(); 5498 data.writeInterfaceToken(IActivityManager.descriptor); 5499 data.writeInt(uid); 5500 data.writeInt(initialPid); 5501 data.writeString(packageName); 5502 data.writeString(message); 5503 mRemote.transact(CRASH_APPLICATION_TRANSACTION, data, reply, 0); 5504 reply.readException(); 5505 data.recycle(); 5506 reply.recycle(); 5507 } 5508 5509 public String getProviderMimeType(Uri uri, int userId) throws RemoteException { 5510 Parcel data = Parcel.obtain(); 5511 Parcel reply = Parcel.obtain(); 5512 data.writeInterfaceToken(IActivityManager.descriptor); 5513 uri.writeToParcel(data, 0); 5514 data.writeInt(userId); 5515 mRemote.transact(GET_PROVIDER_MIME_TYPE_TRANSACTION, data, reply, 0); 5516 reply.readException(); 5517 String res = reply.readString(); 5518 data.recycle(); 5519 reply.recycle(); 5520 return res; 5521 } 5522 5523 public IBinder newUriPermissionOwner(String name) 5524 throws RemoteException { 5525 Parcel data = Parcel.obtain(); 5526 Parcel reply = Parcel.obtain(); 5527 data.writeInterfaceToken(IActivityManager.descriptor); 5528 data.writeString(name); 5529 mRemote.transact(NEW_URI_PERMISSION_OWNER_TRANSACTION, data, reply, 0); 5530 reply.readException(); 5531 IBinder res = reply.readStrongBinder(); 5532 data.recycle(); 5533 reply.recycle(); 5534 return res; 5535 } 5536 5537 public IBinder getUriPermissionOwnerForActivity(IBinder activityToken) throws RemoteException { 5538 Parcel data = Parcel.obtain(); 5539 Parcel reply = Parcel.obtain(); 5540 data.writeInterfaceToken(IActivityManager.descriptor); 5541 data.writeStrongBinder(activityToken); 5542 mRemote.transact(GET_URI_PERMISSION_OWNER_FOR_ACTIVITY_TRANSACTION, data, reply, 0); 5543 reply.readException(); 5544 IBinder res = reply.readStrongBinder(); 5545 data.recycle(); 5546 reply.recycle(); 5547 return res; 5548 } 5549 5550 public void grantUriPermissionFromOwner(IBinder owner, int fromUid, String targetPkg, 5551 Uri uri, int mode, int sourceUserId, int targetUserId) throws RemoteException { 5552 Parcel data = Parcel.obtain(); 5553 Parcel reply = Parcel.obtain(); 5554 data.writeInterfaceToken(IActivityManager.descriptor); 5555 data.writeStrongBinder(owner); 5556 data.writeInt(fromUid); 5557 data.writeString(targetPkg); 5558 uri.writeToParcel(data, 0); 5559 data.writeInt(mode); 5560 data.writeInt(sourceUserId); 5561 data.writeInt(targetUserId); 5562 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 5563 reply.readException(); 5564 data.recycle(); 5565 reply.recycle(); 5566 } 5567 5568 public void revokeUriPermissionFromOwner(IBinder owner, Uri uri, 5569 int mode, int userId) throws RemoteException { 5570 Parcel data = Parcel.obtain(); 5571 Parcel reply = Parcel.obtain(); 5572 data.writeInterfaceToken(IActivityManager.descriptor); 5573 data.writeStrongBinder(owner); 5574 if (uri != null) { 5575 data.writeInt(1); 5576 uri.writeToParcel(data, 0); 5577 } else { 5578 data.writeInt(0); 5579 } 5580 data.writeInt(mode); 5581 data.writeInt(userId); 5582 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0); 5583 reply.readException(); 5584 data.recycle(); 5585 reply.recycle(); 5586 } 5587 5588 public int checkGrantUriPermission(int callingUid, String targetPkg, 5589 Uri uri, int modeFlags, int userId) throws RemoteException { 5590 Parcel data = Parcel.obtain(); 5591 Parcel reply = Parcel.obtain(); 5592 data.writeInterfaceToken(IActivityManager.descriptor); 5593 data.writeInt(callingUid); 5594 data.writeString(targetPkg); 5595 uri.writeToParcel(data, 0); 5596 data.writeInt(modeFlags); 5597 data.writeInt(userId); 5598 mRemote.transact(CHECK_GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 5599 reply.readException(); 5600 int res = reply.readInt(); 5601 data.recycle(); 5602 reply.recycle(); 5603 return res; 5604 } 5605 5606 public boolean dumpHeap(String process, int userId, boolean managed, 5607 String path, ParcelFileDescriptor fd) throws RemoteException { 5608 Parcel data = Parcel.obtain(); 5609 Parcel reply = Parcel.obtain(); 5610 data.writeInterfaceToken(IActivityManager.descriptor); 5611 data.writeString(process); 5612 data.writeInt(userId); 5613 data.writeInt(managed ? 1 : 0); 5614 data.writeString(path); 5615 if (fd != null) { 5616 data.writeInt(1); 5617 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 5618 } else { 5619 data.writeInt(0); 5620 } 5621 mRemote.transact(DUMP_HEAP_TRANSACTION, data, reply, 0); 5622 reply.readException(); 5623 boolean res = reply.readInt() != 0; 5624 reply.recycle(); 5625 data.recycle(); 5626 return res; 5627 } 5628 5629 public int startActivities(IApplicationThread caller, String callingPackage, 5630 Intent[] intents, String[] resolvedTypes, IBinder resultTo, 5631 Bundle options, int userId) throws RemoteException { 5632 Parcel data = Parcel.obtain(); 5633 Parcel reply = Parcel.obtain(); 5634 data.writeInterfaceToken(IActivityManager.descriptor); 5635 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 5636 data.writeString(callingPackage); 5637 data.writeTypedArray(intents, 0); 5638 data.writeStringArray(resolvedTypes); 5639 data.writeStrongBinder(resultTo); 5640 if (options != null) { 5641 data.writeInt(1); 5642 options.writeToParcel(data, 0); 5643 } else { 5644 data.writeInt(0); 5645 } 5646 data.writeInt(userId); 5647 mRemote.transact(START_ACTIVITIES_TRANSACTION, data, reply, 0); 5648 reply.readException(); 5649 int result = reply.readInt(); 5650 reply.recycle(); 5651 data.recycle(); 5652 return result; 5653 } 5654 5655 public int getFrontActivityScreenCompatMode() throws RemoteException { 5656 Parcel data = Parcel.obtain(); 5657 Parcel reply = Parcel.obtain(); 5658 data.writeInterfaceToken(IActivityManager.descriptor); 5659 mRemote.transact(GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 5660 reply.readException(); 5661 int mode = reply.readInt(); 5662 reply.recycle(); 5663 data.recycle(); 5664 return mode; 5665 } 5666 5667 public void setFrontActivityScreenCompatMode(int mode) throws RemoteException { 5668 Parcel data = Parcel.obtain(); 5669 Parcel reply = Parcel.obtain(); 5670 data.writeInterfaceToken(IActivityManager.descriptor); 5671 data.writeInt(mode); 5672 mRemote.transact(SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 5673 reply.readException(); 5674 reply.recycle(); 5675 data.recycle(); 5676 } 5677 5678 public int getPackageScreenCompatMode(String packageName) throws RemoteException { 5679 Parcel data = Parcel.obtain(); 5680 Parcel reply = Parcel.obtain(); 5681 data.writeInterfaceToken(IActivityManager.descriptor); 5682 data.writeString(packageName); 5683 mRemote.transact(GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 5684 reply.readException(); 5685 int mode = reply.readInt(); 5686 reply.recycle(); 5687 data.recycle(); 5688 return mode; 5689 } 5690 5691 public void setPackageScreenCompatMode(String packageName, int mode) 5692 throws RemoteException { 5693 Parcel data = Parcel.obtain(); 5694 Parcel reply = Parcel.obtain(); 5695 data.writeInterfaceToken(IActivityManager.descriptor); 5696 data.writeString(packageName); 5697 data.writeInt(mode); 5698 mRemote.transact(SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 5699 reply.readException(); 5700 reply.recycle(); 5701 data.recycle(); 5702 } 5703 5704 public boolean getPackageAskScreenCompat(String packageName) throws RemoteException { 5705 Parcel data = Parcel.obtain(); 5706 Parcel reply = Parcel.obtain(); 5707 data.writeInterfaceToken(IActivityManager.descriptor); 5708 data.writeString(packageName); 5709 mRemote.transact(GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0); 5710 reply.readException(); 5711 boolean ask = reply.readInt() != 0; 5712 reply.recycle(); 5713 data.recycle(); 5714 return ask; 5715 } 5716 5717 public void setPackageAskScreenCompat(String packageName, boolean ask) 5718 throws RemoteException { 5719 Parcel data = Parcel.obtain(); 5720 Parcel reply = Parcel.obtain(); 5721 data.writeInterfaceToken(IActivityManager.descriptor); 5722 data.writeString(packageName); 5723 data.writeInt(ask ? 1 : 0); 5724 mRemote.transact(SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0); 5725 reply.readException(); 5726 reply.recycle(); 5727 data.recycle(); 5728 } 5729 5730 public boolean switchUser(int userid) throws RemoteException { 5731 Parcel data = Parcel.obtain(); 5732 Parcel reply = Parcel.obtain(); 5733 data.writeInterfaceToken(IActivityManager.descriptor); 5734 data.writeInt(userid); 5735 mRemote.transact(SWITCH_USER_TRANSACTION, data, reply, 0); 5736 reply.readException(); 5737 boolean result = reply.readInt() != 0; 5738 reply.recycle(); 5739 data.recycle(); 5740 return result; 5741 } 5742 5743 public boolean startUserInBackground(int userid) throws RemoteException { 5744 Parcel data = Parcel.obtain(); 5745 Parcel reply = Parcel.obtain(); 5746 data.writeInterfaceToken(IActivityManager.descriptor); 5747 data.writeInt(userid); 5748 mRemote.transact(START_USER_IN_BACKGROUND_TRANSACTION, data, reply, 0); 5749 reply.readException(); 5750 boolean result = reply.readInt() != 0; 5751 reply.recycle(); 5752 data.recycle(); 5753 return result; 5754 } 5755 5756 public boolean unlockUser(int userId, byte[] token, byte[] secret, IProgressListener listener) 5757 throws RemoteException { 5758 Parcel data = Parcel.obtain(); 5759 Parcel reply = Parcel.obtain(); 5760 data.writeInterfaceToken(IActivityManager.descriptor); 5761 data.writeInt(userId); 5762 data.writeByteArray(token); 5763 data.writeByteArray(secret); 5764 data.writeStrongInterface(listener); 5765 mRemote.transact(IActivityManager.UNLOCK_USER_TRANSACTION, data, reply, 0); 5766 reply.readException(); 5767 boolean result = reply.readInt() != 0; 5768 reply.recycle(); 5769 data.recycle(); 5770 return result; 5771 } 5772 5773 public int stopUser(int userid, boolean force, IStopUserCallback callback) 5774 throws RemoteException { 5775 Parcel data = Parcel.obtain(); 5776 Parcel reply = Parcel.obtain(); 5777 data.writeInterfaceToken(IActivityManager.descriptor); 5778 data.writeInt(userid); 5779 data.writeInt(force ? 1 : 0); 5780 data.writeStrongInterface(callback); 5781 mRemote.transact(STOP_USER_TRANSACTION, data, reply, 0); 5782 reply.readException(); 5783 int result = reply.readInt(); 5784 reply.recycle(); 5785 data.recycle(); 5786 return result; 5787 } 5788 5789 public UserInfo getCurrentUser() throws RemoteException { 5790 Parcel data = Parcel.obtain(); 5791 Parcel reply = Parcel.obtain(); 5792 data.writeInterfaceToken(IActivityManager.descriptor); 5793 mRemote.transact(GET_CURRENT_USER_TRANSACTION, data, reply, 0); 5794 reply.readException(); 5795 UserInfo userInfo = UserInfo.CREATOR.createFromParcel(reply); 5796 reply.recycle(); 5797 data.recycle(); 5798 return userInfo; 5799 } 5800 5801 public boolean isUserRunning(int userid, int flags) throws RemoteException { 5802 Parcel data = Parcel.obtain(); 5803 Parcel reply = Parcel.obtain(); 5804 data.writeInterfaceToken(IActivityManager.descriptor); 5805 data.writeInt(userid); 5806 data.writeInt(flags); 5807 mRemote.transact(IS_USER_RUNNING_TRANSACTION, data, reply, 0); 5808 reply.readException(); 5809 boolean result = reply.readInt() != 0; 5810 reply.recycle(); 5811 data.recycle(); 5812 return result; 5813 } 5814 5815 public int[] getRunningUserIds() throws RemoteException { 5816 Parcel data = Parcel.obtain(); 5817 Parcel reply = Parcel.obtain(); 5818 data.writeInterfaceToken(IActivityManager.descriptor); 5819 mRemote.transact(GET_RUNNING_USER_IDS_TRANSACTION, data, reply, 0); 5820 reply.readException(); 5821 int[] result = reply.createIntArray(); 5822 reply.recycle(); 5823 data.recycle(); 5824 return result; 5825 } 5826 5827 public boolean removeTask(int taskId) throws RemoteException { 5828 Parcel data = Parcel.obtain(); 5829 Parcel reply = Parcel.obtain(); 5830 data.writeInterfaceToken(IActivityManager.descriptor); 5831 data.writeInt(taskId); 5832 mRemote.transact(REMOVE_TASK_TRANSACTION, data, reply, 0); 5833 reply.readException(); 5834 boolean result = reply.readInt() != 0; 5835 reply.recycle(); 5836 data.recycle(); 5837 return result; 5838 } 5839 5840 public void registerProcessObserver(IProcessObserver observer) throws RemoteException { 5841 Parcel data = Parcel.obtain(); 5842 Parcel reply = Parcel.obtain(); 5843 data.writeInterfaceToken(IActivityManager.descriptor); 5844 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 5845 mRemote.transact(REGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0); 5846 reply.readException(); 5847 data.recycle(); 5848 reply.recycle(); 5849 } 5850 5851 public void unregisterProcessObserver(IProcessObserver observer) throws RemoteException { 5852 Parcel data = Parcel.obtain(); 5853 Parcel reply = Parcel.obtain(); 5854 data.writeInterfaceToken(IActivityManager.descriptor); 5855 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 5856 mRemote.transact(UNREGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0); 5857 reply.readException(); 5858 data.recycle(); 5859 reply.recycle(); 5860 } 5861 5862 public void registerUidObserver(IUidObserver observer, int which) throws RemoteException { 5863 Parcel data = Parcel.obtain(); 5864 Parcel reply = Parcel.obtain(); 5865 data.writeInterfaceToken(IActivityManager.descriptor); 5866 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 5867 data.writeInt(which); 5868 mRemote.transact(REGISTER_UID_OBSERVER_TRANSACTION, data, reply, 0); 5869 reply.readException(); 5870 data.recycle(); 5871 reply.recycle(); 5872 } 5873 5874 public void unregisterUidObserver(IUidObserver observer) throws RemoteException { 5875 Parcel data = Parcel.obtain(); 5876 Parcel reply = Parcel.obtain(); 5877 data.writeInterfaceToken(IActivityManager.descriptor); 5878 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 5879 mRemote.transact(UNREGISTER_UID_OBSERVER_TRANSACTION, data, reply, 0); 5880 reply.readException(); 5881 data.recycle(); 5882 reply.recycle(); 5883 } 5884 5885 public boolean isIntentSenderTargetedToPackage(IIntentSender sender) throws RemoteException { 5886 Parcel data = Parcel.obtain(); 5887 Parcel reply = Parcel.obtain(); 5888 data.writeInterfaceToken(IActivityManager.descriptor); 5889 data.writeStrongBinder(sender.asBinder()); 5890 mRemote.transact(IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION, data, reply, 0); 5891 reply.readException(); 5892 boolean res = reply.readInt() != 0; 5893 data.recycle(); 5894 reply.recycle(); 5895 return res; 5896 } 5897 5898 public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException { 5899 Parcel data = Parcel.obtain(); 5900 Parcel reply = Parcel.obtain(); 5901 data.writeInterfaceToken(IActivityManager.descriptor); 5902 data.writeStrongBinder(sender.asBinder()); 5903 mRemote.transact(IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION, data, reply, 0); 5904 reply.readException(); 5905 boolean res = reply.readInt() != 0; 5906 data.recycle(); 5907 reply.recycle(); 5908 return res; 5909 } 5910 5911 public Intent getIntentForIntentSender(IIntentSender sender) throws RemoteException { 5912 Parcel data = Parcel.obtain(); 5913 Parcel reply = Parcel.obtain(); 5914 data.writeInterfaceToken(IActivityManager.descriptor); 5915 data.writeStrongBinder(sender.asBinder()); 5916 mRemote.transact(GET_INTENT_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 5917 reply.readException(); 5918 Intent res = reply.readInt() != 0 5919 ? Intent.CREATOR.createFromParcel(reply) : null; 5920 data.recycle(); 5921 reply.recycle(); 5922 return res; 5923 } 5924 5925 public String getTagForIntentSender(IIntentSender sender, String prefix) 5926 throws RemoteException { 5927 Parcel data = Parcel.obtain(); 5928 Parcel reply = Parcel.obtain(); 5929 data.writeInterfaceToken(IActivityManager.descriptor); 5930 data.writeStrongBinder(sender.asBinder()); 5931 data.writeString(prefix); 5932 mRemote.transact(GET_TAG_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 5933 reply.readException(); 5934 String res = reply.readString(); 5935 data.recycle(); 5936 reply.recycle(); 5937 return res; 5938 } 5939 5940 public void updatePersistentConfiguration(Configuration values) throws RemoteException 5941 { 5942 Parcel data = Parcel.obtain(); 5943 Parcel reply = Parcel.obtain(); 5944 data.writeInterfaceToken(IActivityManager.descriptor); 5945 values.writeToParcel(data, 0); 5946 mRemote.transact(UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION, data, reply, 0); 5947 reply.readException(); 5948 data.recycle(); 5949 reply.recycle(); 5950 } 5951 5952 public long[] getProcessPss(int[] pids) throws RemoteException { 5953 Parcel data = Parcel.obtain(); 5954 Parcel reply = Parcel.obtain(); 5955 data.writeInterfaceToken(IActivityManager.descriptor); 5956 data.writeIntArray(pids); 5957 mRemote.transact(GET_PROCESS_PSS_TRANSACTION, data, reply, 0); 5958 reply.readException(); 5959 long[] res = reply.createLongArray(); 5960 data.recycle(); 5961 reply.recycle(); 5962 return res; 5963 } 5964 5965 public void showBootMessage(CharSequence msg, boolean always) throws RemoteException { 5966 Parcel data = Parcel.obtain(); 5967 Parcel reply = Parcel.obtain(); 5968 data.writeInterfaceToken(IActivityManager.descriptor); 5969 TextUtils.writeToParcel(msg, data, 0); 5970 data.writeInt(always ? 1 : 0); 5971 mRemote.transact(SHOW_BOOT_MESSAGE_TRANSACTION, data, reply, 0); 5972 reply.readException(); 5973 data.recycle(); 5974 reply.recycle(); 5975 } 5976 5977 public void keyguardWaitingForActivityDrawn() throws RemoteException { 5978 Parcel data = Parcel.obtain(); 5979 Parcel reply = Parcel.obtain(); 5980 data.writeInterfaceToken(IActivityManager.descriptor); 5981 mRemote.transact(KEYGUARD_WAITING_FOR_ACTIVITY_DRAWN_TRANSACTION, data, reply, 0); 5982 reply.readException(); 5983 data.recycle(); 5984 reply.recycle(); 5985 } 5986 5987 public void keyguardGoingAway(int flags) 5988 throws RemoteException { 5989 Parcel data = Parcel.obtain(); 5990 Parcel reply = Parcel.obtain(); 5991 data.writeInterfaceToken(IActivityManager.descriptor); 5992 data.writeInt(flags); 5993 mRemote.transact(KEYGUARD_GOING_AWAY_TRANSACTION, data, reply, 0); 5994 reply.readException(); 5995 data.recycle(); 5996 reply.recycle(); 5997 } 5998 5999 public boolean shouldUpRecreateTask(IBinder token, String destAffinity) 6000 throws RemoteException { 6001 Parcel data = Parcel.obtain(); 6002 Parcel reply = Parcel.obtain(); 6003 data.writeInterfaceToken(IActivityManager.descriptor); 6004 data.writeStrongBinder(token); 6005 data.writeString(destAffinity); 6006 mRemote.transact(SHOULD_UP_RECREATE_TASK_TRANSACTION, data, reply, 0); 6007 reply.readException(); 6008 boolean result = reply.readInt() != 0; 6009 data.recycle(); 6010 reply.recycle(); 6011 return result; 6012 } 6013 6014 public boolean navigateUpTo(IBinder token, Intent target, int resultCode, Intent resultData) 6015 throws RemoteException { 6016 Parcel data = Parcel.obtain(); 6017 Parcel reply = Parcel.obtain(); 6018 data.writeInterfaceToken(IActivityManager.descriptor); 6019 data.writeStrongBinder(token); 6020 target.writeToParcel(data, 0); 6021 data.writeInt(resultCode); 6022 if (resultData != null) { 6023 data.writeInt(1); 6024 resultData.writeToParcel(data, 0); 6025 } else { 6026 data.writeInt(0); 6027 } 6028 mRemote.transact(NAVIGATE_UP_TO_TRANSACTION, data, reply, 0); 6029 reply.readException(); 6030 boolean result = reply.readInt() != 0; 6031 data.recycle(); 6032 reply.recycle(); 6033 return result; 6034 } 6035 6036 public int getLaunchedFromUid(IBinder activityToken) throws RemoteException { 6037 Parcel data = Parcel.obtain(); 6038 Parcel reply = Parcel.obtain(); 6039 data.writeInterfaceToken(IActivityManager.descriptor); 6040 data.writeStrongBinder(activityToken); 6041 mRemote.transact(GET_LAUNCHED_FROM_UID_TRANSACTION, data, reply, 0); 6042 reply.readException(); 6043 int result = reply.readInt(); 6044 data.recycle(); 6045 reply.recycle(); 6046 return result; 6047 } 6048 6049 public String getLaunchedFromPackage(IBinder activityToken) throws RemoteException { 6050 Parcel data = Parcel.obtain(); 6051 Parcel reply = Parcel.obtain(); 6052 data.writeInterfaceToken(IActivityManager.descriptor); 6053 data.writeStrongBinder(activityToken); 6054 mRemote.transact(GET_LAUNCHED_FROM_PACKAGE_TRANSACTION, data, reply, 0); 6055 reply.readException(); 6056 String result = reply.readString(); 6057 data.recycle(); 6058 reply.recycle(); 6059 return result; 6060 } 6061 6062 public void registerUserSwitchObserver(IUserSwitchObserver observer, 6063 String name) throws RemoteException { 6064 Parcel data = Parcel.obtain(); 6065 Parcel reply = Parcel.obtain(); 6066 data.writeInterfaceToken(IActivityManager.descriptor); 6067 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 6068 data.writeString(name); 6069 mRemote.transact(REGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0); 6070 reply.readException(); 6071 data.recycle(); 6072 reply.recycle(); 6073 } 6074 6075 public void unregisterUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException { 6076 Parcel data = Parcel.obtain(); 6077 Parcel reply = Parcel.obtain(); 6078 data.writeInterfaceToken(IActivityManager.descriptor); 6079 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 6080 mRemote.transact(UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0); 6081 reply.readException(); 6082 data.recycle(); 6083 reply.recycle(); 6084 } 6085 6086 public void requestBugReport(@ActivityManager.BugreportMode int bugreportType) 6087 throws RemoteException { 6088 Parcel data = Parcel.obtain(); 6089 Parcel reply = Parcel.obtain(); 6090 data.writeInterfaceToken(IActivityManager.descriptor); 6091 data.writeInt(bugreportType); 6092 mRemote.transact(REQUEST_BUG_REPORT_TRANSACTION, data, reply, 0); 6093 reply.readException(); 6094 data.recycle(); 6095 reply.recycle(); 6096 } 6097 6098 public long inputDispatchingTimedOut(int pid, boolean aboveSystem, String reason) 6099 throws RemoteException { 6100 Parcel data = Parcel.obtain(); 6101 Parcel reply = Parcel.obtain(); 6102 data.writeInterfaceToken(IActivityManager.descriptor); 6103 data.writeInt(pid); 6104 data.writeInt(aboveSystem ? 1 : 0); 6105 data.writeString(reason); 6106 mRemote.transact(INPUT_DISPATCHING_TIMED_OUT_TRANSACTION, data, reply, 0); 6107 reply.readException(); 6108 long res = reply.readInt(); 6109 data.recycle(); 6110 reply.recycle(); 6111 return res; 6112 } 6113 6114 public Bundle getAssistContextExtras(int requestType) throws RemoteException { 6115 Parcel data = Parcel.obtain(); 6116 Parcel reply = Parcel.obtain(); 6117 data.writeInterfaceToken(IActivityManager.descriptor); 6118 data.writeInt(requestType); 6119 mRemote.transact(GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0); 6120 reply.readException(); 6121 Bundle res = reply.readBundle(); 6122 data.recycle(); 6123 reply.recycle(); 6124 return res; 6125 } 6126 6127 public boolean requestAssistContextExtras(int requestType, IResultReceiver receiver, 6128 Bundle receiverExtras, 6129 IBinder activityToken, boolean focused, boolean newSessionId) throws RemoteException { 6130 Parcel data = Parcel.obtain(); 6131 Parcel reply = Parcel.obtain(); 6132 data.writeInterfaceToken(IActivityManager.descriptor); 6133 data.writeInt(requestType); 6134 data.writeStrongBinder(receiver.asBinder()); 6135 data.writeBundle(receiverExtras); 6136 data.writeStrongBinder(activityToken); 6137 data.writeInt(focused ? 1 : 0); 6138 data.writeInt(newSessionId ? 1 : 0); 6139 mRemote.transact(REQUEST_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0); 6140 reply.readException(); 6141 boolean res = reply.readInt() != 0; 6142 data.recycle(); 6143 reply.recycle(); 6144 return res; 6145 } 6146 6147 public void reportAssistContextExtras(IBinder token, Bundle extras, AssistStructure structure, 6148 AssistContent content, Uri referrer) throws RemoteException { 6149 Parcel data = Parcel.obtain(); 6150 Parcel reply = Parcel.obtain(); 6151 data.writeInterfaceToken(IActivityManager.descriptor); 6152 data.writeStrongBinder(token); 6153 data.writeBundle(extras); 6154 structure.writeToParcel(data, 0); 6155 content.writeToParcel(data, 0); 6156 if (referrer != null) { 6157 data.writeInt(1); 6158 referrer.writeToParcel(data, 0); 6159 } else { 6160 data.writeInt(0); 6161 } 6162 mRemote.transact(REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0); 6163 reply.readException(); 6164 data.recycle(); 6165 reply.recycle(); 6166 } 6167 6168 public boolean launchAssistIntent(Intent intent, int requestType, String hint, int userHandle, 6169 Bundle args) throws RemoteException { 6170 Parcel data = Parcel.obtain(); 6171 Parcel reply = Parcel.obtain(); 6172 data.writeInterfaceToken(IActivityManager.descriptor); 6173 intent.writeToParcel(data, 0); 6174 data.writeInt(requestType); 6175 data.writeString(hint); 6176 data.writeInt(userHandle); 6177 data.writeBundle(args); 6178 mRemote.transact(LAUNCH_ASSIST_INTENT_TRANSACTION, data, reply, 0); 6179 reply.readException(); 6180 boolean res = reply.readInt() != 0; 6181 data.recycle(); 6182 reply.recycle(); 6183 return res; 6184 } 6185 6186 public boolean isAssistDataAllowedOnCurrentActivity() throws RemoteException { 6187 Parcel data = Parcel.obtain(); 6188 Parcel reply = Parcel.obtain(); 6189 data.writeInterfaceToken(IActivityManager.descriptor); 6190 mRemote.transact(IS_SCREEN_CAPTURE_ALLOWED_ON_CURRENT_ACTIVITY_TRANSACTION, data, reply, 0); 6191 reply.readException(); 6192 boolean res = reply.readInt() != 0; 6193 data.recycle(); 6194 reply.recycle(); 6195 return res; 6196 } 6197 6198 public boolean showAssistFromActivity(IBinder token, Bundle args) throws RemoteException { 6199 Parcel data = Parcel.obtain(); 6200 Parcel reply = Parcel.obtain(); 6201 data.writeInterfaceToken(IActivityManager.descriptor); 6202 data.writeStrongBinder(token); 6203 data.writeBundle(args); 6204 mRemote.transact(SHOW_ASSIST_FROM_ACTIVITY_TRANSACTION, data, reply, 0); 6205 reply.readException(); 6206 boolean res = reply.readInt() != 0; 6207 data.recycle(); 6208 reply.recycle(); 6209 return res; 6210 } 6211 6212 public void killUid(int appId, int userId, String reason) throws RemoteException { 6213 Parcel data = Parcel.obtain(); 6214 Parcel reply = Parcel.obtain(); 6215 data.writeInterfaceToken(IActivityManager.descriptor); 6216 data.writeInt(appId); 6217 data.writeInt(userId); 6218 data.writeString(reason); 6219 mRemote.transact(KILL_UID_TRANSACTION, data, reply, 0); 6220 reply.readException(); 6221 data.recycle(); 6222 reply.recycle(); 6223 } 6224 6225 public void hang(IBinder who, boolean allowRestart) throws RemoteException { 6226 Parcel data = Parcel.obtain(); 6227 Parcel reply = Parcel.obtain(); 6228 data.writeInterfaceToken(IActivityManager.descriptor); 6229 data.writeStrongBinder(who); 6230 data.writeInt(allowRestart ? 1 : 0); 6231 mRemote.transact(HANG_TRANSACTION, data, reply, 0); 6232 reply.readException(); 6233 data.recycle(); 6234 reply.recycle(); 6235 } 6236 6237 public void reportActivityFullyDrawn(IBinder token) throws RemoteException { 6238 Parcel data = Parcel.obtain(); 6239 Parcel reply = Parcel.obtain(); 6240 data.writeInterfaceToken(IActivityManager.descriptor); 6241 data.writeStrongBinder(token); 6242 mRemote.transact(REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION, data, reply, 0); 6243 reply.readException(); 6244 data.recycle(); 6245 reply.recycle(); 6246 } 6247 6248 public void notifyActivityDrawn(IBinder token) throws RemoteException { 6249 Parcel data = Parcel.obtain(); 6250 Parcel reply = Parcel.obtain(); 6251 data.writeInterfaceToken(IActivityManager.descriptor); 6252 data.writeStrongBinder(token); 6253 mRemote.transact(NOTIFY_ACTIVITY_DRAWN_TRANSACTION, data, reply, 0); 6254 reply.readException(); 6255 data.recycle(); 6256 reply.recycle(); 6257 } 6258 6259 public void restart() throws RemoteException { 6260 Parcel data = Parcel.obtain(); 6261 Parcel reply = Parcel.obtain(); 6262 data.writeInterfaceToken(IActivityManager.descriptor); 6263 mRemote.transact(RESTART_TRANSACTION, data, reply, 0); 6264 reply.readException(); 6265 data.recycle(); 6266 reply.recycle(); 6267 } 6268 6269 public void performIdleMaintenance() throws RemoteException { 6270 Parcel data = Parcel.obtain(); 6271 Parcel reply = Parcel.obtain(); 6272 data.writeInterfaceToken(IActivityManager.descriptor); 6273 mRemote.transact(PERFORM_IDLE_MAINTENANCE_TRANSACTION, data, reply, 0); 6274 reply.readException(); 6275 data.recycle(); 6276 reply.recycle(); 6277 } 6278 6279 public void sendIdleJobTrigger() throws RemoteException { 6280 Parcel data = Parcel.obtain(); 6281 Parcel reply = Parcel.obtain(); 6282 data.writeInterfaceToken(IActivityManager.descriptor); 6283 mRemote.transact(SEND_IDLE_JOB_TRIGGER_TRANSACTION, data, reply, 0); 6284 reply.readException(); 6285 data.recycle(); 6286 reply.recycle(); 6287 } 6288 6289 public IActivityContainer createVirtualActivityContainer(IBinder parentActivityToken, 6290 IActivityContainerCallback callback) throws RemoteException { 6291 Parcel data = Parcel.obtain(); 6292 Parcel reply = Parcel.obtain(); 6293 data.writeInterfaceToken(IActivityManager.descriptor); 6294 data.writeStrongBinder(parentActivityToken); 6295 data.writeStrongBinder(callback == null ? null : callback.asBinder()); 6296 mRemote.transact(CREATE_VIRTUAL_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); 6297 reply.readException(); 6298 final int result = reply.readInt(); 6299 final IActivityContainer res; 6300 if (result == 1) { 6301 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder()); 6302 } else { 6303 res = null; 6304 } 6305 data.recycle(); 6306 reply.recycle(); 6307 return res; 6308 } 6309 6310 public void deleteActivityContainer(IActivityContainer activityContainer) 6311 throws RemoteException { 6312 Parcel data = Parcel.obtain(); 6313 Parcel reply = Parcel.obtain(); 6314 data.writeInterfaceToken(IActivityManager.descriptor); 6315 data.writeStrongBinder(activityContainer.asBinder()); 6316 mRemote.transact(DELETE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); 6317 reply.readException(); 6318 data.recycle(); 6319 reply.recycle(); 6320 } 6321 6322 public boolean startBinderTracking() throws RemoteException { 6323 Parcel data = Parcel.obtain(); 6324 Parcel reply = Parcel.obtain(); 6325 data.writeInterfaceToken(IActivityManager.descriptor); 6326 mRemote.transact(START_BINDER_TRACKING_TRANSACTION, data, reply, 0); 6327 reply.readException(); 6328 boolean res = reply.readInt() != 0; 6329 reply.recycle(); 6330 data.recycle(); 6331 return res; 6332 } 6333 6334 public boolean stopBinderTrackingAndDump(ParcelFileDescriptor fd) throws RemoteException { 6335 Parcel data = Parcel.obtain(); 6336 Parcel reply = Parcel.obtain(); 6337 data.writeInterfaceToken(IActivityManager.descriptor); 6338 if (fd != null) { 6339 data.writeInt(1); 6340 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 6341 } else { 6342 data.writeInt(0); 6343 } 6344 mRemote.transact(STOP_BINDER_TRACKING_AND_DUMP_TRANSACTION, data, reply, 0); 6345 reply.readException(); 6346 boolean res = reply.readInt() != 0; 6347 reply.recycle(); 6348 data.recycle(); 6349 return res; 6350 } 6351 6352 public int setVrMode(IBinder token, boolean enabled, ComponentName packageName) 6353 throws RemoteException { 6354 Parcel data = Parcel.obtain(); 6355 Parcel reply = Parcel.obtain(); 6356 data.writeInterfaceToken(IActivityManager.descriptor); 6357 data.writeStrongBinder(token); 6358 data.writeInt(enabled ? 1 : 0); 6359 packageName.writeToParcel(data, 0); 6360 mRemote.transact(SET_VR_MODE_TRANSACTION, data, reply, 0); 6361 reply.readException(); 6362 int res = reply.readInt(); 6363 data.recycle(); 6364 reply.recycle(); 6365 return res; 6366 } 6367 6368 public boolean isVrModePackageEnabled(ComponentName packageName) 6369 throws RemoteException { 6370 Parcel data = Parcel.obtain(); 6371 Parcel reply = Parcel.obtain(); 6372 data.writeInterfaceToken(IActivityManager.descriptor); 6373 packageName.writeToParcel(data, 0); 6374 mRemote.transact(IS_VR_PACKAGE_ENABLED_TRANSACTION, data, reply, 0); 6375 reply.readException(); 6376 int res = reply.readInt(); 6377 data.recycle(); 6378 reply.recycle(); 6379 return res == 1; 6380 } 6381 6382 @Override 6383 public IActivityContainer createStackOnDisplay(int displayId) throws RemoteException { 6384 Parcel data = Parcel.obtain(); 6385 Parcel reply = Parcel.obtain(); 6386 data.writeInterfaceToken(IActivityManager.descriptor); 6387 data.writeInt(displayId); 6388 mRemote.transact(CREATE_STACK_ON_DISPLAY, data, reply, 0); 6389 reply.readException(); 6390 final int result = reply.readInt(); 6391 final IActivityContainer res; 6392 if (result == 1) { 6393 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder()); 6394 } else { 6395 res = null; 6396 } 6397 data.recycle(); 6398 reply.recycle(); 6399 return res; 6400 } 6401 6402 @Override 6403 public int getActivityDisplayId(IBinder activityToken) 6404 throws RemoteException { 6405 Parcel data = Parcel.obtain(); 6406 Parcel reply = Parcel.obtain(); 6407 data.writeInterfaceToken(IActivityManager.descriptor); 6408 data.writeStrongBinder(activityToken); 6409 mRemote.transact(GET_ACTIVITY_DISPLAY_ID_TRANSACTION, data, reply, 0); 6410 reply.readException(); 6411 final int displayId = reply.readInt(); 6412 data.recycle(); 6413 reply.recycle(); 6414 return displayId; 6415 } 6416 6417 @Override 6418 public void startLockTaskMode(int taskId) throws RemoteException { 6419 Parcel data = Parcel.obtain(); 6420 Parcel reply = Parcel.obtain(); 6421 data.writeInterfaceToken(IActivityManager.descriptor); 6422 data.writeInt(taskId); 6423 mRemote.transact(START_LOCK_TASK_BY_TASK_ID_TRANSACTION, data, reply, 0); 6424 reply.readException(); 6425 data.recycle(); 6426 reply.recycle(); 6427 } 6428 6429 @Override 6430 public void startLockTaskMode(IBinder token) throws RemoteException { 6431 Parcel data = Parcel.obtain(); 6432 Parcel reply = Parcel.obtain(); 6433 data.writeInterfaceToken(IActivityManager.descriptor); 6434 data.writeStrongBinder(token); 6435 mRemote.transact(START_LOCK_TASK_BY_TOKEN_TRANSACTION, data, reply, 0); 6436 reply.readException(); 6437 data.recycle(); 6438 reply.recycle(); 6439 } 6440 6441 @Override 6442 public void startSystemLockTaskMode(int taskId) throws RemoteException { 6443 Parcel data = Parcel.obtain(); 6444 Parcel reply = Parcel.obtain(); 6445 data.writeInterfaceToken(IActivityManager.descriptor); 6446 data.writeInt(taskId); 6447 mRemote.transact(START_SYSTEM_LOCK_TASK_TRANSACTION, data, reply, 0); 6448 reply.readException(); 6449 data.recycle(); 6450 reply.recycle(); 6451 } 6452 6453 @Override 6454 public void stopLockTaskMode() throws RemoteException { 6455 Parcel data = Parcel.obtain(); 6456 Parcel reply = Parcel.obtain(); 6457 data.writeInterfaceToken(IActivityManager.descriptor); 6458 mRemote.transact(STOP_LOCK_TASK_MODE_TRANSACTION, data, reply, 0); 6459 reply.readException(); 6460 data.recycle(); 6461 reply.recycle(); 6462 } 6463 6464 @Override 6465 public void stopSystemLockTaskMode() throws RemoteException { 6466 Parcel data = Parcel.obtain(); 6467 Parcel reply = Parcel.obtain(); 6468 data.writeInterfaceToken(IActivityManager.descriptor); 6469 mRemote.transact(STOP_SYSTEM_LOCK_TASK_TRANSACTION, data, reply, 0); 6470 reply.readException(); 6471 data.recycle(); 6472 reply.recycle(); 6473 } 6474 6475 @Override 6476 public boolean isInLockTaskMode() throws RemoteException { 6477 Parcel data = Parcel.obtain(); 6478 Parcel reply = Parcel.obtain(); 6479 data.writeInterfaceToken(IActivityManager.descriptor); 6480 mRemote.transact(IS_IN_LOCK_TASK_MODE_TRANSACTION, data, reply, 0); 6481 reply.readException(); 6482 boolean isInLockTaskMode = reply.readInt() == 1; 6483 data.recycle(); 6484 reply.recycle(); 6485 return isInLockTaskMode; 6486 } 6487 6488 @Override 6489 public int getLockTaskModeState() throws RemoteException { 6490 Parcel data = Parcel.obtain(); 6491 Parcel reply = Parcel.obtain(); 6492 data.writeInterfaceToken(IActivityManager.descriptor); 6493 mRemote.transact(GET_LOCK_TASK_MODE_STATE_TRANSACTION, data, reply, 0); 6494 reply.readException(); 6495 int lockTaskModeState = reply.readInt(); 6496 data.recycle(); 6497 reply.recycle(); 6498 return lockTaskModeState; 6499 } 6500 6501 @Override 6502 public void showLockTaskEscapeMessage(IBinder token) throws RemoteException { 6503 Parcel data = Parcel.obtain(); 6504 Parcel reply = Parcel.obtain(); 6505 data.writeInterfaceToken(IActivityManager.descriptor); 6506 data.writeStrongBinder(token); 6507 mRemote.transact(SHOW_LOCK_TASK_ESCAPE_MESSAGE_TRANSACTION, data, reply, 6508 IBinder.FLAG_ONEWAY); 6509 reply.readException(); 6510 data.recycle(); 6511 reply.recycle(); 6512 } 6513 6514 @Override 6515 public void setTaskDescription(IBinder token, ActivityManager.TaskDescription values) 6516 throws RemoteException { 6517 Parcel data = Parcel.obtain(); 6518 Parcel reply = Parcel.obtain(); 6519 data.writeInterfaceToken(IActivityManager.descriptor); 6520 data.writeStrongBinder(token); 6521 values.writeToParcel(data, 0); 6522 mRemote.transact(SET_TASK_DESCRIPTION_TRANSACTION, data, reply, 0); 6523 reply.readException(); 6524 data.recycle(); 6525 reply.recycle(); 6526 } 6527 6528 @Override 6529 public void setTaskResizeable(int taskId, int resizeableMode) throws RemoteException { 6530 Parcel data = Parcel.obtain(); 6531 Parcel reply = Parcel.obtain(); 6532 data.writeInterfaceToken(IActivityManager.descriptor); 6533 data.writeInt(taskId); 6534 data.writeInt(resizeableMode); 6535 mRemote.transact(SET_TASK_RESIZEABLE_TRANSACTION, data, reply, 0); 6536 reply.readException(); 6537 data.recycle(); 6538 reply.recycle(); 6539 } 6540 6541 @Override 6542 public void resizeTask(int taskId, Rect r, int resizeMode) throws RemoteException 6543 { 6544 Parcel data = Parcel.obtain(); 6545 Parcel reply = Parcel.obtain(); 6546 data.writeInterfaceToken(IActivityManager.descriptor); 6547 data.writeInt(taskId); 6548 data.writeInt(resizeMode); 6549 r.writeToParcel(data, 0); 6550 mRemote.transact(RESIZE_TASK_TRANSACTION, data, reply, 0); 6551 reply.readException(); 6552 data.recycle(); 6553 reply.recycle(); 6554 } 6555 6556 @Override 6557 public Rect getTaskBounds(int taskId) throws RemoteException 6558 { 6559 Parcel data = Parcel.obtain(); 6560 Parcel reply = Parcel.obtain(); 6561 data.writeInterfaceToken(IActivityManager.descriptor); 6562 data.writeInt(taskId); 6563 mRemote.transact(GET_TASK_BOUNDS_TRANSACTION, data, reply, 0); 6564 reply.readException(); 6565 Rect rect = Rect.CREATOR.createFromParcel(reply); 6566 data.recycle(); 6567 reply.recycle(); 6568 return rect; 6569 } 6570 6571 @Override 6572 public Bitmap getTaskDescriptionIcon(String filename, int userId) throws RemoteException { 6573 Parcel data = Parcel.obtain(); 6574 Parcel reply = Parcel.obtain(); 6575 data.writeInterfaceToken(IActivityManager.descriptor); 6576 data.writeString(filename); 6577 data.writeInt(userId); 6578 mRemote.transact(GET_TASK_DESCRIPTION_ICON_TRANSACTION, data, reply, 0); 6579 reply.readException(); 6580 final Bitmap icon = reply.readInt() == 0 ? null : Bitmap.CREATOR.createFromParcel(reply); 6581 data.recycle(); 6582 reply.recycle(); 6583 return icon; 6584 } 6585 6586 @Override 6587 public void startInPlaceAnimationOnFrontMostApplication(ActivityOptions options) 6588 throws RemoteException { 6589 Parcel data = Parcel.obtain(); 6590 Parcel reply = Parcel.obtain(); 6591 data.writeInterfaceToken(IActivityManager.descriptor); 6592 if (options == null) { 6593 data.writeInt(0); 6594 } else { 6595 data.writeInt(1); 6596 data.writeBundle(options.toBundle()); 6597 } 6598 mRemote.transact(START_IN_PLACE_ANIMATION_TRANSACTION, data, reply, 0); 6599 reply.readException(); 6600 data.recycle(); 6601 reply.recycle(); 6602 } 6603 6604 @Override 6605 public boolean requestVisibleBehind(IBinder token, boolean visible) throws RemoteException { 6606 Parcel data = Parcel.obtain(); 6607 Parcel reply = Parcel.obtain(); 6608 data.writeInterfaceToken(IActivityManager.descriptor); 6609 data.writeStrongBinder(token); 6610 data.writeInt(visible ? 1 : 0); 6611 mRemote.transact(REQUEST_VISIBLE_BEHIND_TRANSACTION, data, reply, 0); 6612 reply.readException(); 6613 boolean success = reply.readInt() > 0; 6614 data.recycle(); 6615 reply.recycle(); 6616 return success; 6617 } 6618 6619 @Override 6620 public boolean isBackgroundVisibleBehind(IBinder token) throws RemoteException { 6621 Parcel data = Parcel.obtain(); 6622 Parcel reply = Parcel.obtain(); 6623 data.writeInterfaceToken(IActivityManager.descriptor); 6624 data.writeStrongBinder(token); 6625 mRemote.transact(IS_BACKGROUND_VISIBLE_BEHIND_TRANSACTION, data, reply, 0); 6626 reply.readException(); 6627 final boolean visible = reply.readInt() > 0; 6628 data.recycle(); 6629 reply.recycle(); 6630 return visible; 6631 } 6632 6633 @Override 6634 public void backgroundResourcesReleased(IBinder token) throws RemoteException { 6635 Parcel data = Parcel.obtain(); 6636 Parcel reply = Parcel.obtain(); 6637 data.writeInterfaceToken(IActivityManager.descriptor); 6638 data.writeStrongBinder(token); 6639 mRemote.transact(BACKGROUND_RESOURCES_RELEASED_TRANSACTION, data, reply, 0); 6640 reply.readException(); 6641 data.recycle(); 6642 reply.recycle(); 6643 } 6644 6645 @Override 6646 public void notifyLaunchTaskBehindComplete(IBinder token) throws RemoteException { 6647 Parcel data = Parcel.obtain(); 6648 Parcel reply = Parcel.obtain(); 6649 data.writeInterfaceToken(IActivityManager.descriptor); 6650 data.writeStrongBinder(token); 6651 mRemote.transact(NOTIFY_LAUNCH_TASK_BEHIND_COMPLETE_TRANSACTION, data, reply, 0); 6652 reply.readException(); 6653 data.recycle(); 6654 reply.recycle(); 6655 } 6656 6657 @Override 6658 public void notifyEnterAnimationComplete(IBinder token) throws RemoteException { 6659 Parcel data = Parcel.obtain(); 6660 Parcel reply = Parcel.obtain(); 6661 data.writeInterfaceToken(IActivityManager.descriptor); 6662 data.writeStrongBinder(token); 6663 mRemote.transact(NOTIFY_ENTER_ANIMATION_COMPLETE_TRANSACTION, data, reply, 0); 6664 reply.readException(); 6665 data.recycle(); 6666 reply.recycle(); 6667 } 6668 6669 @Override 6670 public void bootAnimationComplete() throws RemoteException { 6671 Parcel data = Parcel.obtain(); 6672 Parcel reply = Parcel.obtain(); 6673 data.writeInterfaceToken(IActivityManager.descriptor); 6674 mRemote.transact(BOOT_ANIMATION_COMPLETE_TRANSACTION, data, reply, 0); 6675 reply.readException(); 6676 data.recycle(); 6677 reply.recycle(); 6678 } 6679 6680 @Override 6681 public void notifyCleartextNetwork(int uid, byte[] firstPacket) throws RemoteException { 6682 Parcel data = Parcel.obtain(); 6683 Parcel reply = Parcel.obtain(); 6684 data.writeInterfaceToken(IActivityManager.descriptor); 6685 data.writeInt(uid); 6686 data.writeByteArray(firstPacket); 6687 mRemote.transact(NOTIFY_CLEARTEXT_NETWORK_TRANSACTION, data, reply, 0); 6688 reply.readException(); 6689 data.recycle(); 6690 reply.recycle(); 6691 } 6692 6693 @Override 6694 public void setDumpHeapDebugLimit(String processName, int uid, long maxMemSize, 6695 String reportPackage) throws RemoteException { 6696 Parcel data = Parcel.obtain(); 6697 Parcel reply = Parcel.obtain(); 6698 data.writeInterfaceToken(IActivityManager.descriptor); 6699 data.writeString(processName); 6700 data.writeInt(uid); 6701 data.writeLong(maxMemSize); 6702 data.writeString(reportPackage); 6703 mRemote.transact(SET_DUMP_HEAP_DEBUG_LIMIT_TRANSACTION, data, reply, 0); 6704 reply.readException(); 6705 data.recycle(); 6706 reply.recycle(); 6707 } 6708 6709 @Override 6710 public void dumpHeapFinished(String path) throws RemoteException { 6711 Parcel data = Parcel.obtain(); 6712 Parcel reply = Parcel.obtain(); 6713 data.writeInterfaceToken(IActivityManager.descriptor); 6714 data.writeString(path); 6715 mRemote.transact(DUMP_HEAP_FINISHED_TRANSACTION, data, reply, 0); 6716 reply.readException(); 6717 data.recycle(); 6718 reply.recycle(); 6719 } 6720 6721 @Override 6722 public void setVoiceKeepAwake(IVoiceInteractionSession session, boolean keepAwake) 6723 throws RemoteException { 6724 Parcel data = Parcel.obtain(); 6725 Parcel reply = Parcel.obtain(); 6726 data.writeInterfaceToken(IActivityManager.descriptor); 6727 data.writeStrongBinder(session.asBinder()); 6728 data.writeInt(keepAwake ? 1 : 0); 6729 mRemote.transact(SET_VOICE_KEEP_AWAKE_TRANSACTION, data, reply, 0); 6730 reply.readException(); 6731 data.recycle(); 6732 reply.recycle(); 6733 } 6734 6735 @Override 6736 public void updateLockTaskPackages(int userId, String[] packages) throws RemoteException { 6737 Parcel data = Parcel.obtain(); 6738 Parcel reply = Parcel.obtain(); 6739 data.writeInterfaceToken(IActivityManager.descriptor); 6740 data.writeInt(userId); 6741 data.writeStringArray(packages); 6742 mRemote.transact(UPDATE_LOCK_TASK_PACKAGES_TRANSACTION, data, reply, 0); 6743 reply.readException(); 6744 data.recycle(); 6745 reply.recycle(); 6746 } 6747 6748 @Override 6749 public void updateDeviceOwner(String packageName) throws RemoteException { 6750 Parcel data = Parcel.obtain(); 6751 Parcel reply = Parcel.obtain(); 6752 data.writeInterfaceToken(IActivityManager.descriptor); 6753 data.writeString(packageName); 6754 mRemote.transact(UPDATE_DEVICE_OWNER_TRANSACTION, data, reply, 0); 6755 reply.readException(); 6756 data.recycle(); 6757 reply.recycle(); 6758 } 6759 6760 @Override 6761 public int getPackageProcessState(String packageName, String callingPackage) 6762 throws RemoteException { 6763 Parcel data = Parcel.obtain(); 6764 Parcel reply = Parcel.obtain(); 6765 data.writeInterfaceToken(IActivityManager.descriptor); 6766 data.writeString(packageName); 6767 data.writeString(callingPackage); 6768 mRemote.transact(GET_PACKAGE_PROCESS_STATE_TRANSACTION, data, reply, 0); 6769 reply.readException(); 6770 int res = reply.readInt(); 6771 data.recycle(); 6772 reply.recycle(); 6773 return res; 6774 } 6775 6776 @Override 6777 public boolean setProcessMemoryTrimLevel(String process, int userId, int level) 6778 throws RemoteException { 6779 Parcel data = Parcel.obtain(); 6780 Parcel reply = Parcel.obtain(); 6781 data.writeInterfaceToken(IActivityManager.descriptor); 6782 data.writeString(process); 6783 data.writeInt(userId); 6784 data.writeInt(level); 6785 mRemote.transact(SET_PROCESS_MEMORY_TRIM_TRANSACTION, data, reply, 0); 6786 reply.readException(); 6787 int res = reply.readInt(); 6788 data.recycle(); 6789 reply.recycle(); 6790 return res != 0; 6791 } 6792 6793 @Override 6794 public boolean isRootVoiceInteraction(IBinder token) throws RemoteException { 6795 Parcel data = Parcel.obtain(); 6796 Parcel reply = Parcel.obtain(); 6797 data.writeInterfaceToken(IActivityManager.descriptor); 6798 data.writeStrongBinder(token); 6799 mRemote.transact(IS_ROOT_VOICE_INTERACTION_TRANSACTION, data, reply, 0); 6800 reply.readException(); 6801 int res = reply.readInt(); 6802 data.recycle(); 6803 reply.recycle(); 6804 return res != 0; 6805 } 6806 6807 @Override 6808 public void exitFreeformMode(IBinder token) throws RemoteException { 6809 Parcel data = Parcel.obtain(); 6810 Parcel reply = Parcel.obtain(); 6811 data.writeInterfaceToken(IActivityManager.descriptor); 6812 data.writeStrongBinder(token); 6813 mRemote.transact(EXIT_FREEFORM_MODE_TRANSACTION, data, reply, 0); 6814 reply.readException(); 6815 data.recycle(); 6816 reply.recycle(); 6817 } 6818 6819 @Override 6820 public int getActivityStackId(IBinder token) throws RemoteException { 6821 Parcel data = Parcel.obtain(); 6822 Parcel reply = Parcel.obtain(); 6823 data.writeInterfaceToken(IActivityManager.descriptor); 6824 data.writeStrongBinder(token); 6825 mRemote.transact(GET_ACTIVITY_STACK_ID_TRANSACTION, data, reply, 0); 6826 reply.readException(); 6827 int stackId = reply.readInt(); 6828 data.recycle(); 6829 reply.recycle(); 6830 return stackId; 6831 } 6832 6833 @Override 6834 public void reportSizeConfigurations(IBinder token, int[] horizontalSizeConfiguration, 6835 int[] verticalSizeConfigurations, int[] smallestSizeConfigurations) 6836 throws RemoteException { 6837 Parcel data = Parcel.obtain(); 6838 Parcel reply = Parcel.obtain(); 6839 data.writeInterfaceToken(IActivityManager.descriptor); 6840 data.writeStrongBinder(token); 6841 writeIntArray(horizontalSizeConfiguration, data); 6842 writeIntArray(verticalSizeConfigurations, data); 6843 writeIntArray(smallestSizeConfigurations, data); 6844 mRemote.transact(REPORT_SIZE_CONFIGURATIONS, data, reply, 0); 6845 reply.readException(); 6846 data.recycle(); 6847 reply.recycle(); 6848 } 6849 6850 private static void writeIntArray(int[] array, Parcel data) { 6851 if (array == null) { 6852 data.writeInt(0); 6853 } else { 6854 data.writeInt(array.length); 6855 data.writeIntArray(array); 6856 } 6857 } 6858 6859 @Override 6860 public void suppressResizeConfigChanges(boolean suppress) throws RemoteException { 6861 Parcel data = Parcel.obtain(); 6862 Parcel reply = Parcel.obtain(); 6863 data.writeInterfaceToken(IActivityManager.descriptor); 6864 data.writeInt(suppress ? 1 : 0); 6865 mRemote.transact(SUPPRESS_RESIZE_CONFIG_CHANGES_TRANSACTION, data, reply, 0); 6866 reply.readException(); 6867 data.recycle(); 6868 reply.recycle(); 6869 } 6870 6871 @Override 6872 public void moveTasksToFullscreenStack(int fromStackId, boolean onTop) throws RemoteException { 6873 Parcel data = Parcel.obtain(); 6874 Parcel reply = Parcel.obtain(); 6875 data.writeInterfaceToken(IActivityManager.descriptor); 6876 data.writeInt(fromStackId); 6877 data.writeInt(onTop ? 1 : 0); 6878 mRemote.transact(MOVE_TASKS_TO_FULLSCREEN_STACK_TRANSACTION, data, reply, 0); 6879 reply.readException(); 6880 data.recycle(); 6881 reply.recycle(); 6882 } 6883 6884 @Override 6885 public int getAppStartMode(int uid, String packageName) throws RemoteException { 6886 Parcel data = Parcel.obtain(); 6887 Parcel reply = Parcel.obtain(); 6888 data.writeInterfaceToken(IActivityManager.descriptor); 6889 data.writeInt(uid); 6890 data.writeString(packageName); 6891 mRemote.transact(GET_APP_START_MODE_TRANSACTION, data, reply, 0); 6892 reply.readException(); 6893 int res = reply.readInt(); 6894 data.recycle(); 6895 reply.recycle(); 6896 return res; 6897 } 6898 6899 @Override 6900 public boolean isInMultiWindowMode(IBinder token) throws RemoteException { 6901 Parcel data = Parcel.obtain(); 6902 Parcel reply = Parcel.obtain(); 6903 data.writeInterfaceToken(IActivityManager.descriptor); 6904 data.writeStrongBinder(token); 6905 mRemote.transact(IN_MULTI_WINDOW_TRANSACTION, data, reply, 0); 6906 reply.readException(); 6907 final boolean multiWindowMode = reply.readInt() == 1 ? true : false; 6908 data.recycle(); 6909 reply.recycle(); 6910 return multiWindowMode; 6911 } 6912 6913 @Override 6914 public boolean isInPictureInPictureMode(IBinder token) throws RemoteException { 6915 Parcel data = Parcel.obtain(); 6916 Parcel reply = Parcel.obtain(); 6917 data.writeInterfaceToken(IActivityManager.descriptor); 6918 data.writeStrongBinder(token); 6919 mRemote.transact(IN_PICTURE_IN_PICTURE_TRANSACTION, data, reply, 0); 6920 reply.readException(); 6921 final boolean pipMode = reply.readInt() == 1 ? true : false; 6922 data.recycle(); 6923 reply.recycle(); 6924 return pipMode; 6925 } 6926 6927 @Override 6928 public void enterPictureInPictureMode(IBinder token) throws RemoteException { 6929 Parcel data = Parcel.obtain(); 6930 Parcel reply = Parcel.obtain(); 6931 data.writeInterfaceToken(IActivityManager.descriptor); 6932 data.writeStrongBinder(token); 6933 mRemote.transact(ENTER_PICTURE_IN_PICTURE_TRANSACTION, data, reply, 0); 6934 reply.readException(); 6935 data.recycle(); 6936 reply.recycle(); 6937 } 6938 6939 @Override 6940 public boolean isAppForeground(int uid) throws RemoteException { 6941 Parcel data = Parcel.obtain(); 6942 Parcel reply = Parcel.obtain(); 6943 data.writeInterfaceToken(IActivityManager.descriptor); 6944 data.writeInt(uid); 6945 mRemote.transact(IS_APP_FOREGROUND_TRANSACTION, data, reply, 0); 6946 final boolean isForeground = reply.readInt() == 1 ? true : false; 6947 data.recycle(); 6948 reply.recycle(); 6949 return isForeground; 6950 }; 6951 6952 @Override 6953 public void notifyPinnedStackAnimationEnded() throws RemoteException { 6954 Parcel data = Parcel.obtain(); 6955 Parcel reply = Parcel.obtain(); 6956 data.writeInterfaceToken(IActivityManager.descriptor); 6957 mRemote.transact(NOTIFY_PINNED_STACK_ANIMATION_ENDED_TRANSACTION, data, reply, 0); 6958 data.recycle(); 6959 reply.recycle(); 6960 }; 6961 6962 @Override 6963 public void removeStack(int stackId) throws RemoteException { 6964 Parcel data = Parcel.obtain(); 6965 Parcel reply = Parcel.obtain(); 6966 data.writeInterfaceToken(IActivityManager.descriptor); 6967 data.writeInt(stackId); 6968 mRemote.transact(REMOVE_STACK, data, reply, 0); 6969 reply.readException(); 6970 data.recycle(); 6971 reply.recycle(); 6972 } 6973 6974 @Override 6975 public void notifyLockedProfile(@UserIdInt int userId) throws RemoteException { 6976 Parcel data = Parcel.obtain(); 6977 Parcel reply = Parcel.obtain(); 6978 data.writeInterfaceToken(IActivityManager.descriptor); 6979 data.writeInt(userId); 6980 mRemote.transact(NOTIFY_LOCKED_PROFILE, data, reply, 0); 6981 reply.readException(); 6982 data.recycle(); 6983 reply.recycle(); 6984 } 6985 6986 @Override 6987 public void startConfirmDeviceCredentialIntent(Intent intent) throws RemoteException { 6988 Parcel data = Parcel.obtain(); 6989 Parcel reply = Parcel.obtain(); 6990 data.writeInterfaceToken(IActivityManager.descriptor); 6991 intent.writeToParcel(data, 0); 6992 mRemote.transact(START_CONFIRM_DEVICE_CREDENTIAL_INTENT, data, reply, 0); 6993 reply.readException(); 6994 data.recycle(); 6995 reply.recycle(); 6996 } 6997 6998 @Override 6999 public int sendIntentSender(IIntentSender target, int code, Intent intent, String resolvedType, 7000 IIntentReceiver finishedReceiver, String requiredPermission, Bundle options) 7001 throws RemoteException { 7002 Parcel data = Parcel.obtain(); 7003 Parcel reply = Parcel.obtain(); 7004 data.writeInterfaceToken(IActivityManager.descriptor); 7005 data.writeStrongBinder(target.asBinder()); 7006 data.writeInt(code); 7007 if ((intent!=null)) { 7008 data.writeInt(1); 7009 intent.writeToParcel(data, 0); 7010 } 7011 else { 7012 data.writeInt(0); 7013 } 7014 data.writeString(resolvedType); 7015 data.writeStrongBinder((((finishedReceiver!=null))?(finishedReceiver.asBinder()):(null))); 7016 data.writeString(requiredPermission); 7017 if ((options!=null)) { 7018 data.writeInt(1); 7019 options.writeToParcel(data, 0); 7020 } 7021 else { 7022 data.writeInt(0); 7023 } 7024 mRemote.transact(SEND_INTENT_SENDER_TRANSACTION, data, reply, 0); 7025 reply.readException(); 7026 final int res = reply.readInt(); 7027 data.recycle(); 7028 reply.recycle(); 7029 return res; 7030 } 7031 7032 private IBinder mRemote; 7033} 7034