ActivityManagerNative.java revision 4900bf9d82c4905fadc43d8e2dd9a7f896da2d81
1/* 2 * Copyright (C) 2006 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.app; 18 19import android.app.ActivityManager.StackInfo; 20import android.app.ProfilerInfo; 21import android.content.ComponentName; 22import android.content.IIntentReceiver; 23import android.content.IIntentSender; 24import android.content.Intent; 25import android.content.IntentFilter; 26import android.content.IntentSender; 27import android.content.UriPermission; 28import android.content.pm.ApplicationInfo; 29import android.content.pm.ConfigurationInfo; 30import android.content.pm.IPackageDataObserver; 31import android.content.pm.ParceledListSlice; 32import android.content.pm.UserInfo; 33import android.content.res.Configuration; 34import android.graphics.Bitmap; 35import android.graphics.Point; 36import android.graphics.Rect; 37import android.net.Uri; 38import android.os.Binder; 39import android.os.Bundle; 40import android.os.Debug; 41import android.os.IBinder; 42import android.os.Parcel; 43import android.os.ParcelFileDescriptor; 44import android.os.Parcelable; 45import android.os.PersistableBundle; 46import android.os.RemoteException; 47import android.os.ServiceManager; 48import android.os.StrictMode; 49import android.service.voice.IVoiceInteractionSession; 50import android.text.TextUtils; 51import android.util.Log; 52import android.util.Singleton; 53import com.android.internal.app.IVoiceInteractor; 54 55import java.util.ArrayList; 56import java.util.List; 57 58/** {@hide} */ 59public abstract class ActivityManagerNative extends Binder implements IActivityManager 60{ 61 /** 62 * Cast a Binder object into an activity manager interface, generating 63 * a proxy if needed. 64 */ 65 static public IActivityManager asInterface(IBinder obj) { 66 if (obj == null) { 67 return null; 68 } 69 IActivityManager in = 70 (IActivityManager)obj.queryLocalInterface(descriptor); 71 if (in != null) { 72 return in; 73 } 74 75 return new ActivityManagerProxy(obj); 76 } 77 78 /** 79 * Retrieve the system's default/global activity manager. 80 */ 81 static public IActivityManager getDefault() { 82 return gDefault.get(); 83 } 84 85 /** 86 * Convenience for checking whether the system is ready. For internal use only. 87 */ 88 static public boolean isSystemReady() { 89 if (!sSystemReady) { 90 sSystemReady = getDefault().testIsSystemReady(); 91 } 92 return sSystemReady; 93 } 94 static boolean sSystemReady = false; 95 96 /** 97 * Convenience for sending a sticky broadcast. For internal use only. 98 * If you don't care about permission, use null. 99 */ 100 static public void broadcastStickyIntent(Intent intent, String permission, int userId) { 101 try { 102 getDefault().broadcastIntent( 103 null, intent, null, null, Activity.RESULT_OK, null, null, 104 null /*permission*/, AppOpsManager.OP_NONE, false, true, userId); 105 } catch (RemoteException ex) { 106 } 107 } 108 109 static public void noteWakeupAlarm(PendingIntent ps, int sourceUid, String sourcePkg) { 110 try { 111 getDefault().noteWakeupAlarm(ps.getTarget(), sourceUid, sourcePkg); 112 } catch (RemoteException ex) { 113 } 114 } 115 116 public ActivityManagerNative() { 117 attachInterface(this, descriptor); 118 } 119 120 @Override 121 public boolean onTransact(int code, Parcel data, Parcel reply, int flags) 122 throws RemoteException { 123 switch (code) { 124 case START_ACTIVITY_TRANSACTION: 125 { 126 data.enforceInterface(IActivityManager.descriptor); 127 IBinder b = data.readStrongBinder(); 128 IApplicationThread app = ApplicationThreadNative.asInterface(b); 129 String callingPackage = data.readString(); 130 Intent intent = Intent.CREATOR.createFromParcel(data); 131 String resolvedType = data.readString(); 132 IBinder resultTo = data.readStrongBinder(); 133 String resultWho = data.readString(); 134 int requestCode = data.readInt(); 135 int startFlags = data.readInt(); 136 ProfilerInfo profilerInfo = data.readInt() != 0 137 ? ProfilerInfo.CREATOR.createFromParcel(data) : null; 138 Bundle options = data.readInt() != 0 139 ? Bundle.CREATOR.createFromParcel(data) : null; 140 int result = startActivity(app, callingPackage, intent, resolvedType, 141 resultTo, resultWho, requestCode, startFlags, profilerInfo, options); 142 reply.writeNoException(); 143 reply.writeInt(result); 144 return true; 145 } 146 147 case START_ACTIVITY_AS_USER_TRANSACTION: 148 { 149 data.enforceInterface(IActivityManager.descriptor); 150 IBinder b = data.readStrongBinder(); 151 IApplicationThread app = ApplicationThreadNative.asInterface(b); 152 String callingPackage = data.readString(); 153 Intent intent = Intent.CREATOR.createFromParcel(data); 154 String resolvedType = data.readString(); 155 IBinder resultTo = data.readStrongBinder(); 156 String resultWho = data.readString(); 157 int requestCode = data.readInt(); 158 int startFlags = data.readInt(); 159 ProfilerInfo profilerInfo = data.readInt() != 0 160 ? ProfilerInfo.CREATOR.createFromParcel(data) : null; 161 Bundle options = data.readInt() != 0 162 ? Bundle.CREATOR.createFromParcel(data) : null; 163 int userId = data.readInt(); 164 int result = startActivityAsUser(app, callingPackage, intent, resolvedType, 165 resultTo, resultWho, requestCode, startFlags, profilerInfo, options, userId); 166 reply.writeNoException(); 167 reply.writeInt(result); 168 return true; 169 } 170 171 case START_ACTIVITY_AS_CALLER_TRANSACTION: 172 { 173 data.enforceInterface(IActivityManager.descriptor); 174 IBinder b = data.readStrongBinder(); 175 IApplicationThread app = ApplicationThreadNative.asInterface(b); 176 String callingPackage = data.readString(); 177 Intent intent = Intent.CREATOR.createFromParcel(data); 178 String resolvedType = data.readString(); 179 IBinder resultTo = data.readStrongBinder(); 180 String resultWho = data.readString(); 181 int requestCode = data.readInt(); 182 int startFlags = data.readInt(); 183 ProfilerInfo profilerInfo = data.readInt() != 0 184 ? ProfilerInfo.CREATOR.createFromParcel(data) : null; 185 Bundle options = data.readInt() != 0 186 ? Bundle.CREATOR.createFromParcel(data) : null; 187 int userId = data.readInt(); 188 int result = startActivityAsCaller(app, callingPackage, intent, resolvedType, 189 resultTo, resultWho, requestCode, startFlags, profilerInfo, options, userId); 190 reply.writeNoException(); 191 reply.writeInt(result); 192 return true; 193 } 194 195 case START_ACTIVITY_AND_WAIT_TRANSACTION: 196 { 197 data.enforceInterface(IActivityManager.descriptor); 198 IBinder b = data.readStrongBinder(); 199 IApplicationThread app = ApplicationThreadNative.asInterface(b); 200 String callingPackage = data.readString(); 201 Intent intent = Intent.CREATOR.createFromParcel(data); 202 String resolvedType = data.readString(); 203 IBinder resultTo = data.readStrongBinder(); 204 String resultWho = data.readString(); 205 int requestCode = data.readInt(); 206 int startFlags = data.readInt(); 207 ProfilerInfo profilerInfo = data.readInt() != 0 208 ? ProfilerInfo.CREATOR.createFromParcel(data) : null; 209 Bundle options = data.readInt() != 0 210 ? Bundle.CREATOR.createFromParcel(data) : null; 211 int userId = data.readInt(); 212 WaitResult result = startActivityAndWait(app, callingPackage, intent, resolvedType, 213 resultTo, resultWho, requestCode, startFlags, profilerInfo, options, userId); 214 reply.writeNoException(); 215 result.writeToParcel(reply, 0); 216 return true; 217 } 218 219 case START_ACTIVITY_WITH_CONFIG_TRANSACTION: 220 { 221 data.enforceInterface(IActivityManager.descriptor); 222 IBinder b = data.readStrongBinder(); 223 IApplicationThread app = ApplicationThreadNative.asInterface(b); 224 String callingPackage = data.readString(); 225 Intent intent = Intent.CREATOR.createFromParcel(data); 226 String resolvedType = data.readString(); 227 IBinder resultTo = data.readStrongBinder(); 228 String resultWho = data.readString(); 229 int requestCode = data.readInt(); 230 int startFlags = data.readInt(); 231 Configuration config = Configuration.CREATOR.createFromParcel(data); 232 Bundle options = data.readInt() != 0 233 ? Bundle.CREATOR.createFromParcel(data) : null; 234 int userId = data.readInt(); 235 int result = startActivityWithConfig(app, callingPackage, intent, resolvedType, 236 resultTo, resultWho, requestCode, startFlags, config, options, userId); 237 reply.writeNoException(); 238 reply.writeInt(result); 239 return true; 240 } 241 242 case START_ACTIVITY_INTENT_SENDER_TRANSACTION: 243 { 244 data.enforceInterface(IActivityManager.descriptor); 245 IBinder b = data.readStrongBinder(); 246 IApplicationThread app = ApplicationThreadNative.asInterface(b); 247 IntentSender intent = IntentSender.CREATOR.createFromParcel(data); 248 Intent fillInIntent = null; 249 if (data.readInt() != 0) { 250 fillInIntent = Intent.CREATOR.createFromParcel(data); 251 } 252 String resolvedType = data.readString(); 253 IBinder resultTo = data.readStrongBinder(); 254 String resultWho = data.readString(); 255 int requestCode = data.readInt(); 256 int flagsMask = data.readInt(); 257 int flagsValues = data.readInt(); 258 Bundle options = data.readInt() != 0 259 ? Bundle.CREATOR.createFromParcel(data) : null; 260 int result = startActivityIntentSender(app, intent, 261 fillInIntent, resolvedType, resultTo, resultWho, 262 requestCode, flagsMask, flagsValues, options); 263 reply.writeNoException(); 264 reply.writeInt(result); 265 return true; 266 } 267 268 case START_VOICE_ACTIVITY_TRANSACTION: 269 { 270 data.enforceInterface(IActivityManager.descriptor); 271 String callingPackage = data.readString(); 272 int callingPid = data.readInt(); 273 int callingUid = data.readInt(); 274 Intent intent = Intent.CREATOR.createFromParcel(data); 275 String resolvedType = data.readString(); 276 IVoiceInteractionSession session = IVoiceInteractionSession.Stub.asInterface( 277 data.readStrongBinder()); 278 IVoiceInteractor interactor = IVoiceInteractor.Stub.asInterface( 279 data.readStrongBinder()); 280 int startFlags = data.readInt(); 281 ProfilerInfo profilerInfo = data.readInt() != 0 282 ? ProfilerInfo.CREATOR.createFromParcel(data) : null; 283 Bundle options = data.readInt() != 0 284 ? Bundle.CREATOR.createFromParcel(data) : null; 285 int userId = data.readInt(); 286 int result = startVoiceActivity(callingPackage, callingPid, callingUid, intent, 287 resolvedType, session, interactor, startFlags, profilerInfo, options, userId); 288 reply.writeNoException(); 289 reply.writeInt(result); 290 return true; 291 } 292 293 case START_NEXT_MATCHING_ACTIVITY_TRANSACTION: 294 { 295 data.enforceInterface(IActivityManager.descriptor); 296 IBinder callingActivity = data.readStrongBinder(); 297 Intent intent = Intent.CREATOR.createFromParcel(data); 298 Bundle options = data.readInt() != 0 299 ? Bundle.CREATOR.createFromParcel(data) : null; 300 boolean result = startNextMatchingActivity(callingActivity, intent, options); 301 reply.writeNoException(); 302 reply.writeInt(result ? 1 : 0); 303 return true; 304 } 305 306 case START_ACTIVITY_FROM_RECENTS_TRANSACTION: 307 { 308 data.enforceInterface(IActivityManager.descriptor); 309 int taskId = data.readInt(); 310 Bundle options = data.readInt() == 0 ? null : Bundle.CREATOR.createFromParcel(data); 311 int result = startActivityFromRecents(taskId, options); 312 reply.writeNoException(); 313 reply.writeInt(result); 314 return true; 315 } 316 317 case FINISH_ACTIVITY_TRANSACTION: { 318 data.enforceInterface(IActivityManager.descriptor); 319 IBinder token = data.readStrongBinder(); 320 Intent resultData = null; 321 int resultCode = data.readInt(); 322 if (data.readInt() != 0) { 323 resultData = Intent.CREATOR.createFromParcel(data); 324 } 325 boolean finishTask = (data.readInt() != 0); 326 boolean res = finishActivity(token, resultCode, resultData, finishTask); 327 reply.writeNoException(); 328 reply.writeInt(res ? 1 : 0); 329 return true; 330 } 331 332 case FINISH_SUB_ACTIVITY_TRANSACTION: { 333 data.enforceInterface(IActivityManager.descriptor); 334 IBinder token = data.readStrongBinder(); 335 String resultWho = data.readString(); 336 int requestCode = data.readInt(); 337 finishSubActivity(token, resultWho, requestCode); 338 reply.writeNoException(); 339 return true; 340 } 341 342 case FINISH_ACTIVITY_AFFINITY_TRANSACTION: { 343 data.enforceInterface(IActivityManager.descriptor); 344 IBinder token = data.readStrongBinder(); 345 boolean res = finishActivityAffinity(token); 346 reply.writeNoException(); 347 reply.writeInt(res ? 1 : 0); 348 return true; 349 } 350 351 case FINISH_VOICE_TASK_TRANSACTION: { 352 data.enforceInterface(IActivityManager.descriptor); 353 IVoiceInteractionSession session = IVoiceInteractionSession.Stub.asInterface( 354 data.readStrongBinder()); 355 finishVoiceTask(session); 356 reply.writeNoException(); 357 return true; 358 } 359 360 case RELEASE_ACTIVITY_INSTANCE_TRANSACTION: { 361 data.enforceInterface(IActivityManager.descriptor); 362 IBinder token = data.readStrongBinder(); 363 boolean res = releaseActivityInstance(token); 364 reply.writeNoException(); 365 reply.writeInt(res ? 1 : 0); 366 return true; 367 } 368 369 case RELEASE_SOME_ACTIVITIES_TRANSACTION: { 370 data.enforceInterface(IActivityManager.descriptor); 371 IApplicationThread app = ApplicationThreadNative.asInterface(data.readStrongBinder()); 372 releaseSomeActivities(app); 373 reply.writeNoException(); 374 return true; 375 } 376 377 case WILL_ACTIVITY_BE_VISIBLE_TRANSACTION: { 378 data.enforceInterface(IActivityManager.descriptor); 379 IBinder token = data.readStrongBinder(); 380 boolean res = willActivityBeVisible(token); 381 reply.writeNoException(); 382 reply.writeInt(res ? 1 : 0); 383 return true; 384 } 385 386 case REGISTER_RECEIVER_TRANSACTION: 387 { 388 data.enforceInterface(IActivityManager.descriptor); 389 IBinder b = data.readStrongBinder(); 390 IApplicationThread app = 391 b != null ? ApplicationThreadNative.asInterface(b) : null; 392 String packageName = data.readString(); 393 b = data.readStrongBinder(); 394 IIntentReceiver rec 395 = b != null ? IIntentReceiver.Stub.asInterface(b) : null; 396 IntentFilter filter = IntentFilter.CREATOR.createFromParcel(data); 397 String perm = data.readString(); 398 int userId = data.readInt(); 399 Intent intent = registerReceiver(app, packageName, rec, filter, perm, userId); 400 reply.writeNoException(); 401 if (intent != null) { 402 reply.writeInt(1); 403 intent.writeToParcel(reply, 0); 404 } else { 405 reply.writeInt(0); 406 } 407 return true; 408 } 409 410 case UNREGISTER_RECEIVER_TRANSACTION: 411 { 412 data.enforceInterface(IActivityManager.descriptor); 413 IBinder b = data.readStrongBinder(); 414 if (b == null) { 415 return true; 416 } 417 IIntentReceiver rec = IIntentReceiver.Stub.asInterface(b); 418 unregisterReceiver(rec); 419 reply.writeNoException(); 420 return true; 421 } 422 423 case BROADCAST_INTENT_TRANSACTION: 424 { 425 data.enforceInterface(IActivityManager.descriptor); 426 IBinder b = data.readStrongBinder(); 427 IApplicationThread app = 428 b != null ? ApplicationThreadNative.asInterface(b) : null; 429 Intent intent = Intent.CREATOR.createFromParcel(data); 430 String resolvedType = data.readString(); 431 b = data.readStrongBinder(); 432 IIntentReceiver resultTo = 433 b != null ? IIntentReceiver.Stub.asInterface(b) : null; 434 int resultCode = data.readInt(); 435 String resultData = data.readString(); 436 Bundle resultExtras = data.readBundle(); 437 String perm = data.readString(); 438 int appOp = data.readInt(); 439 boolean serialized = data.readInt() != 0; 440 boolean sticky = data.readInt() != 0; 441 int userId = data.readInt(); 442 int res = broadcastIntent(app, intent, resolvedType, resultTo, 443 resultCode, resultData, resultExtras, perm, appOp, 444 serialized, sticky, userId); 445 reply.writeNoException(); 446 reply.writeInt(res); 447 return true; 448 } 449 450 case UNBROADCAST_INTENT_TRANSACTION: 451 { 452 data.enforceInterface(IActivityManager.descriptor); 453 IBinder b = data.readStrongBinder(); 454 IApplicationThread app = b != null ? ApplicationThreadNative.asInterface(b) : null; 455 Intent intent = Intent.CREATOR.createFromParcel(data); 456 int userId = data.readInt(); 457 unbroadcastIntent(app, intent, userId); 458 reply.writeNoException(); 459 return true; 460 } 461 462 case FINISH_RECEIVER_TRANSACTION: { 463 data.enforceInterface(IActivityManager.descriptor); 464 IBinder who = data.readStrongBinder(); 465 int resultCode = data.readInt(); 466 String resultData = data.readString(); 467 Bundle resultExtras = data.readBundle(); 468 boolean resultAbort = data.readInt() != 0; 469 int intentFlags = data.readInt(); 470 if (who != null) { 471 finishReceiver(who, resultCode, resultData, resultExtras, resultAbort, intentFlags); 472 } 473 reply.writeNoException(); 474 return true; 475 } 476 477 case ATTACH_APPLICATION_TRANSACTION: { 478 data.enforceInterface(IActivityManager.descriptor); 479 IApplicationThread app = ApplicationThreadNative.asInterface( 480 data.readStrongBinder()); 481 if (app != null) { 482 attachApplication(app); 483 } 484 reply.writeNoException(); 485 return true; 486 } 487 488 case ACTIVITY_IDLE_TRANSACTION: { 489 data.enforceInterface(IActivityManager.descriptor); 490 IBinder token = data.readStrongBinder(); 491 Configuration config = null; 492 if (data.readInt() != 0) { 493 config = Configuration.CREATOR.createFromParcel(data); 494 } 495 boolean stopProfiling = data.readInt() != 0; 496 if (token != null) { 497 activityIdle(token, config, stopProfiling); 498 } 499 reply.writeNoException(); 500 return true; 501 } 502 503 case ACTIVITY_RESUMED_TRANSACTION: { 504 data.enforceInterface(IActivityManager.descriptor); 505 IBinder token = data.readStrongBinder(); 506 activityResumed(token); 507 reply.writeNoException(); 508 return true; 509 } 510 511 case ACTIVITY_PAUSED_TRANSACTION: { 512 data.enforceInterface(IActivityManager.descriptor); 513 IBinder token = data.readStrongBinder(); 514 activityPaused(token); 515 reply.writeNoException(); 516 return true; 517 } 518 519 case ACTIVITY_STOPPED_TRANSACTION: { 520 data.enforceInterface(IActivityManager.descriptor); 521 IBinder token = data.readStrongBinder(); 522 Bundle map = data.readBundle(); 523 PersistableBundle persistentState = data.readPersistableBundle(); 524 CharSequence description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data); 525 activityStopped(token, map, persistentState, description); 526 reply.writeNoException(); 527 return true; 528 } 529 530 case ACTIVITY_SLEPT_TRANSACTION: { 531 data.enforceInterface(IActivityManager.descriptor); 532 IBinder token = data.readStrongBinder(); 533 activitySlept(token); 534 reply.writeNoException(); 535 return true; 536 } 537 538 case ACTIVITY_DESTROYED_TRANSACTION: { 539 data.enforceInterface(IActivityManager.descriptor); 540 IBinder token = data.readStrongBinder(); 541 activityDestroyed(token); 542 reply.writeNoException(); 543 return true; 544 } 545 546 case GET_CALLING_PACKAGE_TRANSACTION: { 547 data.enforceInterface(IActivityManager.descriptor); 548 IBinder token = data.readStrongBinder(); 549 String res = token != null ? getCallingPackage(token) : null; 550 reply.writeNoException(); 551 reply.writeString(res); 552 return true; 553 } 554 555 case GET_CALLING_ACTIVITY_TRANSACTION: { 556 data.enforceInterface(IActivityManager.descriptor); 557 IBinder token = data.readStrongBinder(); 558 ComponentName cn = getCallingActivity(token); 559 reply.writeNoException(); 560 ComponentName.writeToParcel(cn, reply); 561 return true; 562 } 563 564 case GET_APP_TASKS_TRANSACTION: { 565 data.enforceInterface(IActivityManager.descriptor); 566 String callingPackage = data.readString(); 567 List<IAppTask> list = getAppTasks(callingPackage); 568 reply.writeNoException(); 569 int N = list != null ? list.size() : -1; 570 reply.writeInt(N); 571 int i; 572 for (i=0; i<N; i++) { 573 IAppTask task = list.get(i); 574 reply.writeStrongBinder(task.asBinder()); 575 } 576 return true; 577 } 578 579 case ADD_APP_TASK_TRANSACTION: { 580 data.enforceInterface(IActivityManager.descriptor); 581 IBinder activityToken = data.readStrongBinder(); 582 Intent intent = Intent.CREATOR.createFromParcel(data); 583 ActivityManager.TaskDescription descr 584 = ActivityManager.TaskDescription.CREATOR.createFromParcel(data); 585 Bitmap thumbnail = Bitmap.CREATOR.createFromParcel(data); 586 int res = addAppTask(activityToken, intent, descr, thumbnail); 587 reply.writeNoException(); 588 reply.writeInt(res); 589 return true; 590 } 591 592 case GET_APP_TASK_THUMBNAIL_SIZE_TRANSACTION: { 593 data.enforceInterface(IActivityManager.descriptor); 594 Point size = getAppTaskThumbnailSize(); 595 reply.writeNoException(); 596 size.writeToParcel(reply, 0); 597 return true; 598 } 599 600 case GET_TASKS_TRANSACTION: { 601 data.enforceInterface(IActivityManager.descriptor); 602 int maxNum = data.readInt(); 603 int fl = data.readInt(); 604 List<ActivityManager.RunningTaskInfo> list = getTasks(maxNum, fl); 605 reply.writeNoException(); 606 int N = list != null ? list.size() : -1; 607 reply.writeInt(N); 608 int i; 609 for (i=0; i<N; i++) { 610 ActivityManager.RunningTaskInfo info = list.get(i); 611 info.writeToParcel(reply, 0); 612 } 613 return true; 614 } 615 616 case GET_RECENT_TASKS_TRANSACTION: { 617 data.enforceInterface(IActivityManager.descriptor); 618 int maxNum = data.readInt(); 619 int fl = data.readInt(); 620 int userId = data.readInt(); 621 List<ActivityManager.RecentTaskInfo> list = getRecentTasks(maxNum, 622 fl, userId); 623 reply.writeNoException(); 624 reply.writeTypedList(list); 625 return true; 626 } 627 628 case GET_TASK_THUMBNAIL_TRANSACTION: { 629 data.enforceInterface(IActivityManager.descriptor); 630 int id = data.readInt(); 631 ActivityManager.TaskThumbnail taskThumbnail = getTaskThumbnail(id); 632 reply.writeNoException(); 633 if (taskThumbnail != null) { 634 reply.writeInt(1); 635 taskThumbnail.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 636 } else { 637 reply.writeInt(0); 638 } 639 return true; 640 } 641 642 case GET_SERVICES_TRANSACTION: { 643 data.enforceInterface(IActivityManager.descriptor); 644 int maxNum = data.readInt(); 645 int fl = data.readInt(); 646 List<ActivityManager.RunningServiceInfo> list = getServices(maxNum, fl); 647 reply.writeNoException(); 648 int N = list != null ? list.size() : -1; 649 reply.writeInt(N); 650 int i; 651 for (i=0; i<N; i++) { 652 ActivityManager.RunningServiceInfo info = list.get(i); 653 info.writeToParcel(reply, 0); 654 } 655 return true; 656 } 657 658 case GET_PROCESSES_IN_ERROR_STATE_TRANSACTION: { 659 data.enforceInterface(IActivityManager.descriptor); 660 List<ActivityManager.ProcessErrorStateInfo> list = getProcessesInErrorState(); 661 reply.writeNoException(); 662 reply.writeTypedList(list); 663 return true; 664 } 665 666 case GET_RUNNING_APP_PROCESSES_TRANSACTION: { 667 data.enforceInterface(IActivityManager.descriptor); 668 List<ActivityManager.RunningAppProcessInfo> list = getRunningAppProcesses(); 669 reply.writeNoException(); 670 reply.writeTypedList(list); 671 return true; 672 } 673 674 case GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION: { 675 data.enforceInterface(IActivityManager.descriptor); 676 List<ApplicationInfo> list = getRunningExternalApplications(); 677 reply.writeNoException(); 678 reply.writeTypedList(list); 679 return true; 680 } 681 682 case MOVE_TASK_TO_FRONT_TRANSACTION: { 683 data.enforceInterface(IActivityManager.descriptor); 684 int task = data.readInt(); 685 int fl = data.readInt(); 686 Bundle options = data.readInt() != 0 687 ? Bundle.CREATOR.createFromParcel(data) : null; 688 moveTaskToFront(task, fl, options); 689 reply.writeNoException(); 690 return true; 691 } 692 693 case MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION: { 694 data.enforceInterface(IActivityManager.descriptor); 695 IBinder token = data.readStrongBinder(); 696 boolean nonRoot = data.readInt() != 0; 697 boolean res = moveActivityTaskToBack(token, nonRoot); 698 reply.writeNoException(); 699 reply.writeInt(res ? 1 : 0); 700 return true; 701 } 702 703 case MOVE_TASK_BACKWARDS_TRANSACTION: { 704 data.enforceInterface(IActivityManager.descriptor); 705 int task = data.readInt(); 706 moveTaskBackwards(task); 707 reply.writeNoException(); 708 return true; 709 } 710 711 case MOVE_TASK_TO_STACK_TRANSACTION: { 712 data.enforceInterface(IActivityManager.descriptor); 713 int taskId = data.readInt(); 714 int stackId = data.readInt(); 715 boolean toTop = data.readInt() != 0; 716 moveTaskToStack(taskId, stackId, toTop); 717 reply.writeNoException(); 718 return true; 719 } 720 721 case RESIZE_STACK_TRANSACTION: { 722 data.enforceInterface(IActivityManager.descriptor); 723 int stackId = data.readInt(); 724 float weight = data.readFloat(); 725 Rect r = Rect.CREATOR.createFromParcel(data); 726 resizeStack(stackId, r); 727 reply.writeNoException(); 728 return true; 729 } 730 731 case GET_ALL_STACK_INFOS_TRANSACTION: { 732 data.enforceInterface(IActivityManager.descriptor); 733 List<StackInfo> list = getAllStackInfos(); 734 reply.writeNoException(); 735 reply.writeTypedList(list); 736 return true; 737 } 738 739 case GET_STACK_INFO_TRANSACTION: { 740 data.enforceInterface(IActivityManager.descriptor); 741 int stackId = data.readInt(); 742 StackInfo info = getStackInfo(stackId); 743 reply.writeNoException(); 744 if (info != null) { 745 reply.writeInt(1); 746 info.writeToParcel(reply, 0); 747 } else { 748 reply.writeInt(0); 749 } 750 return true; 751 } 752 753 case IS_IN_HOME_STACK_TRANSACTION: { 754 data.enforceInterface(IActivityManager.descriptor); 755 int taskId = data.readInt(); 756 boolean isInHomeStack = isInHomeStack(taskId); 757 reply.writeNoException(); 758 reply.writeInt(isInHomeStack ? 1 : 0); 759 return true; 760 } 761 762 case SET_FOCUSED_STACK_TRANSACTION: { 763 data.enforceInterface(IActivityManager.descriptor); 764 int stackId = data.readInt(); 765 setFocusedStack(stackId); 766 reply.writeNoException(); 767 return true; 768 } 769 770 case REGISTER_TASK_STACK_LISTENER_TRANSACTION: { 771 data.enforceInterface(IActivityManager.descriptor); 772 IBinder token = data.readStrongBinder(); 773 registerTaskStackListener(ITaskStackListener.Stub.asInterface(token)); 774 reply.writeNoException(); 775 return true; 776 } 777 778 case GET_TASK_FOR_ACTIVITY_TRANSACTION: { 779 data.enforceInterface(IActivityManager.descriptor); 780 IBinder token = data.readStrongBinder(); 781 boolean onlyRoot = data.readInt() != 0; 782 int res = token != null 783 ? getTaskForActivity(token, onlyRoot) : -1; 784 reply.writeNoException(); 785 reply.writeInt(res); 786 return true; 787 } 788 789 case GET_CONTENT_PROVIDER_TRANSACTION: { 790 data.enforceInterface(IActivityManager.descriptor); 791 IBinder b = data.readStrongBinder(); 792 IApplicationThread app = ApplicationThreadNative.asInterface(b); 793 String name = data.readString(); 794 int userId = data.readInt(); 795 boolean stable = data.readInt() != 0; 796 ContentProviderHolder cph = getContentProvider(app, name, userId, stable); 797 reply.writeNoException(); 798 if (cph != null) { 799 reply.writeInt(1); 800 cph.writeToParcel(reply, 0); 801 } else { 802 reply.writeInt(0); 803 } 804 return true; 805 } 806 807 case GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION: { 808 data.enforceInterface(IActivityManager.descriptor); 809 String name = data.readString(); 810 int userId = data.readInt(); 811 IBinder token = data.readStrongBinder(); 812 ContentProviderHolder cph = getContentProviderExternal(name, userId, token); 813 reply.writeNoException(); 814 if (cph != null) { 815 reply.writeInt(1); 816 cph.writeToParcel(reply, 0); 817 } else { 818 reply.writeInt(0); 819 } 820 return true; 821 } 822 823 case PUBLISH_CONTENT_PROVIDERS_TRANSACTION: { 824 data.enforceInterface(IActivityManager.descriptor); 825 IBinder b = data.readStrongBinder(); 826 IApplicationThread app = ApplicationThreadNative.asInterface(b); 827 ArrayList<ContentProviderHolder> providers = 828 data.createTypedArrayList(ContentProviderHolder.CREATOR); 829 publishContentProviders(app, providers); 830 reply.writeNoException(); 831 return true; 832 } 833 834 case REF_CONTENT_PROVIDER_TRANSACTION: { 835 data.enforceInterface(IActivityManager.descriptor); 836 IBinder b = data.readStrongBinder(); 837 int stable = data.readInt(); 838 int unstable = data.readInt(); 839 boolean res = refContentProvider(b, stable, unstable); 840 reply.writeNoException(); 841 reply.writeInt(res ? 1 : 0); 842 return true; 843 } 844 845 case UNSTABLE_PROVIDER_DIED_TRANSACTION: { 846 data.enforceInterface(IActivityManager.descriptor); 847 IBinder b = data.readStrongBinder(); 848 unstableProviderDied(b); 849 reply.writeNoException(); 850 return true; 851 } 852 853 case APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION: { 854 data.enforceInterface(IActivityManager.descriptor); 855 IBinder b = data.readStrongBinder(); 856 appNotRespondingViaProvider(b); 857 reply.writeNoException(); 858 return true; 859 } 860 861 case REMOVE_CONTENT_PROVIDER_TRANSACTION: { 862 data.enforceInterface(IActivityManager.descriptor); 863 IBinder b = data.readStrongBinder(); 864 boolean stable = data.readInt() != 0; 865 removeContentProvider(b, stable); 866 reply.writeNoException(); 867 return true; 868 } 869 870 case REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION: { 871 data.enforceInterface(IActivityManager.descriptor); 872 String name = data.readString(); 873 IBinder token = data.readStrongBinder(); 874 removeContentProviderExternal(name, token); 875 reply.writeNoException(); 876 return true; 877 } 878 879 case GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION: { 880 data.enforceInterface(IActivityManager.descriptor); 881 ComponentName comp = ComponentName.CREATOR.createFromParcel(data); 882 PendingIntent pi = getRunningServiceControlPanel(comp); 883 reply.writeNoException(); 884 PendingIntent.writePendingIntentOrNullToParcel(pi, reply); 885 return true; 886 } 887 888 case START_SERVICE_TRANSACTION: { 889 data.enforceInterface(IActivityManager.descriptor); 890 IBinder b = data.readStrongBinder(); 891 IApplicationThread app = ApplicationThreadNative.asInterface(b); 892 Intent service = Intent.CREATOR.createFromParcel(data); 893 String resolvedType = data.readString(); 894 int userId = data.readInt(); 895 ComponentName cn = startService(app, service, resolvedType, userId); 896 reply.writeNoException(); 897 ComponentName.writeToParcel(cn, reply); 898 return true; 899 } 900 901 case STOP_SERVICE_TRANSACTION: { 902 data.enforceInterface(IActivityManager.descriptor); 903 IBinder b = data.readStrongBinder(); 904 IApplicationThread app = ApplicationThreadNative.asInterface(b); 905 Intent service = Intent.CREATOR.createFromParcel(data); 906 String resolvedType = data.readString(); 907 int userId = data.readInt(); 908 int res = stopService(app, service, resolvedType, userId); 909 reply.writeNoException(); 910 reply.writeInt(res); 911 return true; 912 } 913 914 case STOP_SERVICE_TOKEN_TRANSACTION: { 915 data.enforceInterface(IActivityManager.descriptor); 916 ComponentName className = ComponentName.readFromParcel(data); 917 IBinder token = data.readStrongBinder(); 918 int startId = data.readInt(); 919 boolean res = stopServiceToken(className, token, startId); 920 reply.writeNoException(); 921 reply.writeInt(res ? 1 : 0); 922 return true; 923 } 924 925 case SET_SERVICE_FOREGROUND_TRANSACTION: { 926 data.enforceInterface(IActivityManager.descriptor); 927 ComponentName className = ComponentName.readFromParcel(data); 928 IBinder token = data.readStrongBinder(); 929 int id = data.readInt(); 930 Notification notification = null; 931 if (data.readInt() != 0) { 932 notification = Notification.CREATOR.createFromParcel(data); 933 } 934 boolean removeNotification = data.readInt() != 0; 935 setServiceForeground(className, token, id, notification, removeNotification); 936 reply.writeNoException(); 937 return true; 938 } 939 940 case BIND_SERVICE_TRANSACTION: { 941 data.enforceInterface(IActivityManager.descriptor); 942 IBinder b = data.readStrongBinder(); 943 IApplicationThread app = ApplicationThreadNative.asInterface(b); 944 IBinder token = data.readStrongBinder(); 945 Intent service = Intent.CREATOR.createFromParcel(data); 946 String resolvedType = data.readString(); 947 b = data.readStrongBinder(); 948 int fl = data.readInt(); 949 int userId = data.readInt(); 950 IServiceConnection conn = IServiceConnection.Stub.asInterface(b); 951 int res = bindService(app, token, service, resolvedType, conn, fl, userId); 952 reply.writeNoException(); 953 reply.writeInt(res); 954 return true; 955 } 956 957 case UNBIND_SERVICE_TRANSACTION: { 958 data.enforceInterface(IActivityManager.descriptor); 959 IBinder b = data.readStrongBinder(); 960 IServiceConnection conn = IServiceConnection.Stub.asInterface(b); 961 boolean res = unbindService(conn); 962 reply.writeNoException(); 963 reply.writeInt(res ? 1 : 0); 964 return true; 965 } 966 967 case PUBLISH_SERVICE_TRANSACTION: { 968 data.enforceInterface(IActivityManager.descriptor); 969 IBinder token = data.readStrongBinder(); 970 Intent intent = Intent.CREATOR.createFromParcel(data); 971 IBinder service = data.readStrongBinder(); 972 publishService(token, intent, service); 973 reply.writeNoException(); 974 return true; 975 } 976 977 case UNBIND_FINISHED_TRANSACTION: { 978 data.enforceInterface(IActivityManager.descriptor); 979 IBinder token = data.readStrongBinder(); 980 Intent intent = Intent.CREATOR.createFromParcel(data); 981 boolean doRebind = data.readInt() != 0; 982 unbindFinished(token, intent, doRebind); 983 reply.writeNoException(); 984 return true; 985 } 986 987 case SERVICE_DONE_EXECUTING_TRANSACTION: { 988 data.enforceInterface(IActivityManager.descriptor); 989 IBinder token = data.readStrongBinder(); 990 int type = data.readInt(); 991 int startId = data.readInt(); 992 int res = data.readInt(); 993 serviceDoneExecuting(token, type, startId, res); 994 reply.writeNoException(); 995 return true; 996 } 997 998 case START_INSTRUMENTATION_TRANSACTION: { 999 data.enforceInterface(IActivityManager.descriptor); 1000 ComponentName className = ComponentName.readFromParcel(data); 1001 String profileFile = data.readString(); 1002 int fl = data.readInt(); 1003 Bundle arguments = data.readBundle(); 1004 IBinder b = data.readStrongBinder(); 1005 IInstrumentationWatcher w = IInstrumentationWatcher.Stub.asInterface(b); 1006 b = data.readStrongBinder(); 1007 IUiAutomationConnection c = IUiAutomationConnection.Stub.asInterface(b); 1008 int userId = data.readInt(); 1009 String abiOverride = data.readString(); 1010 boolean res = startInstrumentation(className, profileFile, fl, arguments, w, c, userId, 1011 abiOverride); 1012 reply.writeNoException(); 1013 reply.writeInt(res ? 1 : 0); 1014 return true; 1015 } 1016 1017 1018 case FINISH_INSTRUMENTATION_TRANSACTION: { 1019 data.enforceInterface(IActivityManager.descriptor); 1020 IBinder b = data.readStrongBinder(); 1021 IApplicationThread app = ApplicationThreadNative.asInterface(b); 1022 int resultCode = data.readInt(); 1023 Bundle results = data.readBundle(); 1024 finishInstrumentation(app, resultCode, results); 1025 reply.writeNoException(); 1026 return true; 1027 } 1028 1029 case GET_CONFIGURATION_TRANSACTION: { 1030 data.enforceInterface(IActivityManager.descriptor); 1031 Configuration config = getConfiguration(); 1032 reply.writeNoException(); 1033 config.writeToParcel(reply, 0); 1034 return true; 1035 } 1036 1037 case UPDATE_CONFIGURATION_TRANSACTION: { 1038 data.enforceInterface(IActivityManager.descriptor); 1039 Configuration config = Configuration.CREATOR.createFromParcel(data); 1040 updateConfiguration(config); 1041 reply.writeNoException(); 1042 return true; 1043 } 1044 1045 case SET_REQUESTED_ORIENTATION_TRANSACTION: { 1046 data.enforceInterface(IActivityManager.descriptor); 1047 IBinder token = data.readStrongBinder(); 1048 int requestedOrientation = data.readInt(); 1049 setRequestedOrientation(token, requestedOrientation); 1050 reply.writeNoException(); 1051 return true; 1052 } 1053 1054 case GET_REQUESTED_ORIENTATION_TRANSACTION: { 1055 data.enforceInterface(IActivityManager.descriptor); 1056 IBinder token = data.readStrongBinder(); 1057 int req = getRequestedOrientation(token); 1058 reply.writeNoException(); 1059 reply.writeInt(req); 1060 return true; 1061 } 1062 1063 case GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION: { 1064 data.enforceInterface(IActivityManager.descriptor); 1065 IBinder token = data.readStrongBinder(); 1066 ComponentName cn = getActivityClassForToken(token); 1067 reply.writeNoException(); 1068 ComponentName.writeToParcel(cn, reply); 1069 return true; 1070 } 1071 1072 case GET_PACKAGE_FOR_TOKEN_TRANSACTION: { 1073 data.enforceInterface(IActivityManager.descriptor); 1074 IBinder token = data.readStrongBinder(); 1075 reply.writeNoException(); 1076 reply.writeString(getPackageForToken(token)); 1077 return true; 1078 } 1079 1080 case GET_INTENT_SENDER_TRANSACTION: { 1081 data.enforceInterface(IActivityManager.descriptor); 1082 int type = data.readInt(); 1083 String packageName = data.readString(); 1084 IBinder token = data.readStrongBinder(); 1085 String resultWho = data.readString(); 1086 int requestCode = data.readInt(); 1087 Intent[] requestIntents; 1088 String[] requestResolvedTypes; 1089 if (data.readInt() != 0) { 1090 requestIntents = data.createTypedArray(Intent.CREATOR); 1091 requestResolvedTypes = data.createStringArray(); 1092 } else { 1093 requestIntents = null; 1094 requestResolvedTypes = null; 1095 } 1096 int fl = data.readInt(); 1097 Bundle options = data.readInt() != 0 1098 ? Bundle.CREATOR.createFromParcel(data) : null; 1099 int userId = data.readInt(); 1100 IIntentSender res = getIntentSender(type, packageName, token, 1101 resultWho, requestCode, requestIntents, 1102 requestResolvedTypes, fl, options, userId); 1103 reply.writeNoException(); 1104 reply.writeStrongBinder(res != null ? res.asBinder() : null); 1105 return true; 1106 } 1107 1108 case CANCEL_INTENT_SENDER_TRANSACTION: { 1109 data.enforceInterface(IActivityManager.descriptor); 1110 IIntentSender r = IIntentSender.Stub.asInterface( 1111 data.readStrongBinder()); 1112 cancelIntentSender(r); 1113 reply.writeNoException(); 1114 return true; 1115 } 1116 1117 case GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION: { 1118 data.enforceInterface(IActivityManager.descriptor); 1119 IIntentSender r = IIntentSender.Stub.asInterface( 1120 data.readStrongBinder()); 1121 String res = getPackageForIntentSender(r); 1122 reply.writeNoException(); 1123 reply.writeString(res); 1124 return true; 1125 } 1126 1127 case GET_UID_FOR_INTENT_SENDER_TRANSACTION: { 1128 data.enforceInterface(IActivityManager.descriptor); 1129 IIntentSender r = IIntentSender.Stub.asInterface( 1130 data.readStrongBinder()); 1131 int res = getUidForIntentSender(r); 1132 reply.writeNoException(); 1133 reply.writeInt(res); 1134 return true; 1135 } 1136 1137 case HANDLE_INCOMING_USER_TRANSACTION: { 1138 data.enforceInterface(IActivityManager.descriptor); 1139 int callingPid = data.readInt(); 1140 int callingUid = data.readInt(); 1141 int userId = data.readInt(); 1142 boolean allowAll = data.readInt() != 0 ; 1143 boolean requireFull = data.readInt() != 0; 1144 String name = data.readString(); 1145 String callerPackage = data.readString(); 1146 int res = handleIncomingUser(callingPid, callingUid, userId, allowAll, 1147 requireFull, name, callerPackage); 1148 reply.writeNoException(); 1149 reply.writeInt(res); 1150 return true; 1151 } 1152 1153 case SET_PROCESS_LIMIT_TRANSACTION: { 1154 data.enforceInterface(IActivityManager.descriptor); 1155 int max = data.readInt(); 1156 setProcessLimit(max); 1157 reply.writeNoException(); 1158 return true; 1159 } 1160 1161 case GET_PROCESS_LIMIT_TRANSACTION: { 1162 data.enforceInterface(IActivityManager.descriptor); 1163 int limit = getProcessLimit(); 1164 reply.writeNoException(); 1165 reply.writeInt(limit); 1166 return true; 1167 } 1168 1169 case SET_PROCESS_FOREGROUND_TRANSACTION: { 1170 data.enforceInterface(IActivityManager.descriptor); 1171 IBinder token = data.readStrongBinder(); 1172 int pid = data.readInt(); 1173 boolean isForeground = data.readInt() != 0; 1174 setProcessForeground(token, pid, isForeground); 1175 reply.writeNoException(); 1176 return true; 1177 } 1178 1179 case CHECK_PERMISSION_TRANSACTION: { 1180 data.enforceInterface(IActivityManager.descriptor); 1181 String perm = data.readString(); 1182 int pid = data.readInt(); 1183 int uid = data.readInt(); 1184 int res = checkPermission(perm, pid, uid); 1185 reply.writeNoException(); 1186 reply.writeInt(res); 1187 return true; 1188 } 1189 1190 case CHECK_PERMISSION_WITH_TOKEN_TRANSACTION: { 1191 data.enforceInterface(IActivityManager.descriptor); 1192 String perm = data.readString(); 1193 int pid = data.readInt(); 1194 int uid = data.readInt(); 1195 IBinder token = data.readStrongBinder(); 1196 int res = checkPermissionWithToken(perm, pid, uid, token); 1197 reply.writeNoException(); 1198 reply.writeInt(res); 1199 return true; 1200 } 1201 1202 case CHECK_URI_PERMISSION_TRANSACTION: { 1203 data.enforceInterface(IActivityManager.descriptor); 1204 Uri uri = Uri.CREATOR.createFromParcel(data); 1205 int pid = data.readInt(); 1206 int uid = data.readInt(); 1207 int mode = data.readInt(); 1208 int userId = data.readInt(); 1209 IBinder callerToken = data.readStrongBinder(); 1210 int res = checkUriPermission(uri, pid, uid, mode, userId, callerToken); 1211 reply.writeNoException(); 1212 reply.writeInt(res); 1213 return true; 1214 } 1215 1216 case CLEAR_APP_DATA_TRANSACTION: { 1217 data.enforceInterface(IActivityManager.descriptor); 1218 String packageName = data.readString(); 1219 IPackageDataObserver observer = IPackageDataObserver.Stub.asInterface( 1220 data.readStrongBinder()); 1221 int userId = data.readInt(); 1222 boolean res = clearApplicationUserData(packageName, observer, userId); 1223 reply.writeNoException(); 1224 reply.writeInt(res ? 1 : 0); 1225 return true; 1226 } 1227 1228 case GRANT_URI_PERMISSION_TRANSACTION: { 1229 data.enforceInterface(IActivityManager.descriptor); 1230 IBinder b = data.readStrongBinder(); 1231 IApplicationThread app = ApplicationThreadNative.asInterface(b); 1232 String targetPkg = data.readString(); 1233 Uri uri = Uri.CREATOR.createFromParcel(data); 1234 int mode = data.readInt(); 1235 int userId = data.readInt(); 1236 grantUriPermission(app, targetPkg, uri, mode, userId); 1237 reply.writeNoException(); 1238 return true; 1239 } 1240 1241 case REVOKE_URI_PERMISSION_TRANSACTION: { 1242 data.enforceInterface(IActivityManager.descriptor); 1243 IBinder b = data.readStrongBinder(); 1244 IApplicationThread app = ApplicationThreadNative.asInterface(b); 1245 Uri uri = Uri.CREATOR.createFromParcel(data); 1246 int mode = data.readInt(); 1247 int userId = data.readInt(); 1248 revokeUriPermission(app, uri, mode, userId); 1249 reply.writeNoException(); 1250 return true; 1251 } 1252 1253 case TAKE_PERSISTABLE_URI_PERMISSION_TRANSACTION: { 1254 data.enforceInterface(IActivityManager.descriptor); 1255 Uri uri = Uri.CREATOR.createFromParcel(data); 1256 int mode = data.readInt(); 1257 int userId = data.readInt(); 1258 takePersistableUriPermission(uri, mode, userId); 1259 reply.writeNoException(); 1260 return true; 1261 } 1262 1263 case RELEASE_PERSISTABLE_URI_PERMISSION_TRANSACTION: { 1264 data.enforceInterface(IActivityManager.descriptor); 1265 Uri uri = Uri.CREATOR.createFromParcel(data); 1266 int mode = data.readInt(); 1267 int userId = data.readInt(); 1268 releasePersistableUriPermission(uri, mode, userId); 1269 reply.writeNoException(); 1270 return true; 1271 } 1272 1273 case GET_PERSISTED_URI_PERMISSIONS_TRANSACTION: { 1274 data.enforceInterface(IActivityManager.descriptor); 1275 final String packageName = data.readString(); 1276 final boolean incoming = data.readInt() != 0; 1277 final ParceledListSlice<UriPermission> perms = getPersistedUriPermissions( 1278 packageName, incoming); 1279 reply.writeNoException(); 1280 perms.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1281 return true; 1282 } 1283 1284 case SHOW_WAITING_FOR_DEBUGGER_TRANSACTION: { 1285 data.enforceInterface(IActivityManager.descriptor); 1286 IBinder b = data.readStrongBinder(); 1287 IApplicationThread app = ApplicationThreadNative.asInterface(b); 1288 boolean waiting = data.readInt() != 0; 1289 showWaitingForDebugger(app, waiting); 1290 reply.writeNoException(); 1291 return true; 1292 } 1293 1294 case GET_MEMORY_INFO_TRANSACTION: { 1295 data.enforceInterface(IActivityManager.descriptor); 1296 ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo(); 1297 getMemoryInfo(mi); 1298 reply.writeNoException(); 1299 mi.writeToParcel(reply, 0); 1300 return true; 1301 } 1302 1303 case UNHANDLED_BACK_TRANSACTION: { 1304 data.enforceInterface(IActivityManager.descriptor); 1305 unhandledBack(); 1306 reply.writeNoException(); 1307 return true; 1308 } 1309 1310 case OPEN_CONTENT_URI_TRANSACTION: { 1311 data.enforceInterface(IActivityManager.descriptor); 1312 Uri uri = Uri.parse(data.readString()); 1313 ParcelFileDescriptor pfd = openContentUri(uri); 1314 reply.writeNoException(); 1315 if (pfd != null) { 1316 reply.writeInt(1); 1317 pfd.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1318 } else { 1319 reply.writeInt(0); 1320 } 1321 return true; 1322 } 1323 1324 case SET_LOCK_SCREEN_SHOWN_TRANSACTION: { 1325 data.enforceInterface(IActivityManager.descriptor); 1326 setLockScreenShown(data.readInt() != 0); 1327 reply.writeNoException(); 1328 return true; 1329 } 1330 1331 case SET_DEBUG_APP_TRANSACTION: { 1332 data.enforceInterface(IActivityManager.descriptor); 1333 String pn = data.readString(); 1334 boolean wfd = data.readInt() != 0; 1335 boolean per = data.readInt() != 0; 1336 setDebugApp(pn, wfd, per); 1337 reply.writeNoException(); 1338 return true; 1339 } 1340 1341 case SET_ALWAYS_FINISH_TRANSACTION: { 1342 data.enforceInterface(IActivityManager.descriptor); 1343 boolean enabled = data.readInt() != 0; 1344 setAlwaysFinish(enabled); 1345 reply.writeNoException(); 1346 return true; 1347 } 1348 1349 case SET_ACTIVITY_CONTROLLER_TRANSACTION: { 1350 data.enforceInterface(IActivityManager.descriptor); 1351 IActivityController watcher = IActivityController.Stub.asInterface( 1352 data.readStrongBinder()); 1353 setActivityController(watcher); 1354 reply.writeNoException(); 1355 return true; 1356 } 1357 1358 case ENTER_SAFE_MODE_TRANSACTION: { 1359 data.enforceInterface(IActivityManager.descriptor); 1360 enterSafeMode(); 1361 reply.writeNoException(); 1362 return true; 1363 } 1364 1365 case NOTE_WAKEUP_ALARM_TRANSACTION: { 1366 data.enforceInterface(IActivityManager.descriptor); 1367 IIntentSender is = IIntentSender.Stub.asInterface( 1368 data.readStrongBinder()); 1369 int sourceUid = data.readInt(); 1370 String sourcePkg = data.readString(); 1371 noteWakeupAlarm(is, sourceUid, sourcePkg); 1372 reply.writeNoException(); 1373 return true; 1374 } 1375 1376 case KILL_PIDS_TRANSACTION: { 1377 data.enforceInterface(IActivityManager.descriptor); 1378 int[] pids = data.createIntArray(); 1379 String reason = data.readString(); 1380 boolean secure = data.readInt() != 0; 1381 boolean res = killPids(pids, reason, secure); 1382 reply.writeNoException(); 1383 reply.writeInt(res ? 1 : 0); 1384 return true; 1385 } 1386 1387 case KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION: { 1388 data.enforceInterface(IActivityManager.descriptor); 1389 String reason = data.readString(); 1390 boolean res = killProcessesBelowForeground(reason); 1391 reply.writeNoException(); 1392 reply.writeInt(res ? 1 : 0); 1393 return true; 1394 } 1395 1396 case HANDLE_APPLICATION_CRASH_TRANSACTION: { 1397 data.enforceInterface(IActivityManager.descriptor); 1398 IBinder app = data.readStrongBinder(); 1399 ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data); 1400 handleApplicationCrash(app, ci); 1401 reply.writeNoException(); 1402 return true; 1403 } 1404 1405 case HANDLE_APPLICATION_WTF_TRANSACTION: { 1406 data.enforceInterface(IActivityManager.descriptor); 1407 IBinder app = data.readStrongBinder(); 1408 String tag = data.readString(); 1409 boolean system = data.readInt() != 0; 1410 ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data); 1411 boolean res = handleApplicationWtf(app, tag, system, ci); 1412 reply.writeNoException(); 1413 reply.writeInt(res ? 1 : 0); 1414 return true; 1415 } 1416 1417 case HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION: { 1418 data.enforceInterface(IActivityManager.descriptor); 1419 IBinder app = data.readStrongBinder(); 1420 int violationMask = data.readInt(); 1421 StrictMode.ViolationInfo info = new StrictMode.ViolationInfo(data); 1422 handleApplicationStrictModeViolation(app, violationMask, info); 1423 reply.writeNoException(); 1424 return true; 1425 } 1426 1427 case SIGNAL_PERSISTENT_PROCESSES_TRANSACTION: { 1428 data.enforceInterface(IActivityManager.descriptor); 1429 int sig = data.readInt(); 1430 signalPersistentProcesses(sig); 1431 reply.writeNoException(); 1432 return true; 1433 } 1434 1435 case KILL_BACKGROUND_PROCESSES_TRANSACTION: { 1436 data.enforceInterface(IActivityManager.descriptor); 1437 String packageName = data.readString(); 1438 int userId = data.readInt(); 1439 killBackgroundProcesses(packageName, userId); 1440 reply.writeNoException(); 1441 return true; 1442 } 1443 1444 case KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION: { 1445 data.enforceInterface(IActivityManager.descriptor); 1446 killAllBackgroundProcesses(); 1447 reply.writeNoException(); 1448 return true; 1449 } 1450 1451 case FORCE_STOP_PACKAGE_TRANSACTION: { 1452 data.enforceInterface(IActivityManager.descriptor); 1453 String packageName = data.readString(); 1454 int userId = data.readInt(); 1455 forceStopPackage(packageName, userId); 1456 reply.writeNoException(); 1457 return true; 1458 } 1459 1460 case GET_MY_MEMORY_STATE_TRANSACTION: { 1461 data.enforceInterface(IActivityManager.descriptor); 1462 ActivityManager.RunningAppProcessInfo info = 1463 new ActivityManager.RunningAppProcessInfo(); 1464 getMyMemoryState(info); 1465 reply.writeNoException(); 1466 info.writeToParcel(reply, 0); 1467 return true; 1468 } 1469 1470 case GET_DEVICE_CONFIGURATION_TRANSACTION: { 1471 data.enforceInterface(IActivityManager.descriptor); 1472 ConfigurationInfo config = getDeviceConfigurationInfo(); 1473 reply.writeNoException(); 1474 config.writeToParcel(reply, 0); 1475 return true; 1476 } 1477 1478 case PROFILE_CONTROL_TRANSACTION: { 1479 data.enforceInterface(IActivityManager.descriptor); 1480 String process = data.readString(); 1481 int userId = data.readInt(); 1482 boolean start = data.readInt() != 0; 1483 int profileType = data.readInt(); 1484 ProfilerInfo profilerInfo = data.readInt() != 0 1485 ? ProfilerInfo.CREATOR.createFromParcel(data) : null; 1486 boolean res = profileControl(process, userId, start, profilerInfo, profileType); 1487 reply.writeNoException(); 1488 reply.writeInt(res ? 1 : 0); 1489 return true; 1490 } 1491 1492 case SHUTDOWN_TRANSACTION: { 1493 data.enforceInterface(IActivityManager.descriptor); 1494 boolean res = shutdown(data.readInt()); 1495 reply.writeNoException(); 1496 reply.writeInt(res ? 1 : 0); 1497 return true; 1498 } 1499 1500 case STOP_APP_SWITCHES_TRANSACTION: { 1501 data.enforceInterface(IActivityManager.descriptor); 1502 stopAppSwitches(); 1503 reply.writeNoException(); 1504 return true; 1505 } 1506 1507 case RESUME_APP_SWITCHES_TRANSACTION: { 1508 data.enforceInterface(IActivityManager.descriptor); 1509 resumeAppSwitches(); 1510 reply.writeNoException(); 1511 return true; 1512 } 1513 1514 case PEEK_SERVICE_TRANSACTION: { 1515 data.enforceInterface(IActivityManager.descriptor); 1516 Intent service = Intent.CREATOR.createFromParcel(data); 1517 String resolvedType = data.readString(); 1518 IBinder binder = peekService(service, resolvedType); 1519 reply.writeNoException(); 1520 reply.writeStrongBinder(binder); 1521 return true; 1522 } 1523 1524 case START_BACKUP_AGENT_TRANSACTION: { 1525 data.enforceInterface(IActivityManager.descriptor); 1526 ApplicationInfo info = ApplicationInfo.CREATOR.createFromParcel(data); 1527 int backupRestoreMode = data.readInt(); 1528 boolean success = bindBackupAgent(info, backupRestoreMode); 1529 reply.writeNoException(); 1530 reply.writeInt(success ? 1 : 0); 1531 return true; 1532 } 1533 1534 case BACKUP_AGENT_CREATED_TRANSACTION: { 1535 data.enforceInterface(IActivityManager.descriptor); 1536 String packageName = data.readString(); 1537 IBinder agent = data.readStrongBinder(); 1538 backupAgentCreated(packageName, agent); 1539 reply.writeNoException(); 1540 return true; 1541 } 1542 1543 case UNBIND_BACKUP_AGENT_TRANSACTION: { 1544 data.enforceInterface(IActivityManager.descriptor); 1545 ApplicationInfo info = ApplicationInfo.CREATOR.createFromParcel(data); 1546 unbindBackupAgent(info); 1547 reply.writeNoException(); 1548 return true; 1549 } 1550 1551 case ADD_PACKAGE_DEPENDENCY_TRANSACTION: { 1552 data.enforceInterface(IActivityManager.descriptor); 1553 String packageName = data.readString(); 1554 addPackageDependency(packageName); 1555 reply.writeNoException(); 1556 return true; 1557 } 1558 1559 case KILL_APPLICATION_WITH_APPID_TRANSACTION: { 1560 data.enforceInterface(IActivityManager.descriptor); 1561 String pkg = data.readString(); 1562 int appid = data.readInt(); 1563 String reason = data.readString(); 1564 killApplicationWithAppId(pkg, appid, reason); 1565 reply.writeNoException(); 1566 return true; 1567 } 1568 1569 case CLOSE_SYSTEM_DIALOGS_TRANSACTION: { 1570 data.enforceInterface(IActivityManager.descriptor); 1571 String reason = data.readString(); 1572 closeSystemDialogs(reason); 1573 reply.writeNoException(); 1574 return true; 1575 } 1576 1577 case GET_PROCESS_MEMORY_INFO_TRANSACTION: { 1578 data.enforceInterface(IActivityManager.descriptor); 1579 int[] pids = data.createIntArray(); 1580 Debug.MemoryInfo[] res = getProcessMemoryInfo(pids); 1581 reply.writeNoException(); 1582 reply.writeTypedArray(res, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1583 return true; 1584 } 1585 1586 case KILL_APPLICATION_PROCESS_TRANSACTION: { 1587 data.enforceInterface(IActivityManager.descriptor); 1588 String processName = data.readString(); 1589 int uid = data.readInt(); 1590 killApplicationProcess(processName, uid); 1591 reply.writeNoException(); 1592 return true; 1593 } 1594 1595 case OVERRIDE_PENDING_TRANSITION_TRANSACTION: { 1596 data.enforceInterface(IActivityManager.descriptor); 1597 IBinder token = data.readStrongBinder(); 1598 String packageName = data.readString(); 1599 int enterAnim = data.readInt(); 1600 int exitAnim = data.readInt(); 1601 overridePendingTransition(token, packageName, enterAnim, exitAnim); 1602 reply.writeNoException(); 1603 return true; 1604 } 1605 1606 case IS_USER_A_MONKEY_TRANSACTION: { 1607 data.enforceInterface(IActivityManager.descriptor); 1608 boolean areThey = isUserAMonkey(); 1609 reply.writeNoException(); 1610 reply.writeInt(areThey ? 1 : 0); 1611 return true; 1612 } 1613 1614 case SET_USER_IS_MONKEY_TRANSACTION: { 1615 data.enforceInterface(IActivityManager.descriptor); 1616 final boolean monkey = (data.readInt() == 1); 1617 setUserIsMonkey(monkey); 1618 reply.writeNoException(); 1619 return true; 1620 } 1621 1622 case FINISH_HEAVY_WEIGHT_APP_TRANSACTION: { 1623 data.enforceInterface(IActivityManager.descriptor); 1624 finishHeavyWeightApp(); 1625 reply.writeNoException(); 1626 return true; 1627 } 1628 1629 case IS_IMMERSIVE_TRANSACTION: { 1630 data.enforceInterface(IActivityManager.descriptor); 1631 IBinder token = data.readStrongBinder(); 1632 boolean isit = isImmersive(token); 1633 reply.writeNoException(); 1634 reply.writeInt(isit ? 1 : 0); 1635 return true; 1636 } 1637 1638 case IS_TOP_OF_TASK_TRANSACTION: { 1639 data.enforceInterface(IActivityManager.descriptor); 1640 IBinder token = data.readStrongBinder(); 1641 final boolean isTopOfTask = isTopOfTask(token); 1642 reply.writeNoException(); 1643 reply.writeInt(isTopOfTask ? 1 : 0); 1644 return true; 1645 } 1646 1647 case CONVERT_FROM_TRANSLUCENT_TRANSACTION: { 1648 data.enforceInterface(IActivityManager.descriptor); 1649 IBinder token = data.readStrongBinder(); 1650 boolean converted = convertFromTranslucent(token); 1651 reply.writeNoException(); 1652 reply.writeInt(converted ? 1 : 0); 1653 return true; 1654 } 1655 1656 case CONVERT_TO_TRANSLUCENT_TRANSACTION: { 1657 data.enforceInterface(IActivityManager.descriptor); 1658 IBinder token = data.readStrongBinder(); 1659 final Bundle bundle; 1660 if (data.readInt() == 0) { 1661 bundle = null; 1662 } else { 1663 bundle = data.readBundle(); 1664 } 1665 final ActivityOptions options = bundle == null ? null : new ActivityOptions(bundle); 1666 boolean converted = convertToTranslucent(token, options); 1667 reply.writeNoException(); 1668 reply.writeInt(converted ? 1 : 0); 1669 return true; 1670 } 1671 1672 case GET_ACTIVITY_OPTIONS_TRANSACTION: { 1673 data.enforceInterface(IActivityManager.descriptor); 1674 IBinder token = data.readStrongBinder(); 1675 final ActivityOptions options = getActivityOptions(token); 1676 reply.writeNoException(); 1677 reply.writeBundle(options == null ? null : options.toBundle()); 1678 return true; 1679 } 1680 1681 case SET_IMMERSIVE_TRANSACTION: { 1682 data.enforceInterface(IActivityManager.descriptor); 1683 IBinder token = data.readStrongBinder(); 1684 boolean imm = data.readInt() == 1; 1685 setImmersive(token, imm); 1686 reply.writeNoException(); 1687 return true; 1688 } 1689 1690 case IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION: { 1691 data.enforceInterface(IActivityManager.descriptor); 1692 boolean isit = isTopActivityImmersive(); 1693 reply.writeNoException(); 1694 reply.writeInt(isit ? 1 : 0); 1695 return true; 1696 } 1697 1698 case CRASH_APPLICATION_TRANSACTION: { 1699 data.enforceInterface(IActivityManager.descriptor); 1700 int uid = data.readInt(); 1701 int initialPid = data.readInt(); 1702 String packageName = data.readString(); 1703 String message = data.readString(); 1704 crashApplication(uid, initialPid, packageName, message); 1705 reply.writeNoException(); 1706 return true; 1707 } 1708 1709 case GET_PROVIDER_MIME_TYPE_TRANSACTION: { 1710 data.enforceInterface(IActivityManager.descriptor); 1711 Uri uri = Uri.CREATOR.createFromParcel(data); 1712 int userId = data.readInt(); 1713 String type = getProviderMimeType(uri, userId); 1714 reply.writeNoException(); 1715 reply.writeString(type); 1716 return true; 1717 } 1718 1719 case NEW_URI_PERMISSION_OWNER_TRANSACTION: { 1720 data.enforceInterface(IActivityManager.descriptor); 1721 String name = data.readString(); 1722 IBinder perm = newUriPermissionOwner(name); 1723 reply.writeNoException(); 1724 reply.writeStrongBinder(perm); 1725 return true; 1726 } 1727 1728 case GRANT_URI_PERMISSION_FROM_OWNER_TRANSACTION: { 1729 data.enforceInterface(IActivityManager.descriptor); 1730 IBinder owner = data.readStrongBinder(); 1731 int fromUid = data.readInt(); 1732 String targetPkg = data.readString(); 1733 Uri uri = Uri.CREATOR.createFromParcel(data); 1734 int mode = data.readInt(); 1735 int sourceUserId = data.readInt(); 1736 int targetUserId = data.readInt(); 1737 grantUriPermissionFromOwner(owner, fromUid, targetPkg, uri, mode, sourceUserId, 1738 targetUserId); 1739 reply.writeNoException(); 1740 return true; 1741 } 1742 1743 case REVOKE_URI_PERMISSION_FROM_OWNER_TRANSACTION: { 1744 data.enforceInterface(IActivityManager.descriptor); 1745 IBinder owner = data.readStrongBinder(); 1746 Uri uri = null; 1747 if (data.readInt() != 0) { 1748 uri = Uri.CREATOR.createFromParcel(data); 1749 } 1750 int mode = data.readInt(); 1751 int userId = data.readInt(); 1752 revokeUriPermissionFromOwner(owner, uri, mode, userId); 1753 reply.writeNoException(); 1754 return true; 1755 } 1756 1757 case CHECK_GRANT_URI_PERMISSION_TRANSACTION: { 1758 data.enforceInterface(IActivityManager.descriptor); 1759 int callingUid = data.readInt(); 1760 String targetPkg = data.readString(); 1761 Uri uri = Uri.CREATOR.createFromParcel(data); 1762 int modeFlags = data.readInt(); 1763 int userId = data.readInt(); 1764 int res = checkGrantUriPermission(callingUid, targetPkg, uri, modeFlags, userId); 1765 reply.writeNoException(); 1766 reply.writeInt(res); 1767 return true; 1768 } 1769 1770 case DUMP_HEAP_TRANSACTION: { 1771 data.enforceInterface(IActivityManager.descriptor); 1772 String process = data.readString(); 1773 int userId = data.readInt(); 1774 boolean managed = data.readInt() != 0; 1775 String path = data.readString(); 1776 ParcelFileDescriptor fd = data.readInt() != 0 1777 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null; 1778 boolean res = dumpHeap(process, userId, managed, path, fd); 1779 reply.writeNoException(); 1780 reply.writeInt(res ? 1 : 0); 1781 return true; 1782 } 1783 1784 case START_ACTIVITIES_TRANSACTION: 1785 { 1786 data.enforceInterface(IActivityManager.descriptor); 1787 IBinder b = data.readStrongBinder(); 1788 IApplicationThread app = ApplicationThreadNative.asInterface(b); 1789 String callingPackage = data.readString(); 1790 Intent[] intents = data.createTypedArray(Intent.CREATOR); 1791 String[] resolvedTypes = data.createStringArray(); 1792 IBinder resultTo = data.readStrongBinder(); 1793 Bundle options = data.readInt() != 0 1794 ? Bundle.CREATOR.createFromParcel(data) : null; 1795 int userId = data.readInt(); 1796 int result = startActivities(app, callingPackage, intents, resolvedTypes, resultTo, 1797 options, userId); 1798 reply.writeNoException(); 1799 reply.writeInt(result); 1800 return true; 1801 } 1802 1803 case GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION: 1804 { 1805 data.enforceInterface(IActivityManager.descriptor); 1806 int mode = getFrontActivityScreenCompatMode(); 1807 reply.writeNoException(); 1808 reply.writeInt(mode); 1809 return true; 1810 } 1811 1812 case SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION: 1813 { 1814 data.enforceInterface(IActivityManager.descriptor); 1815 int mode = data.readInt(); 1816 setFrontActivityScreenCompatMode(mode); 1817 reply.writeNoException(); 1818 reply.writeInt(mode); 1819 return true; 1820 } 1821 1822 case GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION: 1823 { 1824 data.enforceInterface(IActivityManager.descriptor); 1825 String pkg = data.readString(); 1826 int mode = getPackageScreenCompatMode(pkg); 1827 reply.writeNoException(); 1828 reply.writeInt(mode); 1829 return true; 1830 } 1831 1832 case SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION: 1833 { 1834 data.enforceInterface(IActivityManager.descriptor); 1835 String pkg = data.readString(); 1836 int mode = data.readInt(); 1837 setPackageScreenCompatMode(pkg, mode); 1838 reply.writeNoException(); 1839 return true; 1840 } 1841 1842 case SWITCH_USER_TRANSACTION: { 1843 data.enforceInterface(IActivityManager.descriptor); 1844 int userid = data.readInt(); 1845 boolean result = switchUser(userid); 1846 reply.writeNoException(); 1847 reply.writeInt(result ? 1 : 0); 1848 return true; 1849 } 1850 1851 case START_USER_IN_BACKGROUND_TRANSACTION: { 1852 data.enforceInterface(IActivityManager.descriptor); 1853 int userid = data.readInt(); 1854 boolean result = startUserInBackground(userid); 1855 reply.writeNoException(); 1856 reply.writeInt(result ? 1 : 0); 1857 return true; 1858 } 1859 1860 case STOP_USER_TRANSACTION: { 1861 data.enforceInterface(IActivityManager.descriptor); 1862 int userid = data.readInt(); 1863 IStopUserCallback callback = IStopUserCallback.Stub.asInterface( 1864 data.readStrongBinder()); 1865 int result = stopUser(userid, callback); 1866 reply.writeNoException(); 1867 reply.writeInt(result); 1868 return true; 1869 } 1870 1871 case GET_CURRENT_USER_TRANSACTION: { 1872 data.enforceInterface(IActivityManager.descriptor); 1873 UserInfo userInfo = getCurrentUser(); 1874 reply.writeNoException(); 1875 userInfo.writeToParcel(reply, 0); 1876 return true; 1877 } 1878 1879 case IS_USER_RUNNING_TRANSACTION: { 1880 data.enforceInterface(IActivityManager.descriptor); 1881 int userid = data.readInt(); 1882 boolean orStopping = data.readInt() != 0; 1883 boolean result = isUserRunning(userid, orStopping); 1884 reply.writeNoException(); 1885 reply.writeInt(result ? 1 : 0); 1886 return true; 1887 } 1888 1889 case GET_RUNNING_USER_IDS_TRANSACTION: { 1890 data.enforceInterface(IActivityManager.descriptor); 1891 int[] result = getRunningUserIds(); 1892 reply.writeNoException(); 1893 reply.writeIntArray(result); 1894 return true; 1895 } 1896 1897 case REMOVE_TASK_TRANSACTION: 1898 { 1899 data.enforceInterface(IActivityManager.descriptor); 1900 int taskId = data.readInt(); 1901 boolean result = removeTask(taskId); 1902 reply.writeNoException(); 1903 reply.writeInt(result ? 1 : 0); 1904 return true; 1905 } 1906 1907 case REGISTER_PROCESS_OBSERVER_TRANSACTION: { 1908 data.enforceInterface(IActivityManager.descriptor); 1909 IProcessObserver observer = IProcessObserver.Stub.asInterface( 1910 data.readStrongBinder()); 1911 registerProcessObserver(observer); 1912 return true; 1913 } 1914 1915 case UNREGISTER_PROCESS_OBSERVER_TRANSACTION: { 1916 data.enforceInterface(IActivityManager.descriptor); 1917 IProcessObserver observer = IProcessObserver.Stub.asInterface( 1918 data.readStrongBinder()); 1919 unregisterProcessObserver(observer); 1920 return true; 1921 } 1922 1923 case GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION: 1924 { 1925 data.enforceInterface(IActivityManager.descriptor); 1926 String pkg = data.readString(); 1927 boolean ask = getPackageAskScreenCompat(pkg); 1928 reply.writeNoException(); 1929 reply.writeInt(ask ? 1 : 0); 1930 return true; 1931 } 1932 1933 case SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION: 1934 { 1935 data.enforceInterface(IActivityManager.descriptor); 1936 String pkg = data.readString(); 1937 boolean ask = data.readInt() != 0; 1938 setPackageAskScreenCompat(pkg, ask); 1939 reply.writeNoException(); 1940 return true; 1941 } 1942 1943 case IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION: { 1944 data.enforceInterface(IActivityManager.descriptor); 1945 IIntentSender r = IIntentSender.Stub.asInterface( 1946 data.readStrongBinder()); 1947 boolean res = isIntentSenderTargetedToPackage(r); 1948 reply.writeNoException(); 1949 reply.writeInt(res ? 1 : 0); 1950 return true; 1951 } 1952 1953 case IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION: { 1954 data.enforceInterface(IActivityManager.descriptor); 1955 IIntentSender r = IIntentSender.Stub.asInterface( 1956 data.readStrongBinder()); 1957 boolean res = isIntentSenderAnActivity(r); 1958 reply.writeNoException(); 1959 reply.writeInt(res ? 1 : 0); 1960 return true; 1961 } 1962 1963 case GET_INTENT_FOR_INTENT_SENDER_TRANSACTION: { 1964 data.enforceInterface(IActivityManager.descriptor); 1965 IIntentSender r = IIntentSender.Stub.asInterface( 1966 data.readStrongBinder()); 1967 Intent intent = getIntentForIntentSender(r); 1968 reply.writeNoException(); 1969 if (intent != null) { 1970 reply.writeInt(1); 1971 intent.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1972 } else { 1973 reply.writeInt(0); 1974 } 1975 return true; 1976 } 1977 1978 case GET_TAG_FOR_INTENT_SENDER_TRANSACTION: { 1979 data.enforceInterface(IActivityManager.descriptor); 1980 IIntentSender r = IIntentSender.Stub.asInterface( 1981 data.readStrongBinder()); 1982 String prefix = data.readString(); 1983 String tag = getTagForIntentSender(r, prefix); 1984 reply.writeNoException(); 1985 reply.writeString(tag); 1986 return true; 1987 } 1988 1989 case UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION: { 1990 data.enforceInterface(IActivityManager.descriptor); 1991 Configuration config = Configuration.CREATOR.createFromParcel(data); 1992 updatePersistentConfiguration(config); 1993 reply.writeNoException(); 1994 return true; 1995 } 1996 1997 case GET_PROCESS_PSS_TRANSACTION: { 1998 data.enforceInterface(IActivityManager.descriptor); 1999 int[] pids = data.createIntArray(); 2000 long[] pss = getProcessPss(pids); 2001 reply.writeNoException(); 2002 reply.writeLongArray(pss); 2003 return true; 2004 } 2005 2006 case SHOW_BOOT_MESSAGE_TRANSACTION: { 2007 data.enforceInterface(IActivityManager.descriptor); 2008 CharSequence msg = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data); 2009 boolean always = data.readInt() != 0; 2010 showBootMessage(msg, always); 2011 reply.writeNoException(); 2012 return true; 2013 } 2014 2015 case KEYGUARD_WAITING_FOR_ACTIVITY_DRAWN_TRANSACTION: { 2016 data.enforceInterface(IActivityManager.descriptor); 2017 keyguardWaitingForActivityDrawn(); 2018 reply.writeNoException(); 2019 return true; 2020 } 2021 2022 case SHOULD_UP_RECREATE_TASK_TRANSACTION: { 2023 data.enforceInterface(IActivityManager.descriptor); 2024 IBinder token = data.readStrongBinder(); 2025 String destAffinity = data.readString(); 2026 boolean res = shouldUpRecreateTask(token, destAffinity); 2027 reply.writeNoException(); 2028 reply.writeInt(res ? 1 : 0); 2029 return true; 2030 } 2031 2032 case NAVIGATE_UP_TO_TRANSACTION: { 2033 data.enforceInterface(IActivityManager.descriptor); 2034 IBinder token = data.readStrongBinder(); 2035 Intent target = Intent.CREATOR.createFromParcel(data); 2036 int resultCode = data.readInt(); 2037 Intent resultData = null; 2038 if (data.readInt() != 0) { 2039 resultData = Intent.CREATOR.createFromParcel(data); 2040 } 2041 boolean res = navigateUpTo(token, target, resultCode, resultData); 2042 reply.writeNoException(); 2043 reply.writeInt(res ? 1 : 0); 2044 return true; 2045 } 2046 2047 case GET_LAUNCHED_FROM_UID_TRANSACTION: { 2048 data.enforceInterface(IActivityManager.descriptor); 2049 IBinder token = data.readStrongBinder(); 2050 int res = getLaunchedFromUid(token); 2051 reply.writeNoException(); 2052 reply.writeInt(res); 2053 return true; 2054 } 2055 2056 case GET_LAUNCHED_FROM_PACKAGE_TRANSACTION: { 2057 data.enforceInterface(IActivityManager.descriptor); 2058 IBinder token = data.readStrongBinder(); 2059 String res = getLaunchedFromPackage(token); 2060 reply.writeNoException(); 2061 reply.writeString(res); 2062 return true; 2063 } 2064 2065 case REGISTER_USER_SWITCH_OBSERVER_TRANSACTION: { 2066 data.enforceInterface(IActivityManager.descriptor); 2067 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface( 2068 data.readStrongBinder()); 2069 registerUserSwitchObserver(observer); 2070 reply.writeNoException(); 2071 return true; 2072 } 2073 2074 case UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION: { 2075 data.enforceInterface(IActivityManager.descriptor); 2076 IUserSwitchObserver observer = IUserSwitchObserver.Stub.asInterface( 2077 data.readStrongBinder()); 2078 unregisterUserSwitchObserver(observer); 2079 reply.writeNoException(); 2080 return true; 2081 } 2082 2083 case REQUEST_BUG_REPORT_TRANSACTION: { 2084 data.enforceInterface(IActivityManager.descriptor); 2085 requestBugReport(); 2086 reply.writeNoException(); 2087 return true; 2088 } 2089 2090 case INPUT_DISPATCHING_TIMED_OUT_TRANSACTION: { 2091 data.enforceInterface(IActivityManager.descriptor); 2092 int pid = data.readInt(); 2093 boolean aboveSystem = data.readInt() != 0; 2094 String reason = data.readString(); 2095 long res = inputDispatchingTimedOut(pid, aboveSystem, reason); 2096 reply.writeNoException(); 2097 reply.writeLong(res); 2098 return true; 2099 } 2100 2101 case GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION: { 2102 data.enforceInterface(IActivityManager.descriptor); 2103 int requestType = data.readInt(); 2104 Bundle res = getAssistContextExtras(requestType); 2105 reply.writeNoException(); 2106 reply.writeBundle(res); 2107 return true; 2108 } 2109 2110 case REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION: { 2111 data.enforceInterface(IActivityManager.descriptor); 2112 IBinder token = data.readStrongBinder(); 2113 Bundle extras = data.readBundle(); 2114 reportAssistContextExtras(token, extras); 2115 reply.writeNoException(); 2116 return true; 2117 } 2118 2119 case LAUNCH_ASSIST_INTENT_TRANSACTION: { 2120 data.enforceInterface(IActivityManager.descriptor); 2121 Intent intent = Intent.CREATOR.createFromParcel(data); 2122 int requestType = data.readInt(); 2123 String hint = data.readString(); 2124 int userHandle = data.readInt(); 2125 boolean res = launchAssistIntent(intent, requestType, hint, userHandle); 2126 reply.writeNoException(); 2127 reply.writeInt(res ? 1 : 0); 2128 return true; 2129 } 2130 2131 case KILL_UID_TRANSACTION: { 2132 data.enforceInterface(IActivityManager.descriptor); 2133 int uid = data.readInt(); 2134 String reason = data.readString(); 2135 killUid(uid, reason); 2136 reply.writeNoException(); 2137 return true; 2138 } 2139 2140 case HANG_TRANSACTION: { 2141 data.enforceInterface(IActivityManager.descriptor); 2142 IBinder who = data.readStrongBinder(); 2143 boolean allowRestart = data.readInt() != 0; 2144 hang(who, allowRestart); 2145 reply.writeNoException(); 2146 return true; 2147 } 2148 2149 case REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION: { 2150 data.enforceInterface(IActivityManager.descriptor); 2151 IBinder token = data.readStrongBinder(); 2152 reportActivityFullyDrawn(token); 2153 reply.writeNoException(); 2154 return true; 2155 } 2156 2157 case NOTIFY_ACTIVITY_DRAWN_TRANSACTION: { 2158 data.enforceInterface(IActivityManager.descriptor); 2159 IBinder token = data.readStrongBinder(); 2160 notifyActivityDrawn(token); 2161 reply.writeNoException(); 2162 return true; 2163 } 2164 2165 case RESTART_TRANSACTION: { 2166 data.enforceInterface(IActivityManager.descriptor); 2167 restart(); 2168 reply.writeNoException(); 2169 return true; 2170 } 2171 2172 case PERFORM_IDLE_MAINTENANCE_TRANSACTION: { 2173 data.enforceInterface(IActivityManager.descriptor); 2174 performIdleMaintenance(); 2175 reply.writeNoException(); 2176 return true; 2177 } 2178 2179 case CREATE_VIRTUAL_ACTIVITY_CONTAINER_TRANSACTION: { 2180 data.enforceInterface(IActivityManager.descriptor); 2181 IBinder parentActivityToken = data.readStrongBinder(); 2182 IActivityContainerCallback callback = 2183 IActivityContainerCallback.Stub.asInterface(data.readStrongBinder()); 2184 IActivityContainer activityContainer = 2185 createVirtualActivityContainer(parentActivityToken, callback); 2186 reply.writeNoException(); 2187 if (activityContainer != null) { 2188 reply.writeInt(1); 2189 reply.writeStrongBinder(activityContainer.asBinder()); 2190 } else { 2191 reply.writeInt(0); 2192 } 2193 return true; 2194 } 2195 2196 case DELETE_ACTIVITY_CONTAINER_TRANSACTION: { 2197 data.enforceInterface(IActivityManager.descriptor); 2198 IActivityContainer activityContainer = 2199 IActivityContainer.Stub.asInterface(data.readStrongBinder()); 2200 deleteActivityContainer(activityContainer); 2201 reply.writeNoException(); 2202 return true; 2203 } 2204 2205 case CREATE_STACK_ON_DISPLAY: { 2206 data.enforceInterface(IActivityManager.descriptor); 2207 int displayId = data.readInt(); 2208 IActivityContainer activityContainer = createStackOnDisplay(displayId); 2209 reply.writeNoException(); 2210 if (activityContainer != null) { 2211 reply.writeInt(1); 2212 reply.writeStrongBinder(activityContainer.asBinder()); 2213 } else { 2214 reply.writeInt(0); 2215 } 2216 return true; 2217 } 2218 2219 case GET_ACTIVITY_CONTAINER_TRANSACTION: { 2220 data.enforceInterface(IActivityManager.descriptor); 2221 IBinder activityToken = data.readStrongBinder(); 2222 IActivityContainer activityContainer = getEnclosingActivityContainer(activityToken); 2223 reply.writeNoException(); 2224 if (activityContainer != null) { 2225 reply.writeInt(1); 2226 reply.writeStrongBinder(activityContainer.asBinder()); 2227 } else { 2228 reply.writeInt(0); 2229 } 2230 return true; 2231 } 2232 2233 case GET_HOME_ACTIVITY_TOKEN_TRANSACTION: { 2234 data.enforceInterface(IActivityManager.descriptor); 2235 IBinder homeActivityToken = getHomeActivityToken(); 2236 reply.writeNoException(); 2237 reply.writeStrongBinder(homeActivityToken); 2238 return true; 2239 } 2240 2241 case START_LOCK_TASK_BY_TASK_ID_TRANSACTION: { 2242 data.enforceInterface(IActivityManager.descriptor); 2243 final int taskId = data.readInt(); 2244 startLockTaskMode(taskId); 2245 reply.writeNoException(); 2246 return true; 2247 } 2248 2249 case START_LOCK_TASK_BY_TOKEN_TRANSACTION: { 2250 data.enforceInterface(IActivityManager.descriptor); 2251 IBinder token = data.readStrongBinder(); 2252 startLockTaskMode(token); 2253 reply.writeNoException(); 2254 return true; 2255 } 2256 2257 case START_LOCK_TASK_BY_CURRENT_TRANSACTION: { 2258 data.enforceInterface(IActivityManager.descriptor); 2259 startLockTaskModeOnCurrent(); 2260 reply.writeNoException(); 2261 return true; 2262 } 2263 2264 case STOP_LOCK_TASK_MODE_TRANSACTION: { 2265 data.enforceInterface(IActivityManager.descriptor); 2266 stopLockTaskMode(); 2267 reply.writeNoException(); 2268 return true; 2269 } 2270 2271 case STOP_LOCK_TASK_BY_CURRENT_TRANSACTION: { 2272 data.enforceInterface(IActivityManager.descriptor); 2273 stopLockTaskModeOnCurrent(); 2274 reply.writeNoException(); 2275 return true; 2276 } 2277 2278 case IS_IN_LOCK_TASK_MODE_TRANSACTION: { 2279 data.enforceInterface(IActivityManager.descriptor); 2280 final boolean isInLockTaskMode = isInLockTaskMode(); 2281 reply.writeNoException(); 2282 reply.writeInt(isInLockTaskMode ? 1 : 0); 2283 return true; 2284 } 2285 2286 case SET_TASK_DESCRIPTION_TRANSACTION: { 2287 data.enforceInterface(IActivityManager.descriptor); 2288 IBinder token = data.readStrongBinder(); 2289 ActivityManager.TaskDescription values = 2290 ActivityManager.TaskDescription.CREATOR.createFromParcel(data); 2291 setTaskDescription(token, values); 2292 reply.writeNoException(); 2293 return true; 2294 } 2295 2296 case GET_TASK_DESCRIPTION_ICON_TRANSACTION: { 2297 data.enforceInterface(IActivityManager.descriptor); 2298 String filename = data.readString(); 2299 Bitmap icon = getTaskDescriptionIcon(filename); 2300 reply.writeNoException(); 2301 if (icon == null) { 2302 reply.writeInt(0); 2303 } else { 2304 reply.writeInt(1); 2305 icon.writeToParcel(reply, 0); 2306 } 2307 return true; 2308 } 2309 2310 case START_IN_PLACE_ANIMATION_TRANSACTION: { 2311 data.enforceInterface(IActivityManager.descriptor); 2312 final Bundle bundle; 2313 if (data.readInt() == 0) { 2314 bundle = null; 2315 } else { 2316 bundle = data.readBundle(); 2317 } 2318 final ActivityOptions options = bundle == null ? null : new ActivityOptions(bundle); 2319 startInPlaceAnimationOnFrontMostApplication(options); 2320 reply.writeNoException(); 2321 return true; 2322 } 2323 2324 case REQUEST_VISIBLE_BEHIND_TRANSACTION: { 2325 data.enforceInterface(IActivityManager.descriptor); 2326 IBinder token = data.readStrongBinder(); 2327 boolean enable = data.readInt() > 0; 2328 boolean success = requestVisibleBehind(token, enable); 2329 reply.writeNoException(); 2330 reply.writeInt(success ? 1 : 0); 2331 return true; 2332 } 2333 2334 case IS_BACKGROUND_VISIBLE_BEHIND_TRANSACTION: { 2335 data.enforceInterface(IActivityManager.descriptor); 2336 IBinder token = data.readStrongBinder(); 2337 final boolean enabled = isBackgroundVisibleBehind(token); 2338 reply.writeNoException(); 2339 reply.writeInt(enabled ? 1 : 0); 2340 return true; 2341 } 2342 2343 case BACKGROUND_RESOURCES_RELEASED_TRANSACTION: { 2344 data.enforceInterface(IActivityManager.descriptor); 2345 IBinder token = data.readStrongBinder(); 2346 backgroundResourcesReleased(token); 2347 reply.writeNoException(); 2348 return true; 2349 } 2350 2351 case NOTIFY_LAUNCH_TASK_BEHIND_COMPLETE_TRANSACTION: { 2352 data.enforceInterface(IActivityManager.descriptor); 2353 IBinder token = data.readStrongBinder(); 2354 notifyLaunchTaskBehindComplete(token); 2355 reply.writeNoException(); 2356 return true; 2357 } 2358 2359 case NOTIFY_ENTER_ANIMATION_COMPLETE_TRANSACTION: { 2360 data.enforceInterface(IActivityManager.descriptor); 2361 IBinder token = data.readStrongBinder(); 2362 notifyEnterAnimationComplete(token); 2363 reply.writeNoException(); 2364 return true; 2365 } 2366 2367 case BOOT_ANIMATION_COMPLETE_TRANSACTION: { 2368 data.enforceInterface(IActivityManager.descriptor); 2369 bootAnimationComplete(); 2370 reply.writeNoException(); 2371 return true; 2372 } 2373 2374 case SYSTEM_BACKUP_RESTORED: { 2375 data.enforceInterface(IActivityManager.descriptor); 2376 systemBackupRestored(); 2377 reply.writeNoException(); 2378 return true; 2379 } 2380 2381 case NOTIFY_CLEARTEXT_NETWORK_TRANSACTION: { 2382 data.enforceInterface(IActivityManager.descriptor); 2383 final int uid = data.readInt(); 2384 final byte[] firstPacket = data.createByteArray(); 2385 notifyCleartextNetwork(uid, firstPacket); 2386 reply.writeNoException(); 2387 return true; 2388 } 2389 } 2390 2391 return super.onTransact(code, data, reply, flags); 2392 } 2393 2394 public IBinder asBinder() { 2395 return this; 2396 } 2397 2398 private static final Singleton<IActivityManager> gDefault = new Singleton<IActivityManager>() { 2399 protected IActivityManager create() { 2400 IBinder b = ServiceManager.getService("activity"); 2401 if (false) { 2402 Log.v("ActivityManager", "default service binder = " + b); 2403 } 2404 IActivityManager am = asInterface(b); 2405 if (false) { 2406 Log.v("ActivityManager", "default service = " + am); 2407 } 2408 return am; 2409 } 2410 }; 2411} 2412 2413class ActivityManagerProxy implements IActivityManager 2414{ 2415 public ActivityManagerProxy(IBinder remote) 2416 { 2417 mRemote = remote; 2418 } 2419 2420 public IBinder asBinder() 2421 { 2422 return mRemote; 2423 } 2424 2425 public int startActivity(IApplicationThread caller, String callingPackage, Intent intent, 2426 String resolvedType, IBinder resultTo, String resultWho, int requestCode, 2427 int startFlags, ProfilerInfo profilerInfo, Bundle options) throws RemoteException { 2428 Parcel data = Parcel.obtain(); 2429 Parcel reply = Parcel.obtain(); 2430 data.writeInterfaceToken(IActivityManager.descriptor); 2431 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2432 data.writeString(callingPackage); 2433 intent.writeToParcel(data, 0); 2434 data.writeString(resolvedType); 2435 data.writeStrongBinder(resultTo); 2436 data.writeString(resultWho); 2437 data.writeInt(requestCode); 2438 data.writeInt(startFlags); 2439 if (profilerInfo != null) { 2440 data.writeInt(1); 2441 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2442 } else { 2443 data.writeInt(0); 2444 } 2445 if (options != null) { 2446 data.writeInt(1); 2447 options.writeToParcel(data, 0); 2448 } else { 2449 data.writeInt(0); 2450 } 2451 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0); 2452 reply.readException(); 2453 int result = reply.readInt(); 2454 reply.recycle(); 2455 data.recycle(); 2456 return result; 2457 } 2458 2459 public int startActivityAsUser(IApplicationThread caller, String callingPackage, Intent intent, 2460 String resolvedType, IBinder resultTo, String resultWho, int requestCode, 2461 int startFlags, ProfilerInfo profilerInfo, Bundle options, 2462 int userId) throws RemoteException { 2463 Parcel data = Parcel.obtain(); 2464 Parcel reply = Parcel.obtain(); 2465 data.writeInterfaceToken(IActivityManager.descriptor); 2466 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2467 data.writeString(callingPackage); 2468 intent.writeToParcel(data, 0); 2469 data.writeString(resolvedType); 2470 data.writeStrongBinder(resultTo); 2471 data.writeString(resultWho); 2472 data.writeInt(requestCode); 2473 data.writeInt(startFlags); 2474 if (profilerInfo != null) { 2475 data.writeInt(1); 2476 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2477 } else { 2478 data.writeInt(0); 2479 } 2480 if (options != null) { 2481 data.writeInt(1); 2482 options.writeToParcel(data, 0); 2483 } else { 2484 data.writeInt(0); 2485 } 2486 data.writeInt(userId); 2487 mRemote.transact(START_ACTIVITY_AS_USER_TRANSACTION, data, reply, 0); 2488 reply.readException(); 2489 int result = reply.readInt(); 2490 reply.recycle(); 2491 data.recycle(); 2492 return result; 2493 } 2494 public int startActivityAsCaller(IApplicationThread caller, String callingPackage, 2495 Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode, 2496 int startFlags, ProfilerInfo profilerInfo, Bundle options, int userId) throws RemoteException { 2497 Parcel data = Parcel.obtain(); 2498 Parcel reply = Parcel.obtain(); 2499 data.writeInterfaceToken(IActivityManager.descriptor); 2500 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2501 data.writeString(callingPackage); 2502 intent.writeToParcel(data, 0); 2503 data.writeString(resolvedType); 2504 data.writeStrongBinder(resultTo); 2505 data.writeString(resultWho); 2506 data.writeInt(requestCode); 2507 data.writeInt(startFlags); 2508 if (profilerInfo != null) { 2509 data.writeInt(1); 2510 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2511 } else { 2512 data.writeInt(0); 2513 } 2514 if (options != null) { 2515 data.writeInt(1); 2516 options.writeToParcel(data, 0); 2517 } else { 2518 data.writeInt(0); 2519 } 2520 data.writeInt(userId); 2521 mRemote.transact(START_ACTIVITY_AS_CALLER_TRANSACTION, data, reply, 0); 2522 reply.readException(); 2523 int result = reply.readInt(); 2524 reply.recycle(); 2525 data.recycle(); 2526 return result; 2527 } 2528 public WaitResult startActivityAndWait(IApplicationThread caller, String callingPackage, 2529 Intent intent, String resolvedType, IBinder resultTo, String resultWho, 2530 int requestCode, int startFlags, ProfilerInfo profilerInfo, Bundle options, 2531 int userId) throws RemoteException { 2532 Parcel data = Parcel.obtain(); 2533 Parcel reply = Parcel.obtain(); 2534 data.writeInterfaceToken(IActivityManager.descriptor); 2535 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2536 data.writeString(callingPackage); 2537 intent.writeToParcel(data, 0); 2538 data.writeString(resolvedType); 2539 data.writeStrongBinder(resultTo); 2540 data.writeString(resultWho); 2541 data.writeInt(requestCode); 2542 data.writeInt(startFlags); 2543 if (profilerInfo != null) { 2544 data.writeInt(1); 2545 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2546 } else { 2547 data.writeInt(0); 2548 } 2549 if (options != null) { 2550 data.writeInt(1); 2551 options.writeToParcel(data, 0); 2552 } else { 2553 data.writeInt(0); 2554 } 2555 data.writeInt(userId); 2556 mRemote.transact(START_ACTIVITY_AND_WAIT_TRANSACTION, data, reply, 0); 2557 reply.readException(); 2558 WaitResult result = WaitResult.CREATOR.createFromParcel(reply); 2559 reply.recycle(); 2560 data.recycle(); 2561 return result; 2562 } 2563 public int startActivityWithConfig(IApplicationThread caller, String callingPackage, 2564 Intent intent, String resolvedType, IBinder resultTo, String resultWho, 2565 int requestCode, int startFlags, Configuration config, 2566 Bundle options, int userId) throws RemoteException { 2567 Parcel data = Parcel.obtain(); 2568 Parcel reply = Parcel.obtain(); 2569 data.writeInterfaceToken(IActivityManager.descriptor); 2570 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2571 data.writeString(callingPackage); 2572 intent.writeToParcel(data, 0); 2573 data.writeString(resolvedType); 2574 data.writeStrongBinder(resultTo); 2575 data.writeString(resultWho); 2576 data.writeInt(requestCode); 2577 data.writeInt(startFlags); 2578 config.writeToParcel(data, 0); 2579 if (options != null) { 2580 data.writeInt(1); 2581 options.writeToParcel(data, 0); 2582 } else { 2583 data.writeInt(0); 2584 } 2585 data.writeInt(userId); 2586 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0); 2587 reply.readException(); 2588 int result = reply.readInt(); 2589 reply.recycle(); 2590 data.recycle(); 2591 return result; 2592 } 2593 public int startActivityIntentSender(IApplicationThread caller, 2594 IntentSender intent, Intent fillInIntent, String resolvedType, 2595 IBinder resultTo, String resultWho, int requestCode, 2596 int flagsMask, int flagsValues, Bundle options) throws RemoteException { 2597 Parcel data = Parcel.obtain(); 2598 Parcel reply = Parcel.obtain(); 2599 data.writeInterfaceToken(IActivityManager.descriptor); 2600 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2601 intent.writeToParcel(data, 0); 2602 if (fillInIntent != null) { 2603 data.writeInt(1); 2604 fillInIntent.writeToParcel(data, 0); 2605 } else { 2606 data.writeInt(0); 2607 } 2608 data.writeString(resolvedType); 2609 data.writeStrongBinder(resultTo); 2610 data.writeString(resultWho); 2611 data.writeInt(requestCode); 2612 data.writeInt(flagsMask); 2613 data.writeInt(flagsValues); 2614 if (options != null) { 2615 data.writeInt(1); 2616 options.writeToParcel(data, 0); 2617 } else { 2618 data.writeInt(0); 2619 } 2620 mRemote.transact(START_ACTIVITY_INTENT_SENDER_TRANSACTION, data, reply, 0); 2621 reply.readException(); 2622 int result = reply.readInt(); 2623 reply.recycle(); 2624 data.recycle(); 2625 return result; 2626 } 2627 public int startVoiceActivity(String callingPackage, int callingPid, int callingUid, 2628 Intent intent, String resolvedType, IVoiceInteractionSession session, 2629 IVoiceInteractor interactor, int startFlags, ProfilerInfo profilerInfo, 2630 Bundle options, int userId) throws RemoteException { 2631 Parcel data = Parcel.obtain(); 2632 Parcel reply = Parcel.obtain(); 2633 data.writeInterfaceToken(IActivityManager.descriptor); 2634 data.writeString(callingPackage); 2635 data.writeInt(callingPid); 2636 data.writeInt(callingUid); 2637 intent.writeToParcel(data, 0); 2638 data.writeString(resolvedType); 2639 data.writeStrongBinder(session.asBinder()); 2640 data.writeStrongBinder(interactor.asBinder()); 2641 data.writeInt(startFlags); 2642 if (profilerInfo != null) { 2643 data.writeInt(1); 2644 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2645 } else { 2646 data.writeInt(0); 2647 } 2648 if (options != null) { 2649 data.writeInt(1); 2650 options.writeToParcel(data, 0); 2651 } else { 2652 data.writeInt(0); 2653 } 2654 data.writeInt(userId); 2655 mRemote.transact(START_VOICE_ACTIVITY_TRANSACTION, data, reply, 0); 2656 reply.readException(); 2657 int result = reply.readInt(); 2658 reply.recycle(); 2659 data.recycle(); 2660 return result; 2661 } 2662 public boolean startNextMatchingActivity(IBinder callingActivity, 2663 Intent intent, Bundle options) throws RemoteException { 2664 Parcel data = Parcel.obtain(); 2665 Parcel reply = Parcel.obtain(); 2666 data.writeInterfaceToken(IActivityManager.descriptor); 2667 data.writeStrongBinder(callingActivity); 2668 intent.writeToParcel(data, 0); 2669 if (options != null) { 2670 data.writeInt(1); 2671 options.writeToParcel(data, 0); 2672 } else { 2673 data.writeInt(0); 2674 } 2675 mRemote.transact(START_NEXT_MATCHING_ACTIVITY_TRANSACTION, data, reply, 0); 2676 reply.readException(); 2677 int result = reply.readInt(); 2678 reply.recycle(); 2679 data.recycle(); 2680 return result != 0; 2681 } 2682 public int startActivityFromRecents(int taskId, Bundle options) throws RemoteException { 2683 Parcel data = Parcel.obtain(); 2684 Parcel reply = Parcel.obtain(); 2685 data.writeInterfaceToken(IActivityManager.descriptor); 2686 data.writeInt(taskId); 2687 if (options == null) { 2688 data.writeInt(0); 2689 } else { 2690 data.writeInt(1); 2691 options.writeToParcel(data, 0); 2692 } 2693 mRemote.transact(START_ACTIVITY_FROM_RECENTS_TRANSACTION, data, reply, 0); 2694 reply.readException(); 2695 int result = reply.readInt(); 2696 reply.recycle(); 2697 data.recycle(); 2698 return result; 2699 } 2700 public boolean finishActivity(IBinder token, int resultCode, Intent resultData, boolean finishTask) 2701 throws RemoteException { 2702 Parcel data = Parcel.obtain(); 2703 Parcel reply = Parcel.obtain(); 2704 data.writeInterfaceToken(IActivityManager.descriptor); 2705 data.writeStrongBinder(token); 2706 data.writeInt(resultCode); 2707 if (resultData != null) { 2708 data.writeInt(1); 2709 resultData.writeToParcel(data, 0); 2710 } else { 2711 data.writeInt(0); 2712 } 2713 data.writeInt(finishTask ? 1 : 0); 2714 mRemote.transact(FINISH_ACTIVITY_TRANSACTION, data, reply, 0); 2715 reply.readException(); 2716 boolean res = reply.readInt() != 0; 2717 data.recycle(); 2718 reply.recycle(); 2719 return res; 2720 } 2721 public void finishSubActivity(IBinder token, String resultWho, int requestCode) throws RemoteException 2722 { 2723 Parcel data = Parcel.obtain(); 2724 Parcel reply = Parcel.obtain(); 2725 data.writeInterfaceToken(IActivityManager.descriptor); 2726 data.writeStrongBinder(token); 2727 data.writeString(resultWho); 2728 data.writeInt(requestCode); 2729 mRemote.transact(FINISH_SUB_ACTIVITY_TRANSACTION, data, reply, 0); 2730 reply.readException(); 2731 data.recycle(); 2732 reply.recycle(); 2733 } 2734 public boolean finishActivityAffinity(IBinder token) throws RemoteException { 2735 Parcel data = Parcel.obtain(); 2736 Parcel reply = Parcel.obtain(); 2737 data.writeInterfaceToken(IActivityManager.descriptor); 2738 data.writeStrongBinder(token); 2739 mRemote.transact(FINISH_ACTIVITY_AFFINITY_TRANSACTION, data, reply, 0); 2740 reply.readException(); 2741 boolean res = reply.readInt() != 0; 2742 data.recycle(); 2743 reply.recycle(); 2744 return res; 2745 } 2746 public void finishVoiceTask(IVoiceInteractionSession session) throws RemoteException { 2747 Parcel data = Parcel.obtain(); 2748 Parcel reply = Parcel.obtain(); 2749 data.writeInterfaceToken(IActivityManager.descriptor); 2750 data.writeStrongBinder(session.asBinder()); 2751 mRemote.transact(FINISH_VOICE_TASK_TRANSACTION, data, reply, 0); 2752 reply.readException(); 2753 data.recycle(); 2754 reply.recycle(); 2755 } 2756 public boolean releaseActivityInstance(IBinder token) throws RemoteException { 2757 Parcel data = Parcel.obtain(); 2758 Parcel reply = Parcel.obtain(); 2759 data.writeInterfaceToken(IActivityManager.descriptor); 2760 data.writeStrongBinder(token); 2761 mRemote.transact(RELEASE_ACTIVITY_INSTANCE_TRANSACTION, data, reply, 0); 2762 reply.readException(); 2763 boolean res = reply.readInt() != 0; 2764 data.recycle(); 2765 reply.recycle(); 2766 return res; 2767 } 2768 public void releaseSomeActivities(IApplicationThread app) throws RemoteException { 2769 Parcel data = Parcel.obtain(); 2770 Parcel reply = Parcel.obtain(); 2771 data.writeInterfaceToken(IActivityManager.descriptor); 2772 data.writeStrongBinder(app.asBinder()); 2773 mRemote.transact(RELEASE_SOME_ACTIVITIES_TRANSACTION, data, reply, 0); 2774 reply.readException(); 2775 data.recycle(); 2776 reply.recycle(); 2777 } 2778 public boolean willActivityBeVisible(IBinder token) throws RemoteException { 2779 Parcel data = Parcel.obtain(); 2780 Parcel reply = Parcel.obtain(); 2781 data.writeInterfaceToken(IActivityManager.descriptor); 2782 data.writeStrongBinder(token); 2783 mRemote.transact(WILL_ACTIVITY_BE_VISIBLE_TRANSACTION, data, reply, 0); 2784 reply.readException(); 2785 boolean res = reply.readInt() != 0; 2786 data.recycle(); 2787 reply.recycle(); 2788 return res; 2789 } 2790 public Intent registerReceiver(IApplicationThread caller, String packageName, 2791 IIntentReceiver receiver, 2792 IntentFilter filter, String perm, int userId) throws RemoteException 2793 { 2794 Parcel data = Parcel.obtain(); 2795 Parcel reply = Parcel.obtain(); 2796 data.writeInterfaceToken(IActivityManager.descriptor); 2797 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2798 data.writeString(packageName); 2799 data.writeStrongBinder(receiver != null ? receiver.asBinder() : null); 2800 filter.writeToParcel(data, 0); 2801 data.writeString(perm); 2802 data.writeInt(userId); 2803 mRemote.transact(REGISTER_RECEIVER_TRANSACTION, data, reply, 0); 2804 reply.readException(); 2805 Intent intent = null; 2806 int haveIntent = reply.readInt(); 2807 if (haveIntent != 0) { 2808 intent = Intent.CREATOR.createFromParcel(reply); 2809 } 2810 reply.recycle(); 2811 data.recycle(); 2812 return intent; 2813 } 2814 public void unregisterReceiver(IIntentReceiver receiver) throws RemoteException 2815 { 2816 Parcel data = Parcel.obtain(); 2817 Parcel reply = Parcel.obtain(); 2818 data.writeInterfaceToken(IActivityManager.descriptor); 2819 data.writeStrongBinder(receiver.asBinder()); 2820 mRemote.transact(UNREGISTER_RECEIVER_TRANSACTION, data, reply, 0); 2821 reply.readException(); 2822 data.recycle(); 2823 reply.recycle(); 2824 } 2825 public int broadcastIntent(IApplicationThread caller, 2826 Intent intent, String resolvedType, IIntentReceiver resultTo, 2827 int resultCode, String resultData, Bundle map, 2828 String requiredPermission, int appOp, boolean serialized, 2829 boolean sticky, int userId) throws RemoteException 2830 { 2831 Parcel data = Parcel.obtain(); 2832 Parcel reply = Parcel.obtain(); 2833 data.writeInterfaceToken(IActivityManager.descriptor); 2834 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2835 intent.writeToParcel(data, 0); 2836 data.writeString(resolvedType); 2837 data.writeStrongBinder(resultTo != null ? resultTo.asBinder() : null); 2838 data.writeInt(resultCode); 2839 data.writeString(resultData); 2840 data.writeBundle(map); 2841 data.writeString(requiredPermission); 2842 data.writeInt(appOp); 2843 data.writeInt(serialized ? 1 : 0); 2844 data.writeInt(sticky ? 1 : 0); 2845 data.writeInt(userId); 2846 mRemote.transact(BROADCAST_INTENT_TRANSACTION, data, reply, 0); 2847 reply.readException(); 2848 int res = reply.readInt(); 2849 reply.recycle(); 2850 data.recycle(); 2851 return res; 2852 } 2853 public void unbroadcastIntent(IApplicationThread caller, Intent intent, int userId) 2854 throws RemoteException 2855 { 2856 Parcel data = Parcel.obtain(); 2857 Parcel reply = Parcel.obtain(); 2858 data.writeInterfaceToken(IActivityManager.descriptor); 2859 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2860 intent.writeToParcel(data, 0); 2861 data.writeInt(userId); 2862 mRemote.transact(UNBROADCAST_INTENT_TRANSACTION, data, reply, 0); 2863 reply.readException(); 2864 data.recycle(); 2865 reply.recycle(); 2866 } 2867 public void finishReceiver(IBinder who, int resultCode, String resultData, Bundle map, 2868 boolean abortBroadcast, int flags) throws RemoteException 2869 { 2870 Parcel data = Parcel.obtain(); 2871 Parcel reply = Parcel.obtain(); 2872 data.writeInterfaceToken(IActivityManager.descriptor); 2873 data.writeStrongBinder(who); 2874 data.writeInt(resultCode); 2875 data.writeString(resultData); 2876 data.writeBundle(map); 2877 data.writeInt(abortBroadcast ? 1 : 0); 2878 data.writeInt(flags); 2879 mRemote.transact(FINISH_RECEIVER_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2880 reply.readException(); 2881 data.recycle(); 2882 reply.recycle(); 2883 } 2884 public void attachApplication(IApplicationThread app) throws RemoteException 2885 { 2886 Parcel data = Parcel.obtain(); 2887 Parcel reply = Parcel.obtain(); 2888 data.writeInterfaceToken(IActivityManager.descriptor); 2889 data.writeStrongBinder(app.asBinder()); 2890 mRemote.transact(ATTACH_APPLICATION_TRANSACTION, data, reply, 0); 2891 reply.readException(); 2892 data.recycle(); 2893 reply.recycle(); 2894 } 2895 public void activityIdle(IBinder token, Configuration config, boolean stopProfiling) 2896 throws RemoteException 2897 { 2898 Parcel data = Parcel.obtain(); 2899 Parcel reply = Parcel.obtain(); 2900 data.writeInterfaceToken(IActivityManager.descriptor); 2901 data.writeStrongBinder(token); 2902 if (config != null) { 2903 data.writeInt(1); 2904 config.writeToParcel(data, 0); 2905 } else { 2906 data.writeInt(0); 2907 } 2908 data.writeInt(stopProfiling ? 1 : 0); 2909 mRemote.transact(ACTIVITY_IDLE_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2910 reply.readException(); 2911 data.recycle(); 2912 reply.recycle(); 2913 } 2914 public void activityResumed(IBinder token) throws RemoteException 2915 { 2916 Parcel data = Parcel.obtain(); 2917 Parcel reply = Parcel.obtain(); 2918 data.writeInterfaceToken(IActivityManager.descriptor); 2919 data.writeStrongBinder(token); 2920 mRemote.transact(ACTIVITY_RESUMED_TRANSACTION, data, reply, 0); 2921 reply.readException(); 2922 data.recycle(); 2923 reply.recycle(); 2924 } 2925 public void activityPaused(IBinder token) throws RemoteException 2926 { 2927 Parcel data = Parcel.obtain(); 2928 Parcel reply = Parcel.obtain(); 2929 data.writeInterfaceToken(IActivityManager.descriptor); 2930 data.writeStrongBinder(token); 2931 mRemote.transact(ACTIVITY_PAUSED_TRANSACTION, data, reply, 0); 2932 reply.readException(); 2933 data.recycle(); 2934 reply.recycle(); 2935 } 2936 public void activityStopped(IBinder token, Bundle state, 2937 PersistableBundle persistentState, CharSequence description) throws RemoteException 2938 { 2939 Parcel data = Parcel.obtain(); 2940 Parcel reply = Parcel.obtain(); 2941 data.writeInterfaceToken(IActivityManager.descriptor); 2942 data.writeStrongBinder(token); 2943 data.writeBundle(state); 2944 data.writePersistableBundle(persistentState); 2945 TextUtils.writeToParcel(description, data, 0); 2946 mRemote.transact(ACTIVITY_STOPPED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2947 reply.readException(); 2948 data.recycle(); 2949 reply.recycle(); 2950 } 2951 public void activitySlept(IBinder token) throws RemoteException 2952 { 2953 Parcel data = Parcel.obtain(); 2954 Parcel reply = Parcel.obtain(); 2955 data.writeInterfaceToken(IActivityManager.descriptor); 2956 data.writeStrongBinder(token); 2957 mRemote.transact(ACTIVITY_SLEPT_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2958 reply.readException(); 2959 data.recycle(); 2960 reply.recycle(); 2961 } 2962 public void activityDestroyed(IBinder token) throws RemoteException 2963 { 2964 Parcel data = Parcel.obtain(); 2965 Parcel reply = Parcel.obtain(); 2966 data.writeInterfaceToken(IActivityManager.descriptor); 2967 data.writeStrongBinder(token); 2968 mRemote.transact(ACTIVITY_DESTROYED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2969 reply.readException(); 2970 data.recycle(); 2971 reply.recycle(); 2972 } 2973 public String getCallingPackage(IBinder token) throws RemoteException 2974 { 2975 Parcel data = Parcel.obtain(); 2976 Parcel reply = Parcel.obtain(); 2977 data.writeInterfaceToken(IActivityManager.descriptor); 2978 data.writeStrongBinder(token); 2979 mRemote.transact(GET_CALLING_PACKAGE_TRANSACTION, data, reply, 0); 2980 reply.readException(); 2981 String res = reply.readString(); 2982 data.recycle(); 2983 reply.recycle(); 2984 return res; 2985 } 2986 public ComponentName getCallingActivity(IBinder token) 2987 throws RemoteException { 2988 Parcel data = Parcel.obtain(); 2989 Parcel reply = Parcel.obtain(); 2990 data.writeInterfaceToken(IActivityManager.descriptor); 2991 data.writeStrongBinder(token); 2992 mRemote.transact(GET_CALLING_ACTIVITY_TRANSACTION, data, reply, 0); 2993 reply.readException(); 2994 ComponentName res = ComponentName.readFromParcel(reply); 2995 data.recycle(); 2996 reply.recycle(); 2997 return res; 2998 } 2999 public List<IAppTask> getAppTasks(String callingPackage) throws RemoteException { 3000 Parcel data = Parcel.obtain(); 3001 Parcel reply = Parcel.obtain(); 3002 data.writeInterfaceToken(IActivityManager.descriptor); 3003 data.writeString(callingPackage); 3004 mRemote.transact(GET_APP_TASKS_TRANSACTION, data, reply, 0); 3005 reply.readException(); 3006 ArrayList<IAppTask> list = null; 3007 int N = reply.readInt(); 3008 if (N >= 0) { 3009 list = new ArrayList<IAppTask>(); 3010 while (N > 0) { 3011 IAppTask task = IAppTask.Stub.asInterface(reply.readStrongBinder()); 3012 list.add(task); 3013 N--; 3014 } 3015 } 3016 data.recycle(); 3017 reply.recycle(); 3018 return list; 3019 } 3020 public int addAppTask(IBinder activityToken, Intent intent, 3021 ActivityManager.TaskDescription description, Bitmap thumbnail) throws RemoteException { 3022 Parcel data = Parcel.obtain(); 3023 Parcel reply = Parcel.obtain(); 3024 data.writeInterfaceToken(IActivityManager.descriptor); 3025 data.writeStrongBinder(activityToken); 3026 intent.writeToParcel(data, 0); 3027 description.writeToParcel(data, 0); 3028 thumbnail.writeToParcel(data, 0); 3029 mRemote.transact(ADD_APP_TASK_TRANSACTION, data, reply, 0); 3030 reply.readException(); 3031 int res = reply.readInt(); 3032 data.recycle(); 3033 reply.recycle(); 3034 return res; 3035 } 3036 public Point getAppTaskThumbnailSize() throws RemoteException { 3037 Parcel data = Parcel.obtain(); 3038 Parcel reply = Parcel.obtain(); 3039 data.writeInterfaceToken(IActivityManager.descriptor); 3040 mRemote.transact(GET_APP_TASK_THUMBNAIL_SIZE_TRANSACTION, data, reply, 0); 3041 reply.readException(); 3042 Point size = Point.CREATOR.createFromParcel(reply); 3043 data.recycle(); 3044 reply.recycle(); 3045 return size; 3046 } 3047 public List getTasks(int maxNum, int flags) throws RemoteException { 3048 Parcel data = Parcel.obtain(); 3049 Parcel reply = Parcel.obtain(); 3050 data.writeInterfaceToken(IActivityManager.descriptor); 3051 data.writeInt(maxNum); 3052 data.writeInt(flags); 3053 mRemote.transact(GET_TASKS_TRANSACTION, data, reply, 0); 3054 reply.readException(); 3055 ArrayList list = null; 3056 int N = reply.readInt(); 3057 if (N >= 0) { 3058 list = new ArrayList(); 3059 while (N > 0) { 3060 ActivityManager.RunningTaskInfo info = 3061 ActivityManager.RunningTaskInfo.CREATOR 3062 .createFromParcel(reply); 3063 list.add(info); 3064 N--; 3065 } 3066 } 3067 data.recycle(); 3068 reply.recycle(); 3069 return list; 3070 } 3071 public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, 3072 int flags, int userId) throws RemoteException { 3073 Parcel data = Parcel.obtain(); 3074 Parcel reply = Parcel.obtain(); 3075 data.writeInterfaceToken(IActivityManager.descriptor); 3076 data.writeInt(maxNum); 3077 data.writeInt(flags); 3078 data.writeInt(userId); 3079 mRemote.transact(GET_RECENT_TASKS_TRANSACTION, data, reply, 0); 3080 reply.readException(); 3081 ArrayList<ActivityManager.RecentTaskInfo> list 3082 = reply.createTypedArrayList(ActivityManager.RecentTaskInfo.CREATOR); 3083 data.recycle(); 3084 reply.recycle(); 3085 return list; 3086 } 3087 public ActivityManager.TaskThumbnail getTaskThumbnail(int id) throws RemoteException { 3088 Parcel data = Parcel.obtain(); 3089 Parcel reply = Parcel.obtain(); 3090 data.writeInterfaceToken(IActivityManager.descriptor); 3091 data.writeInt(id); 3092 mRemote.transact(GET_TASK_THUMBNAIL_TRANSACTION, data, reply, 0); 3093 reply.readException(); 3094 ActivityManager.TaskThumbnail taskThumbnail = null; 3095 if (reply.readInt() != 0) { 3096 taskThumbnail = ActivityManager.TaskThumbnail.CREATOR.createFromParcel(reply); 3097 } 3098 data.recycle(); 3099 reply.recycle(); 3100 return taskThumbnail; 3101 } 3102 public List getServices(int maxNum, int flags) throws RemoteException { 3103 Parcel data = Parcel.obtain(); 3104 Parcel reply = Parcel.obtain(); 3105 data.writeInterfaceToken(IActivityManager.descriptor); 3106 data.writeInt(maxNum); 3107 data.writeInt(flags); 3108 mRemote.transact(GET_SERVICES_TRANSACTION, data, reply, 0); 3109 reply.readException(); 3110 ArrayList list = null; 3111 int N = reply.readInt(); 3112 if (N >= 0) { 3113 list = new ArrayList(); 3114 while (N > 0) { 3115 ActivityManager.RunningServiceInfo info = 3116 ActivityManager.RunningServiceInfo.CREATOR 3117 .createFromParcel(reply); 3118 list.add(info); 3119 N--; 3120 } 3121 } 3122 data.recycle(); 3123 reply.recycle(); 3124 return list; 3125 } 3126 public List<ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState() 3127 throws RemoteException { 3128 Parcel data = Parcel.obtain(); 3129 Parcel reply = Parcel.obtain(); 3130 data.writeInterfaceToken(IActivityManager.descriptor); 3131 mRemote.transact(GET_PROCESSES_IN_ERROR_STATE_TRANSACTION, data, reply, 0); 3132 reply.readException(); 3133 ArrayList<ActivityManager.ProcessErrorStateInfo> list 3134 = reply.createTypedArrayList(ActivityManager.ProcessErrorStateInfo.CREATOR); 3135 data.recycle(); 3136 reply.recycle(); 3137 return list; 3138 } 3139 public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses() 3140 throws RemoteException { 3141 Parcel data = Parcel.obtain(); 3142 Parcel reply = Parcel.obtain(); 3143 data.writeInterfaceToken(IActivityManager.descriptor); 3144 mRemote.transact(GET_RUNNING_APP_PROCESSES_TRANSACTION, data, reply, 0); 3145 reply.readException(); 3146 ArrayList<ActivityManager.RunningAppProcessInfo> list 3147 = reply.createTypedArrayList(ActivityManager.RunningAppProcessInfo.CREATOR); 3148 data.recycle(); 3149 reply.recycle(); 3150 return list; 3151 } 3152 public List<ApplicationInfo> getRunningExternalApplications() 3153 throws RemoteException { 3154 Parcel data = Parcel.obtain(); 3155 Parcel reply = Parcel.obtain(); 3156 data.writeInterfaceToken(IActivityManager.descriptor); 3157 mRemote.transact(GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION, data, reply, 0); 3158 reply.readException(); 3159 ArrayList<ApplicationInfo> list 3160 = reply.createTypedArrayList(ApplicationInfo.CREATOR); 3161 data.recycle(); 3162 reply.recycle(); 3163 return list; 3164 } 3165 public void moveTaskToFront(int task, int flags, Bundle options) throws RemoteException 3166 { 3167 Parcel data = Parcel.obtain(); 3168 Parcel reply = Parcel.obtain(); 3169 data.writeInterfaceToken(IActivityManager.descriptor); 3170 data.writeInt(task); 3171 data.writeInt(flags); 3172 if (options != null) { 3173 data.writeInt(1); 3174 options.writeToParcel(data, 0); 3175 } else { 3176 data.writeInt(0); 3177 } 3178 mRemote.transact(MOVE_TASK_TO_FRONT_TRANSACTION, data, reply, 0); 3179 reply.readException(); 3180 data.recycle(); 3181 reply.recycle(); 3182 } 3183 public boolean moveActivityTaskToBack(IBinder token, boolean nonRoot) 3184 throws RemoteException { 3185 Parcel data = Parcel.obtain(); 3186 Parcel reply = Parcel.obtain(); 3187 data.writeInterfaceToken(IActivityManager.descriptor); 3188 data.writeStrongBinder(token); 3189 data.writeInt(nonRoot ? 1 : 0); 3190 mRemote.transact(MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION, data, reply, 0); 3191 reply.readException(); 3192 boolean res = reply.readInt() != 0; 3193 data.recycle(); 3194 reply.recycle(); 3195 return res; 3196 } 3197 public void moveTaskBackwards(int task) throws RemoteException 3198 { 3199 Parcel data = Parcel.obtain(); 3200 Parcel reply = Parcel.obtain(); 3201 data.writeInterfaceToken(IActivityManager.descriptor); 3202 data.writeInt(task); 3203 mRemote.transact(MOVE_TASK_BACKWARDS_TRANSACTION, data, reply, 0); 3204 reply.readException(); 3205 data.recycle(); 3206 reply.recycle(); 3207 } 3208 @Override 3209 public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException 3210 { 3211 Parcel data = Parcel.obtain(); 3212 Parcel reply = Parcel.obtain(); 3213 data.writeInterfaceToken(IActivityManager.descriptor); 3214 data.writeInt(taskId); 3215 data.writeInt(stackId); 3216 data.writeInt(toTop ? 1 : 0); 3217 mRemote.transact(MOVE_TASK_TO_STACK_TRANSACTION, data, reply, 0); 3218 reply.readException(); 3219 data.recycle(); 3220 reply.recycle(); 3221 } 3222 @Override 3223 public void resizeStack(int stackBoxId, Rect r) throws RemoteException 3224 { 3225 Parcel data = Parcel.obtain(); 3226 Parcel reply = Parcel.obtain(); 3227 data.writeInterfaceToken(IActivityManager.descriptor); 3228 data.writeInt(stackBoxId); 3229 r.writeToParcel(data, 0); 3230 mRemote.transact(RESIZE_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3231 reply.readException(); 3232 data.recycle(); 3233 reply.recycle(); 3234 } 3235 @Override 3236 public List<StackInfo> getAllStackInfos() throws RemoteException 3237 { 3238 Parcel data = Parcel.obtain(); 3239 Parcel reply = Parcel.obtain(); 3240 data.writeInterfaceToken(IActivityManager.descriptor); 3241 mRemote.transact(GET_ALL_STACK_INFOS_TRANSACTION, data, reply, 0); 3242 reply.readException(); 3243 ArrayList<StackInfo> list = reply.createTypedArrayList(StackInfo.CREATOR); 3244 data.recycle(); 3245 reply.recycle(); 3246 return list; 3247 } 3248 @Override 3249 public StackInfo getStackInfo(int stackId) throws RemoteException 3250 { 3251 Parcel data = Parcel.obtain(); 3252 Parcel reply = Parcel.obtain(); 3253 data.writeInterfaceToken(IActivityManager.descriptor); 3254 data.writeInt(stackId); 3255 mRemote.transact(GET_STACK_INFO_TRANSACTION, data, reply, 0); 3256 reply.readException(); 3257 int res = reply.readInt(); 3258 StackInfo info = null; 3259 if (res != 0) { 3260 info = StackInfo.CREATOR.createFromParcel(reply); 3261 } 3262 data.recycle(); 3263 reply.recycle(); 3264 return info; 3265 } 3266 @Override 3267 public boolean isInHomeStack(int taskId) throws RemoteException { 3268 Parcel data = Parcel.obtain(); 3269 Parcel reply = Parcel.obtain(); 3270 data.writeInterfaceToken(IActivityManager.descriptor); 3271 data.writeInt(taskId); 3272 mRemote.transact(IS_IN_HOME_STACK_TRANSACTION, data, reply, 0); 3273 reply.readException(); 3274 boolean isInHomeStack = reply.readInt() > 0; 3275 data.recycle(); 3276 reply.recycle(); 3277 return isInHomeStack; 3278 } 3279 @Override 3280 public void setFocusedStack(int stackId) throws RemoteException 3281 { 3282 Parcel data = Parcel.obtain(); 3283 Parcel reply = Parcel.obtain(); 3284 data.writeInterfaceToken(IActivityManager.descriptor); 3285 data.writeInt(stackId); 3286 mRemote.transact(SET_FOCUSED_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3287 reply.readException(); 3288 data.recycle(); 3289 reply.recycle(); 3290 } 3291 @Override 3292 public void registerTaskStackListener(ITaskStackListener listener) throws RemoteException 3293 { 3294 Parcel data = Parcel.obtain(); 3295 Parcel reply = Parcel.obtain(); 3296 data.writeInterfaceToken(IActivityManager.descriptor); 3297 data.writeStrongBinder(listener.asBinder()); 3298 mRemote.transact(REGISTER_TASK_STACK_LISTENER_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3299 reply.readException(); 3300 data.recycle(); 3301 reply.recycle(); 3302 } 3303 public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException 3304 { 3305 Parcel data = Parcel.obtain(); 3306 Parcel reply = Parcel.obtain(); 3307 data.writeInterfaceToken(IActivityManager.descriptor); 3308 data.writeStrongBinder(token); 3309 data.writeInt(onlyRoot ? 1 : 0); 3310 mRemote.transact(GET_TASK_FOR_ACTIVITY_TRANSACTION, data, reply, 0); 3311 reply.readException(); 3312 int res = reply.readInt(); 3313 data.recycle(); 3314 reply.recycle(); 3315 return res; 3316 } 3317 public ContentProviderHolder getContentProvider(IApplicationThread caller, 3318 String name, int userId, boolean stable) throws RemoteException { 3319 Parcel data = Parcel.obtain(); 3320 Parcel reply = Parcel.obtain(); 3321 data.writeInterfaceToken(IActivityManager.descriptor); 3322 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3323 data.writeString(name); 3324 data.writeInt(userId); 3325 data.writeInt(stable ? 1 : 0); 3326 mRemote.transact(GET_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 3327 reply.readException(); 3328 int res = reply.readInt(); 3329 ContentProviderHolder cph = null; 3330 if (res != 0) { 3331 cph = ContentProviderHolder.CREATOR.createFromParcel(reply); 3332 } 3333 data.recycle(); 3334 reply.recycle(); 3335 return cph; 3336 } 3337 public ContentProviderHolder getContentProviderExternal(String name, int userId, IBinder token) 3338 throws RemoteException { 3339 Parcel data = Parcel.obtain(); 3340 Parcel reply = Parcel.obtain(); 3341 data.writeInterfaceToken(IActivityManager.descriptor); 3342 data.writeString(name); 3343 data.writeInt(userId); 3344 data.writeStrongBinder(token); 3345 mRemote.transact(GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0); 3346 reply.readException(); 3347 int res = reply.readInt(); 3348 ContentProviderHolder cph = null; 3349 if (res != 0) { 3350 cph = ContentProviderHolder.CREATOR.createFromParcel(reply); 3351 } 3352 data.recycle(); 3353 reply.recycle(); 3354 return cph; 3355 } 3356 public void publishContentProviders(IApplicationThread caller, 3357 List<ContentProviderHolder> providers) throws RemoteException 3358 { 3359 Parcel data = Parcel.obtain(); 3360 Parcel reply = Parcel.obtain(); 3361 data.writeInterfaceToken(IActivityManager.descriptor); 3362 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3363 data.writeTypedList(providers); 3364 mRemote.transact(PUBLISH_CONTENT_PROVIDERS_TRANSACTION, data, reply, 0); 3365 reply.readException(); 3366 data.recycle(); 3367 reply.recycle(); 3368 } 3369 public boolean refContentProvider(IBinder connection, int stable, int unstable) 3370 throws RemoteException { 3371 Parcel data = Parcel.obtain(); 3372 Parcel reply = Parcel.obtain(); 3373 data.writeInterfaceToken(IActivityManager.descriptor); 3374 data.writeStrongBinder(connection); 3375 data.writeInt(stable); 3376 data.writeInt(unstable); 3377 mRemote.transact(REF_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 3378 reply.readException(); 3379 boolean res = reply.readInt() != 0; 3380 data.recycle(); 3381 reply.recycle(); 3382 return res; 3383 } 3384 3385 public void unstableProviderDied(IBinder connection) throws RemoteException { 3386 Parcel data = Parcel.obtain(); 3387 Parcel reply = Parcel.obtain(); 3388 data.writeInterfaceToken(IActivityManager.descriptor); 3389 data.writeStrongBinder(connection); 3390 mRemote.transact(UNSTABLE_PROVIDER_DIED_TRANSACTION, data, reply, 0); 3391 reply.readException(); 3392 data.recycle(); 3393 reply.recycle(); 3394 } 3395 3396 @Override 3397 public void appNotRespondingViaProvider(IBinder connection) throws RemoteException { 3398 Parcel data = Parcel.obtain(); 3399 Parcel reply = Parcel.obtain(); 3400 data.writeInterfaceToken(IActivityManager.descriptor); 3401 data.writeStrongBinder(connection); 3402 mRemote.transact(APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION, data, reply, 0); 3403 reply.readException(); 3404 data.recycle(); 3405 reply.recycle(); 3406 } 3407 3408 public void removeContentProvider(IBinder connection, boolean stable) throws RemoteException { 3409 Parcel data = Parcel.obtain(); 3410 Parcel reply = Parcel.obtain(); 3411 data.writeInterfaceToken(IActivityManager.descriptor); 3412 data.writeStrongBinder(connection); 3413 data.writeInt(stable ? 1 : 0); 3414 mRemote.transact(REMOVE_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 3415 reply.readException(); 3416 data.recycle(); 3417 reply.recycle(); 3418 } 3419 3420 public void removeContentProviderExternal(String name, IBinder token) throws RemoteException { 3421 Parcel data = Parcel.obtain(); 3422 Parcel reply = Parcel.obtain(); 3423 data.writeInterfaceToken(IActivityManager.descriptor); 3424 data.writeString(name); 3425 data.writeStrongBinder(token); 3426 mRemote.transact(REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0); 3427 reply.readException(); 3428 data.recycle(); 3429 reply.recycle(); 3430 } 3431 3432 public PendingIntent getRunningServiceControlPanel(ComponentName service) 3433 throws RemoteException 3434 { 3435 Parcel data = Parcel.obtain(); 3436 Parcel reply = Parcel.obtain(); 3437 data.writeInterfaceToken(IActivityManager.descriptor); 3438 service.writeToParcel(data, 0); 3439 mRemote.transact(GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION, data, reply, 0); 3440 reply.readException(); 3441 PendingIntent res = PendingIntent.readPendingIntentOrNullFromParcel(reply); 3442 data.recycle(); 3443 reply.recycle(); 3444 return res; 3445 } 3446 3447 public ComponentName startService(IApplicationThread caller, Intent service, 3448 String resolvedType, int userId) throws RemoteException 3449 { 3450 Parcel data = Parcel.obtain(); 3451 Parcel reply = Parcel.obtain(); 3452 data.writeInterfaceToken(IActivityManager.descriptor); 3453 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3454 service.writeToParcel(data, 0); 3455 data.writeString(resolvedType); 3456 data.writeInt(userId); 3457 mRemote.transact(START_SERVICE_TRANSACTION, data, reply, 0); 3458 reply.readException(); 3459 ComponentName res = ComponentName.readFromParcel(reply); 3460 data.recycle(); 3461 reply.recycle(); 3462 return res; 3463 } 3464 public int stopService(IApplicationThread caller, Intent service, 3465 String resolvedType, int userId) throws RemoteException 3466 { 3467 Parcel data = Parcel.obtain(); 3468 Parcel reply = Parcel.obtain(); 3469 data.writeInterfaceToken(IActivityManager.descriptor); 3470 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3471 service.writeToParcel(data, 0); 3472 data.writeString(resolvedType); 3473 data.writeInt(userId); 3474 mRemote.transact(STOP_SERVICE_TRANSACTION, data, reply, 0); 3475 reply.readException(); 3476 int res = reply.readInt(); 3477 reply.recycle(); 3478 data.recycle(); 3479 return res; 3480 } 3481 public boolean stopServiceToken(ComponentName className, IBinder token, 3482 int startId) throws RemoteException { 3483 Parcel data = Parcel.obtain(); 3484 Parcel reply = Parcel.obtain(); 3485 data.writeInterfaceToken(IActivityManager.descriptor); 3486 ComponentName.writeToParcel(className, data); 3487 data.writeStrongBinder(token); 3488 data.writeInt(startId); 3489 mRemote.transact(STOP_SERVICE_TOKEN_TRANSACTION, data, reply, 0); 3490 reply.readException(); 3491 boolean res = reply.readInt() != 0; 3492 data.recycle(); 3493 reply.recycle(); 3494 return res; 3495 } 3496 public void setServiceForeground(ComponentName className, IBinder token, 3497 int id, Notification notification, boolean removeNotification) throws RemoteException { 3498 Parcel data = Parcel.obtain(); 3499 Parcel reply = Parcel.obtain(); 3500 data.writeInterfaceToken(IActivityManager.descriptor); 3501 ComponentName.writeToParcel(className, data); 3502 data.writeStrongBinder(token); 3503 data.writeInt(id); 3504 if (notification != null) { 3505 data.writeInt(1); 3506 notification.writeToParcel(data, 0); 3507 } else { 3508 data.writeInt(0); 3509 } 3510 data.writeInt(removeNotification ? 1 : 0); 3511 mRemote.transact(SET_SERVICE_FOREGROUND_TRANSACTION, data, reply, 0); 3512 reply.readException(); 3513 data.recycle(); 3514 reply.recycle(); 3515 } 3516 public int bindService(IApplicationThread caller, IBinder token, 3517 Intent service, String resolvedType, IServiceConnection connection, 3518 int flags, int userId) throws RemoteException { 3519 Parcel data = Parcel.obtain(); 3520 Parcel reply = Parcel.obtain(); 3521 data.writeInterfaceToken(IActivityManager.descriptor); 3522 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3523 data.writeStrongBinder(token); 3524 service.writeToParcel(data, 0); 3525 data.writeString(resolvedType); 3526 data.writeStrongBinder(connection.asBinder()); 3527 data.writeInt(flags); 3528 data.writeInt(userId); 3529 mRemote.transact(BIND_SERVICE_TRANSACTION, data, reply, 0); 3530 reply.readException(); 3531 int res = reply.readInt(); 3532 data.recycle(); 3533 reply.recycle(); 3534 return res; 3535 } 3536 public boolean unbindService(IServiceConnection connection) throws RemoteException 3537 { 3538 Parcel data = Parcel.obtain(); 3539 Parcel reply = Parcel.obtain(); 3540 data.writeInterfaceToken(IActivityManager.descriptor); 3541 data.writeStrongBinder(connection.asBinder()); 3542 mRemote.transact(UNBIND_SERVICE_TRANSACTION, data, reply, 0); 3543 reply.readException(); 3544 boolean res = reply.readInt() != 0; 3545 data.recycle(); 3546 reply.recycle(); 3547 return res; 3548 } 3549 3550 public void publishService(IBinder token, 3551 Intent intent, IBinder service) throws RemoteException { 3552 Parcel data = Parcel.obtain(); 3553 Parcel reply = Parcel.obtain(); 3554 data.writeInterfaceToken(IActivityManager.descriptor); 3555 data.writeStrongBinder(token); 3556 intent.writeToParcel(data, 0); 3557 data.writeStrongBinder(service); 3558 mRemote.transact(PUBLISH_SERVICE_TRANSACTION, data, reply, 0); 3559 reply.readException(); 3560 data.recycle(); 3561 reply.recycle(); 3562 } 3563 3564 public void unbindFinished(IBinder token, Intent intent, boolean doRebind) 3565 throws RemoteException { 3566 Parcel data = Parcel.obtain(); 3567 Parcel reply = Parcel.obtain(); 3568 data.writeInterfaceToken(IActivityManager.descriptor); 3569 data.writeStrongBinder(token); 3570 intent.writeToParcel(data, 0); 3571 data.writeInt(doRebind ? 1 : 0); 3572 mRemote.transact(UNBIND_FINISHED_TRANSACTION, data, reply, 0); 3573 reply.readException(); 3574 data.recycle(); 3575 reply.recycle(); 3576 } 3577 3578 public void serviceDoneExecuting(IBinder token, int type, int startId, 3579 int res) throws RemoteException { 3580 Parcel data = Parcel.obtain(); 3581 Parcel reply = Parcel.obtain(); 3582 data.writeInterfaceToken(IActivityManager.descriptor); 3583 data.writeStrongBinder(token); 3584 data.writeInt(type); 3585 data.writeInt(startId); 3586 data.writeInt(res); 3587 mRemote.transact(SERVICE_DONE_EXECUTING_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3588 reply.readException(); 3589 data.recycle(); 3590 reply.recycle(); 3591 } 3592 3593 public IBinder peekService(Intent service, String resolvedType) throws RemoteException { 3594 Parcel data = Parcel.obtain(); 3595 Parcel reply = Parcel.obtain(); 3596 data.writeInterfaceToken(IActivityManager.descriptor); 3597 service.writeToParcel(data, 0); 3598 data.writeString(resolvedType); 3599 mRemote.transact(PEEK_SERVICE_TRANSACTION, data, reply, 0); 3600 reply.readException(); 3601 IBinder binder = reply.readStrongBinder(); 3602 reply.recycle(); 3603 data.recycle(); 3604 return binder; 3605 } 3606 3607 public boolean bindBackupAgent(ApplicationInfo app, int backupRestoreMode) 3608 throws RemoteException { 3609 Parcel data = Parcel.obtain(); 3610 Parcel reply = Parcel.obtain(); 3611 data.writeInterfaceToken(IActivityManager.descriptor); 3612 app.writeToParcel(data, 0); 3613 data.writeInt(backupRestoreMode); 3614 mRemote.transact(START_BACKUP_AGENT_TRANSACTION, data, reply, 0); 3615 reply.readException(); 3616 boolean success = reply.readInt() != 0; 3617 reply.recycle(); 3618 data.recycle(); 3619 return success; 3620 } 3621 3622 public void clearPendingBackup() throws RemoteException { 3623 Parcel data = Parcel.obtain(); 3624 Parcel reply = Parcel.obtain(); 3625 data.writeInterfaceToken(IActivityManager.descriptor); 3626 mRemote.transact(CLEAR_PENDING_BACKUP_TRANSACTION, data, reply, 0); 3627 reply.recycle(); 3628 data.recycle(); 3629 } 3630 3631 public void backupAgentCreated(String packageName, IBinder agent) throws RemoteException { 3632 Parcel data = Parcel.obtain(); 3633 Parcel reply = Parcel.obtain(); 3634 data.writeInterfaceToken(IActivityManager.descriptor); 3635 data.writeString(packageName); 3636 data.writeStrongBinder(agent); 3637 mRemote.transact(BACKUP_AGENT_CREATED_TRANSACTION, data, reply, 0); 3638 reply.recycle(); 3639 data.recycle(); 3640 } 3641 3642 public void unbindBackupAgent(ApplicationInfo app) throws RemoteException { 3643 Parcel data = Parcel.obtain(); 3644 Parcel reply = Parcel.obtain(); 3645 data.writeInterfaceToken(IActivityManager.descriptor); 3646 app.writeToParcel(data, 0); 3647 mRemote.transact(UNBIND_BACKUP_AGENT_TRANSACTION, data, reply, 0); 3648 reply.readException(); 3649 reply.recycle(); 3650 data.recycle(); 3651 } 3652 3653 public boolean startInstrumentation(ComponentName className, String profileFile, 3654 int flags, Bundle arguments, IInstrumentationWatcher watcher, 3655 IUiAutomationConnection connection, int userId, String instructionSet) 3656 throws RemoteException { 3657 Parcel data = Parcel.obtain(); 3658 Parcel reply = Parcel.obtain(); 3659 data.writeInterfaceToken(IActivityManager.descriptor); 3660 ComponentName.writeToParcel(className, data); 3661 data.writeString(profileFile); 3662 data.writeInt(flags); 3663 data.writeBundle(arguments); 3664 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null); 3665 data.writeStrongBinder(connection != null ? connection.asBinder() : null); 3666 data.writeInt(userId); 3667 data.writeString(instructionSet); 3668 mRemote.transact(START_INSTRUMENTATION_TRANSACTION, data, reply, 0); 3669 reply.readException(); 3670 boolean res = reply.readInt() != 0; 3671 reply.recycle(); 3672 data.recycle(); 3673 return res; 3674 } 3675 3676 public void finishInstrumentation(IApplicationThread target, 3677 int resultCode, Bundle results) throws RemoteException { 3678 Parcel data = Parcel.obtain(); 3679 Parcel reply = Parcel.obtain(); 3680 data.writeInterfaceToken(IActivityManager.descriptor); 3681 data.writeStrongBinder(target != null ? target.asBinder() : null); 3682 data.writeInt(resultCode); 3683 data.writeBundle(results); 3684 mRemote.transact(FINISH_INSTRUMENTATION_TRANSACTION, data, reply, 0); 3685 reply.readException(); 3686 data.recycle(); 3687 reply.recycle(); 3688 } 3689 public Configuration getConfiguration() throws RemoteException 3690 { 3691 Parcel data = Parcel.obtain(); 3692 Parcel reply = Parcel.obtain(); 3693 data.writeInterfaceToken(IActivityManager.descriptor); 3694 mRemote.transact(GET_CONFIGURATION_TRANSACTION, data, reply, 0); 3695 reply.readException(); 3696 Configuration res = Configuration.CREATOR.createFromParcel(reply); 3697 reply.recycle(); 3698 data.recycle(); 3699 return res; 3700 } 3701 public void updateConfiguration(Configuration values) throws RemoteException 3702 { 3703 Parcel data = Parcel.obtain(); 3704 Parcel reply = Parcel.obtain(); 3705 data.writeInterfaceToken(IActivityManager.descriptor); 3706 values.writeToParcel(data, 0); 3707 mRemote.transact(UPDATE_CONFIGURATION_TRANSACTION, data, reply, 0); 3708 reply.readException(); 3709 data.recycle(); 3710 reply.recycle(); 3711 } 3712 public void setRequestedOrientation(IBinder token, int requestedOrientation) 3713 throws RemoteException { 3714 Parcel data = Parcel.obtain(); 3715 Parcel reply = Parcel.obtain(); 3716 data.writeInterfaceToken(IActivityManager.descriptor); 3717 data.writeStrongBinder(token); 3718 data.writeInt(requestedOrientation); 3719 mRemote.transact(SET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0); 3720 reply.readException(); 3721 data.recycle(); 3722 reply.recycle(); 3723 } 3724 public int getRequestedOrientation(IBinder token) throws RemoteException { 3725 Parcel data = Parcel.obtain(); 3726 Parcel reply = Parcel.obtain(); 3727 data.writeInterfaceToken(IActivityManager.descriptor); 3728 data.writeStrongBinder(token); 3729 mRemote.transact(GET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0); 3730 reply.readException(); 3731 int res = reply.readInt(); 3732 data.recycle(); 3733 reply.recycle(); 3734 return res; 3735 } 3736 public ComponentName getActivityClassForToken(IBinder token) 3737 throws RemoteException { 3738 Parcel data = Parcel.obtain(); 3739 Parcel reply = Parcel.obtain(); 3740 data.writeInterfaceToken(IActivityManager.descriptor); 3741 data.writeStrongBinder(token); 3742 mRemote.transact(GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION, data, reply, 0); 3743 reply.readException(); 3744 ComponentName res = ComponentName.readFromParcel(reply); 3745 data.recycle(); 3746 reply.recycle(); 3747 return res; 3748 } 3749 public String getPackageForToken(IBinder token) throws RemoteException 3750 { 3751 Parcel data = Parcel.obtain(); 3752 Parcel reply = Parcel.obtain(); 3753 data.writeInterfaceToken(IActivityManager.descriptor); 3754 data.writeStrongBinder(token); 3755 mRemote.transact(GET_PACKAGE_FOR_TOKEN_TRANSACTION, data, reply, 0); 3756 reply.readException(); 3757 String res = reply.readString(); 3758 data.recycle(); 3759 reply.recycle(); 3760 return res; 3761 } 3762 public IIntentSender getIntentSender(int type, 3763 String packageName, IBinder token, String resultWho, 3764 int requestCode, Intent[] intents, String[] resolvedTypes, int flags, 3765 Bundle options, int userId) throws RemoteException { 3766 Parcel data = Parcel.obtain(); 3767 Parcel reply = Parcel.obtain(); 3768 data.writeInterfaceToken(IActivityManager.descriptor); 3769 data.writeInt(type); 3770 data.writeString(packageName); 3771 data.writeStrongBinder(token); 3772 data.writeString(resultWho); 3773 data.writeInt(requestCode); 3774 if (intents != null) { 3775 data.writeInt(1); 3776 data.writeTypedArray(intents, 0); 3777 data.writeStringArray(resolvedTypes); 3778 } else { 3779 data.writeInt(0); 3780 } 3781 data.writeInt(flags); 3782 if (options != null) { 3783 data.writeInt(1); 3784 options.writeToParcel(data, 0); 3785 } else { 3786 data.writeInt(0); 3787 } 3788 data.writeInt(userId); 3789 mRemote.transact(GET_INTENT_SENDER_TRANSACTION, data, reply, 0); 3790 reply.readException(); 3791 IIntentSender res = IIntentSender.Stub.asInterface( 3792 reply.readStrongBinder()); 3793 data.recycle(); 3794 reply.recycle(); 3795 return res; 3796 } 3797 public void cancelIntentSender(IIntentSender sender) throws RemoteException { 3798 Parcel data = Parcel.obtain(); 3799 Parcel reply = Parcel.obtain(); 3800 data.writeInterfaceToken(IActivityManager.descriptor); 3801 data.writeStrongBinder(sender.asBinder()); 3802 mRemote.transact(CANCEL_INTENT_SENDER_TRANSACTION, data, reply, 0); 3803 reply.readException(); 3804 data.recycle(); 3805 reply.recycle(); 3806 } 3807 public String getPackageForIntentSender(IIntentSender sender) throws RemoteException { 3808 Parcel data = Parcel.obtain(); 3809 Parcel reply = Parcel.obtain(); 3810 data.writeInterfaceToken(IActivityManager.descriptor); 3811 data.writeStrongBinder(sender.asBinder()); 3812 mRemote.transact(GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 3813 reply.readException(); 3814 String res = reply.readString(); 3815 data.recycle(); 3816 reply.recycle(); 3817 return res; 3818 } 3819 public int getUidForIntentSender(IIntentSender sender) throws RemoteException { 3820 Parcel data = Parcel.obtain(); 3821 Parcel reply = Parcel.obtain(); 3822 data.writeInterfaceToken(IActivityManager.descriptor); 3823 data.writeStrongBinder(sender.asBinder()); 3824 mRemote.transact(GET_UID_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 3825 reply.readException(); 3826 int res = reply.readInt(); 3827 data.recycle(); 3828 reply.recycle(); 3829 return res; 3830 } 3831 public int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll, 3832 boolean requireFull, String name, String callerPackage) throws RemoteException { 3833 Parcel data = Parcel.obtain(); 3834 Parcel reply = Parcel.obtain(); 3835 data.writeInterfaceToken(IActivityManager.descriptor); 3836 data.writeInt(callingPid); 3837 data.writeInt(callingUid); 3838 data.writeInt(userId); 3839 data.writeInt(allowAll ? 1 : 0); 3840 data.writeInt(requireFull ? 1 : 0); 3841 data.writeString(name); 3842 data.writeString(callerPackage); 3843 mRemote.transact(HANDLE_INCOMING_USER_TRANSACTION, data, reply, 0); 3844 reply.readException(); 3845 int res = reply.readInt(); 3846 data.recycle(); 3847 reply.recycle(); 3848 return res; 3849 } 3850 public void setProcessLimit(int max) throws RemoteException 3851 { 3852 Parcel data = Parcel.obtain(); 3853 Parcel reply = Parcel.obtain(); 3854 data.writeInterfaceToken(IActivityManager.descriptor); 3855 data.writeInt(max); 3856 mRemote.transact(SET_PROCESS_LIMIT_TRANSACTION, data, reply, 0); 3857 reply.readException(); 3858 data.recycle(); 3859 reply.recycle(); 3860 } 3861 public int getProcessLimit() throws RemoteException 3862 { 3863 Parcel data = Parcel.obtain(); 3864 Parcel reply = Parcel.obtain(); 3865 data.writeInterfaceToken(IActivityManager.descriptor); 3866 mRemote.transact(GET_PROCESS_LIMIT_TRANSACTION, data, reply, 0); 3867 reply.readException(); 3868 int res = reply.readInt(); 3869 data.recycle(); 3870 reply.recycle(); 3871 return res; 3872 } 3873 public void setProcessForeground(IBinder token, int pid, 3874 boolean isForeground) throws RemoteException { 3875 Parcel data = Parcel.obtain(); 3876 Parcel reply = Parcel.obtain(); 3877 data.writeInterfaceToken(IActivityManager.descriptor); 3878 data.writeStrongBinder(token); 3879 data.writeInt(pid); 3880 data.writeInt(isForeground ? 1 : 0); 3881 mRemote.transact(SET_PROCESS_FOREGROUND_TRANSACTION, data, reply, 0); 3882 reply.readException(); 3883 data.recycle(); 3884 reply.recycle(); 3885 } 3886 public int checkPermission(String permission, int pid, int uid) 3887 throws RemoteException { 3888 Parcel data = Parcel.obtain(); 3889 Parcel reply = Parcel.obtain(); 3890 data.writeInterfaceToken(IActivityManager.descriptor); 3891 data.writeString(permission); 3892 data.writeInt(pid); 3893 data.writeInt(uid); 3894 mRemote.transact(CHECK_PERMISSION_TRANSACTION, data, reply, 0); 3895 reply.readException(); 3896 int res = reply.readInt(); 3897 data.recycle(); 3898 reply.recycle(); 3899 return res; 3900 } 3901 public int checkPermissionWithToken(String permission, int pid, int uid, IBinder callerToken) 3902 throws RemoteException { 3903 Parcel data = Parcel.obtain(); 3904 Parcel reply = Parcel.obtain(); 3905 data.writeInterfaceToken(IActivityManager.descriptor); 3906 data.writeString(permission); 3907 data.writeInt(pid); 3908 data.writeInt(uid); 3909 data.writeStrongBinder(callerToken); 3910 mRemote.transact(CHECK_PERMISSION_WITH_TOKEN_TRANSACTION, data, reply, 0); 3911 reply.readException(); 3912 int res = reply.readInt(); 3913 data.recycle(); 3914 reply.recycle(); 3915 return res; 3916 } 3917 public boolean clearApplicationUserData(final String packageName, 3918 final IPackageDataObserver observer, final int userId) throws RemoteException { 3919 Parcel data = Parcel.obtain(); 3920 Parcel reply = Parcel.obtain(); 3921 data.writeInterfaceToken(IActivityManager.descriptor); 3922 data.writeString(packageName); 3923 data.writeStrongBinder((observer != null) ? observer.asBinder() : null); 3924 data.writeInt(userId); 3925 mRemote.transact(CLEAR_APP_DATA_TRANSACTION, data, reply, 0); 3926 reply.readException(); 3927 boolean res = reply.readInt() != 0; 3928 data.recycle(); 3929 reply.recycle(); 3930 return res; 3931 } 3932 public int checkUriPermission(Uri uri, int pid, int uid, int mode, int userId, 3933 IBinder callerToken) throws RemoteException { 3934 Parcel data = Parcel.obtain(); 3935 Parcel reply = Parcel.obtain(); 3936 data.writeInterfaceToken(IActivityManager.descriptor); 3937 uri.writeToParcel(data, 0); 3938 data.writeInt(pid); 3939 data.writeInt(uid); 3940 data.writeInt(mode); 3941 data.writeInt(userId); 3942 data.writeStrongBinder(callerToken); 3943 mRemote.transact(CHECK_URI_PERMISSION_TRANSACTION, data, reply, 0); 3944 reply.readException(); 3945 int res = reply.readInt(); 3946 data.recycle(); 3947 reply.recycle(); 3948 return res; 3949 } 3950 public void grantUriPermission(IApplicationThread caller, String targetPkg, 3951 Uri uri, int mode, int userId) throws RemoteException { 3952 Parcel data = Parcel.obtain(); 3953 Parcel reply = Parcel.obtain(); 3954 data.writeInterfaceToken(IActivityManager.descriptor); 3955 data.writeStrongBinder(caller.asBinder()); 3956 data.writeString(targetPkg); 3957 uri.writeToParcel(data, 0); 3958 data.writeInt(mode); 3959 data.writeInt(userId); 3960 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 3961 reply.readException(); 3962 data.recycle(); 3963 reply.recycle(); 3964 } 3965 public void revokeUriPermission(IApplicationThread caller, Uri uri, 3966 int mode, int userId) throws RemoteException { 3967 Parcel data = Parcel.obtain(); 3968 Parcel reply = Parcel.obtain(); 3969 data.writeInterfaceToken(IActivityManager.descriptor); 3970 data.writeStrongBinder(caller.asBinder()); 3971 uri.writeToParcel(data, 0); 3972 data.writeInt(mode); 3973 data.writeInt(userId); 3974 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0); 3975 reply.readException(); 3976 data.recycle(); 3977 reply.recycle(); 3978 } 3979 3980 @Override 3981 public void takePersistableUriPermission(Uri uri, int mode, int userId) 3982 throws RemoteException { 3983 Parcel data = Parcel.obtain(); 3984 Parcel reply = Parcel.obtain(); 3985 data.writeInterfaceToken(IActivityManager.descriptor); 3986 uri.writeToParcel(data, 0); 3987 data.writeInt(mode); 3988 data.writeInt(userId); 3989 mRemote.transact(TAKE_PERSISTABLE_URI_PERMISSION_TRANSACTION, data, reply, 0); 3990 reply.readException(); 3991 data.recycle(); 3992 reply.recycle(); 3993 } 3994 3995 @Override 3996 public void releasePersistableUriPermission(Uri uri, int mode, int userId) 3997 throws RemoteException { 3998 Parcel data = Parcel.obtain(); 3999 Parcel reply = Parcel.obtain(); 4000 data.writeInterfaceToken(IActivityManager.descriptor); 4001 uri.writeToParcel(data, 0); 4002 data.writeInt(mode); 4003 data.writeInt(userId); 4004 mRemote.transact(RELEASE_PERSISTABLE_URI_PERMISSION_TRANSACTION, data, reply, 0); 4005 reply.readException(); 4006 data.recycle(); 4007 reply.recycle(); 4008 } 4009 4010 @Override 4011 public ParceledListSlice<UriPermission> getPersistedUriPermissions( 4012 String packageName, boolean incoming) throws RemoteException { 4013 Parcel data = Parcel.obtain(); 4014 Parcel reply = Parcel.obtain(); 4015 data.writeInterfaceToken(IActivityManager.descriptor); 4016 data.writeString(packageName); 4017 data.writeInt(incoming ? 1 : 0); 4018 mRemote.transact(GET_PERSISTED_URI_PERMISSIONS_TRANSACTION, data, reply, 0); 4019 reply.readException(); 4020 final ParceledListSlice<UriPermission> perms = ParceledListSlice.CREATOR.createFromParcel( 4021 reply); 4022 data.recycle(); 4023 reply.recycle(); 4024 return perms; 4025 } 4026 4027 public void showWaitingForDebugger(IApplicationThread who, boolean waiting) 4028 throws RemoteException { 4029 Parcel data = Parcel.obtain(); 4030 Parcel reply = Parcel.obtain(); 4031 data.writeInterfaceToken(IActivityManager.descriptor); 4032 data.writeStrongBinder(who.asBinder()); 4033 data.writeInt(waiting ? 1 : 0); 4034 mRemote.transact(SHOW_WAITING_FOR_DEBUGGER_TRANSACTION, data, reply, 0); 4035 reply.readException(); 4036 data.recycle(); 4037 reply.recycle(); 4038 } 4039 public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) throws RemoteException { 4040 Parcel data = Parcel.obtain(); 4041 Parcel reply = Parcel.obtain(); 4042 data.writeInterfaceToken(IActivityManager.descriptor); 4043 mRemote.transact(GET_MEMORY_INFO_TRANSACTION, data, reply, 0); 4044 reply.readException(); 4045 outInfo.readFromParcel(reply); 4046 data.recycle(); 4047 reply.recycle(); 4048 } 4049 public void unhandledBack() throws RemoteException 4050 { 4051 Parcel data = Parcel.obtain(); 4052 Parcel reply = Parcel.obtain(); 4053 data.writeInterfaceToken(IActivityManager.descriptor); 4054 mRemote.transact(UNHANDLED_BACK_TRANSACTION, data, reply, 0); 4055 reply.readException(); 4056 data.recycle(); 4057 reply.recycle(); 4058 } 4059 public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException 4060 { 4061 Parcel data = Parcel.obtain(); 4062 Parcel reply = Parcel.obtain(); 4063 data.writeInterfaceToken(IActivityManager.descriptor); 4064 mRemote.transact(OPEN_CONTENT_URI_TRANSACTION, data, reply, 0); 4065 reply.readException(); 4066 ParcelFileDescriptor pfd = null; 4067 if (reply.readInt() != 0) { 4068 pfd = ParcelFileDescriptor.CREATOR.createFromParcel(reply); 4069 } 4070 data.recycle(); 4071 reply.recycle(); 4072 return pfd; 4073 } 4074 public void setLockScreenShown(boolean shown) throws RemoteException 4075 { 4076 Parcel data = Parcel.obtain(); 4077 Parcel reply = Parcel.obtain(); 4078 data.writeInterfaceToken(IActivityManager.descriptor); 4079 data.writeInt(shown ? 1 : 0); 4080 mRemote.transact(SET_LOCK_SCREEN_SHOWN_TRANSACTION, data, reply, 0); 4081 reply.readException(); 4082 data.recycle(); 4083 reply.recycle(); 4084 } 4085 public void setDebugApp( 4086 String packageName, boolean waitForDebugger, boolean persistent) 4087 throws RemoteException 4088 { 4089 Parcel data = Parcel.obtain(); 4090 Parcel reply = Parcel.obtain(); 4091 data.writeInterfaceToken(IActivityManager.descriptor); 4092 data.writeString(packageName); 4093 data.writeInt(waitForDebugger ? 1 : 0); 4094 data.writeInt(persistent ? 1 : 0); 4095 mRemote.transact(SET_DEBUG_APP_TRANSACTION, data, reply, 0); 4096 reply.readException(); 4097 data.recycle(); 4098 reply.recycle(); 4099 } 4100 public void setAlwaysFinish(boolean enabled) throws RemoteException 4101 { 4102 Parcel data = Parcel.obtain(); 4103 Parcel reply = Parcel.obtain(); 4104 data.writeInterfaceToken(IActivityManager.descriptor); 4105 data.writeInt(enabled ? 1 : 0); 4106 mRemote.transact(SET_ALWAYS_FINISH_TRANSACTION, data, reply, 0); 4107 reply.readException(); 4108 data.recycle(); 4109 reply.recycle(); 4110 } 4111 public void setActivityController(IActivityController watcher) throws RemoteException 4112 { 4113 Parcel data = Parcel.obtain(); 4114 Parcel reply = Parcel.obtain(); 4115 data.writeInterfaceToken(IActivityManager.descriptor); 4116 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null); 4117 mRemote.transact(SET_ACTIVITY_CONTROLLER_TRANSACTION, data, reply, 0); 4118 reply.readException(); 4119 data.recycle(); 4120 reply.recycle(); 4121 } 4122 public void enterSafeMode() throws RemoteException { 4123 Parcel data = Parcel.obtain(); 4124 data.writeInterfaceToken(IActivityManager.descriptor); 4125 mRemote.transact(ENTER_SAFE_MODE_TRANSACTION, data, null, 0); 4126 data.recycle(); 4127 } 4128 public void noteWakeupAlarm(IIntentSender sender, int sourceUid, String sourcePkg) 4129 throws RemoteException { 4130 Parcel data = Parcel.obtain(); 4131 data.writeInterfaceToken(IActivityManager.descriptor); 4132 data.writeStrongBinder(sender.asBinder()); 4133 data.writeInt(sourceUid); 4134 data.writeString(sourcePkg); 4135 mRemote.transact(NOTE_WAKEUP_ALARM_TRANSACTION, data, null, 0); 4136 data.recycle(); 4137 } 4138 public boolean killPids(int[] pids, String reason, boolean secure) throws RemoteException { 4139 Parcel data = Parcel.obtain(); 4140 Parcel reply = Parcel.obtain(); 4141 data.writeInterfaceToken(IActivityManager.descriptor); 4142 data.writeIntArray(pids); 4143 data.writeString(reason); 4144 data.writeInt(secure ? 1 : 0); 4145 mRemote.transact(KILL_PIDS_TRANSACTION, data, reply, 0); 4146 reply.readException(); 4147 boolean res = reply.readInt() != 0; 4148 data.recycle(); 4149 reply.recycle(); 4150 return res; 4151 } 4152 @Override 4153 public boolean killProcessesBelowForeground(String reason) throws RemoteException { 4154 Parcel data = Parcel.obtain(); 4155 Parcel reply = Parcel.obtain(); 4156 data.writeInterfaceToken(IActivityManager.descriptor); 4157 data.writeString(reason); 4158 mRemote.transact(KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION, data, reply, 0); 4159 boolean res = reply.readInt() != 0; 4160 data.recycle(); 4161 reply.recycle(); 4162 return res; 4163 } 4164 public boolean testIsSystemReady() 4165 { 4166 /* this base class version is never called */ 4167 return true; 4168 } 4169 public void handleApplicationCrash(IBinder app, 4170 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException 4171 { 4172 Parcel data = Parcel.obtain(); 4173 Parcel reply = Parcel.obtain(); 4174 data.writeInterfaceToken(IActivityManager.descriptor); 4175 data.writeStrongBinder(app); 4176 crashInfo.writeToParcel(data, 0); 4177 mRemote.transact(HANDLE_APPLICATION_CRASH_TRANSACTION, data, reply, 0); 4178 reply.readException(); 4179 reply.recycle(); 4180 data.recycle(); 4181 } 4182 4183 public boolean handleApplicationWtf(IBinder app, String tag, boolean system, 4184 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException 4185 { 4186 Parcel data = Parcel.obtain(); 4187 Parcel reply = Parcel.obtain(); 4188 data.writeInterfaceToken(IActivityManager.descriptor); 4189 data.writeStrongBinder(app); 4190 data.writeString(tag); 4191 data.writeInt(system ? 1 : 0); 4192 crashInfo.writeToParcel(data, 0); 4193 mRemote.transact(HANDLE_APPLICATION_WTF_TRANSACTION, data, reply, 0); 4194 reply.readException(); 4195 boolean res = reply.readInt() != 0; 4196 reply.recycle(); 4197 data.recycle(); 4198 return res; 4199 } 4200 4201 public void handleApplicationStrictModeViolation(IBinder app, 4202 int violationMask, 4203 StrictMode.ViolationInfo info) throws RemoteException 4204 { 4205 Parcel data = Parcel.obtain(); 4206 Parcel reply = Parcel.obtain(); 4207 data.writeInterfaceToken(IActivityManager.descriptor); 4208 data.writeStrongBinder(app); 4209 data.writeInt(violationMask); 4210 info.writeToParcel(data, 0); 4211 mRemote.transact(HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION, data, reply, 0); 4212 reply.readException(); 4213 reply.recycle(); 4214 data.recycle(); 4215 } 4216 4217 public void signalPersistentProcesses(int sig) throws RemoteException { 4218 Parcel data = Parcel.obtain(); 4219 Parcel reply = Parcel.obtain(); 4220 data.writeInterfaceToken(IActivityManager.descriptor); 4221 data.writeInt(sig); 4222 mRemote.transact(SIGNAL_PERSISTENT_PROCESSES_TRANSACTION, data, reply, 0); 4223 reply.readException(); 4224 data.recycle(); 4225 reply.recycle(); 4226 } 4227 4228 public void killBackgroundProcesses(String packageName, int userId) throws RemoteException { 4229 Parcel data = Parcel.obtain(); 4230 Parcel reply = Parcel.obtain(); 4231 data.writeInterfaceToken(IActivityManager.descriptor); 4232 data.writeString(packageName); 4233 data.writeInt(userId); 4234 mRemote.transact(KILL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0); 4235 reply.readException(); 4236 data.recycle(); 4237 reply.recycle(); 4238 } 4239 4240 public void killAllBackgroundProcesses() throws RemoteException { 4241 Parcel data = Parcel.obtain(); 4242 Parcel reply = Parcel.obtain(); 4243 data.writeInterfaceToken(IActivityManager.descriptor); 4244 mRemote.transact(KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0); 4245 reply.readException(); 4246 data.recycle(); 4247 reply.recycle(); 4248 } 4249 4250 public void forceStopPackage(String packageName, int userId) throws RemoteException { 4251 Parcel data = Parcel.obtain(); 4252 Parcel reply = Parcel.obtain(); 4253 data.writeInterfaceToken(IActivityManager.descriptor); 4254 data.writeString(packageName); 4255 data.writeInt(userId); 4256 mRemote.transact(FORCE_STOP_PACKAGE_TRANSACTION, data, reply, 0); 4257 reply.readException(); 4258 data.recycle(); 4259 reply.recycle(); 4260 } 4261 4262 public void getMyMemoryState(ActivityManager.RunningAppProcessInfo outInfo) 4263 throws RemoteException 4264 { 4265 Parcel data = Parcel.obtain(); 4266 Parcel reply = Parcel.obtain(); 4267 data.writeInterfaceToken(IActivityManager.descriptor); 4268 mRemote.transact(GET_MY_MEMORY_STATE_TRANSACTION, data, reply, 0); 4269 reply.readException(); 4270 outInfo.readFromParcel(reply); 4271 reply.recycle(); 4272 data.recycle(); 4273 } 4274 4275 public ConfigurationInfo getDeviceConfigurationInfo() throws RemoteException 4276 { 4277 Parcel data = Parcel.obtain(); 4278 Parcel reply = Parcel.obtain(); 4279 data.writeInterfaceToken(IActivityManager.descriptor); 4280 mRemote.transact(GET_DEVICE_CONFIGURATION_TRANSACTION, data, reply, 0); 4281 reply.readException(); 4282 ConfigurationInfo res = ConfigurationInfo.CREATOR.createFromParcel(reply); 4283 reply.recycle(); 4284 data.recycle(); 4285 return res; 4286 } 4287 4288 public boolean profileControl(String process, int userId, boolean start, 4289 ProfilerInfo profilerInfo, int profileType) throws RemoteException 4290 { 4291 Parcel data = Parcel.obtain(); 4292 Parcel reply = Parcel.obtain(); 4293 data.writeInterfaceToken(IActivityManager.descriptor); 4294 data.writeString(process); 4295 data.writeInt(userId); 4296 data.writeInt(start ? 1 : 0); 4297 data.writeInt(profileType); 4298 if (profilerInfo != null) { 4299 data.writeInt(1); 4300 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 4301 } else { 4302 data.writeInt(0); 4303 } 4304 mRemote.transact(PROFILE_CONTROL_TRANSACTION, data, reply, 0); 4305 reply.readException(); 4306 boolean res = reply.readInt() != 0; 4307 reply.recycle(); 4308 data.recycle(); 4309 return res; 4310 } 4311 4312 public boolean shutdown(int timeout) throws RemoteException 4313 { 4314 Parcel data = Parcel.obtain(); 4315 Parcel reply = Parcel.obtain(); 4316 data.writeInterfaceToken(IActivityManager.descriptor); 4317 data.writeInt(timeout); 4318 mRemote.transact(SHUTDOWN_TRANSACTION, data, reply, 0); 4319 reply.readException(); 4320 boolean res = reply.readInt() != 0; 4321 reply.recycle(); 4322 data.recycle(); 4323 return res; 4324 } 4325 4326 public void stopAppSwitches() throws RemoteException { 4327 Parcel data = Parcel.obtain(); 4328 Parcel reply = Parcel.obtain(); 4329 data.writeInterfaceToken(IActivityManager.descriptor); 4330 mRemote.transact(STOP_APP_SWITCHES_TRANSACTION, data, reply, 0); 4331 reply.readException(); 4332 reply.recycle(); 4333 data.recycle(); 4334 } 4335 4336 public void resumeAppSwitches() throws RemoteException { 4337 Parcel data = Parcel.obtain(); 4338 Parcel reply = Parcel.obtain(); 4339 data.writeInterfaceToken(IActivityManager.descriptor); 4340 mRemote.transact(RESUME_APP_SWITCHES_TRANSACTION, data, reply, 0); 4341 reply.readException(); 4342 reply.recycle(); 4343 data.recycle(); 4344 } 4345 4346 public void addPackageDependency(String packageName) throws RemoteException { 4347 Parcel data = Parcel.obtain(); 4348 Parcel reply = Parcel.obtain(); 4349 data.writeInterfaceToken(IActivityManager.descriptor); 4350 data.writeString(packageName); 4351 mRemote.transact(ADD_PACKAGE_DEPENDENCY_TRANSACTION, data, reply, 0); 4352 reply.readException(); 4353 data.recycle(); 4354 reply.recycle(); 4355 } 4356 4357 public void killApplicationWithAppId(String pkg, int appid, String reason) 4358 throws RemoteException { 4359 Parcel data = Parcel.obtain(); 4360 Parcel reply = Parcel.obtain(); 4361 data.writeInterfaceToken(IActivityManager.descriptor); 4362 data.writeString(pkg); 4363 data.writeInt(appid); 4364 data.writeString(reason); 4365 mRemote.transact(KILL_APPLICATION_WITH_APPID_TRANSACTION, data, reply, 0); 4366 reply.readException(); 4367 data.recycle(); 4368 reply.recycle(); 4369 } 4370 4371 public void closeSystemDialogs(String reason) throws RemoteException { 4372 Parcel data = Parcel.obtain(); 4373 Parcel reply = Parcel.obtain(); 4374 data.writeInterfaceToken(IActivityManager.descriptor); 4375 data.writeString(reason); 4376 mRemote.transact(CLOSE_SYSTEM_DIALOGS_TRANSACTION, data, reply, 0); 4377 reply.readException(); 4378 data.recycle(); 4379 reply.recycle(); 4380 } 4381 4382 public Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids) 4383 throws RemoteException { 4384 Parcel data = Parcel.obtain(); 4385 Parcel reply = Parcel.obtain(); 4386 data.writeInterfaceToken(IActivityManager.descriptor); 4387 data.writeIntArray(pids); 4388 mRemote.transact(GET_PROCESS_MEMORY_INFO_TRANSACTION, data, reply, 0); 4389 reply.readException(); 4390 Debug.MemoryInfo[] res = reply.createTypedArray(Debug.MemoryInfo.CREATOR); 4391 data.recycle(); 4392 reply.recycle(); 4393 return res; 4394 } 4395 4396 public void killApplicationProcess(String processName, int uid) throws RemoteException { 4397 Parcel data = Parcel.obtain(); 4398 Parcel reply = Parcel.obtain(); 4399 data.writeInterfaceToken(IActivityManager.descriptor); 4400 data.writeString(processName); 4401 data.writeInt(uid); 4402 mRemote.transact(KILL_APPLICATION_PROCESS_TRANSACTION, data, reply, 0); 4403 reply.readException(); 4404 data.recycle(); 4405 reply.recycle(); 4406 } 4407 4408 public void overridePendingTransition(IBinder token, String packageName, 4409 int enterAnim, int exitAnim) throws RemoteException { 4410 Parcel data = Parcel.obtain(); 4411 Parcel reply = Parcel.obtain(); 4412 data.writeInterfaceToken(IActivityManager.descriptor); 4413 data.writeStrongBinder(token); 4414 data.writeString(packageName); 4415 data.writeInt(enterAnim); 4416 data.writeInt(exitAnim); 4417 mRemote.transact(OVERRIDE_PENDING_TRANSITION_TRANSACTION, data, reply, 0); 4418 reply.readException(); 4419 data.recycle(); 4420 reply.recycle(); 4421 } 4422 4423 public boolean isUserAMonkey() throws RemoteException { 4424 Parcel data = Parcel.obtain(); 4425 Parcel reply = Parcel.obtain(); 4426 data.writeInterfaceToken(IActivityManager.descriptor); 4427 mRemote.transact(IS_USER_A_MONKEY_TRANSACTION, data, reply, 0); 4428 reply.readException(); 4429 boolean res = reply.readInt() != 0; 4430 data.recycle(); 4431 reply.recycle(); 4432 return res; 4433 } 4434 4435 public void setUserIsMonkey(boolean monkey) throws RemoteException { 4436 Parcel data = Parcel.obtain(); 4437 Parcel reply = Parcel.obtain(); 4438 data.writeInterfaceToken(IActivityManager.descriptor); 4439 data.writeInt(monkey ? 1 : 0); 4440 mRemote.transact(SET_USER_IS_MONKEY_TRANSACTION, data, reply, 0); 4441 reply.readException(); 4442 data.recycle(); 4443 reply.recycle(); 4444 } 4445 4446 public void finishHeavyWeightApp() throws RemoteException { 4447 Parcel data = Parcel.obtain(); 4448 Parcel reply = Parcel.obtain(); 4449 data.writeInterfaceToken(IActivityManager.descriptor); 4450 mRemote.transact(FINISH_HEAVY_WEIGHT_APP_TRANSACTION, data, reply, 0); 4451 reply.readException(); 4452 data.recycle(); 4453 reply.recycle(); 4454 } 4455 4456 public boolean convertFromTranslucent(IBinder token) 4457 throws RemoteException { 4458 Parcel data = Parcel.obtain(); 4459 Parcel reply = Parcel.obtain(); 4460 data.writeInterfaceToken(IActivityManager.descriptor); 4461 data.writeStrongBinder(token); 4462 mRemote.transact(CONVERT_FROM_TRANSLUCENT_TRANSACTION, data, reply, 0); 4463 reply.readException(); 4464 boolean res = reply.readInt() != 0; 4465 data.recycle(); 4466 reply.recycle(); 4467 return res; 4468 } 4469 4470 public boolean convertToTranslucent(IBinder token, ActivityOptions options) 4471 throws RemoteException { 4472 Parcel data = Parcel.obtain(); 4473 Parcel reply = Parcel.obtain(); 4474 data.writeInterfaceToken(IActivityManager.descriptor); 4475 data.writeStrongBinder(token); 4476 if (options == null) { 4477 data.writeInt(0); 4478 } else { 4479 data.writeInt(1); 4480 data.writeBundle(options.toBundle()); 4481 } 4482 mRemote.transact(CONVERT_TO_TRANSLUCENT_TRANSACTION, data, reply, 0); 4483 reply.readException(); 4484 boolean res = reply.readInt() != 0; 4485 data.recycle(); 4486 reply.recycle(); 4487 return res; 4488 } 4489 4490 public ActivityOptions getActivityOptions(IBinder token) throws RemoteException { 4491 Parcel data = Parcel.obtain(); 4492 Parcel reply = Parcel.obtain(); 4493 data.writeInterfaceToken(IActivityManager.descriptor); 4494 data.writeStrongBinder(token); 4495 mRemote.transact(GET_ACTIVITY_OPTIONS_TRANSACTION, data, reply, 0); 4496 reply.readException(); 4497 Bundle bundle = reply.readBundle(); 4498 ActivityOptions options = bundle == null ? null : new ActivityOptions(bundle); 4499 data.recycle(); 4500 reply.recycle(); 4501 return options; 4502 } 4503 4504 public void setImmersive(IBinder token, boolean immersive) 4505 throws RemoteException { 4506 Parcel data = Parcel.obtain(); 4507 Parcel reply = Parcel.obtain(); 4508 data.writeInterfaceToken(IActivityManager.descriptor); 4509 data.writeStrongBinder(token); 4510 data.writeInt(immersive ? 1 : 0); 4511 mRemote.transact(SET_IMMERSIVE_TRANSACTION, data, reply, 0); 4512 reply.readException(); 4513 data.recycle(); 4514 reply.recycle(); 4515 } 4516 4517 public boolean isImmersive(IBinder token) 4518 throws RemoteException { 4519 Parcel data = Parcel.obtain(); 4520 Parcel reply = Parcel.obtain(); 4521 data.writeInterfaceToken(IActivityManager.descriptor); 4522 data.writeStrongBinder(token); 4523 mRemote.transact(IS_IMMERSIVE_TRANSACTION, data, reply, 0); 4524 reply.readException(); 4525 boolean res = reply.readInt() == 1; 4526 data.recycle(); 4527 reply.recycle(); 4528 return res; 4529 } 4530 4531 public boolean isTopOfTask(IBinder token) throws RemoteException { 4532 Parcel data = Parcel.obtain(); 4533 Parcel reply = Parcel.obtain(); 4534 data.writeInterfaceToken(IActivityManager.descriptor); 4535 data.writeStrongBinder(token); 4536 mRemote.transact(IS_TOP_OF_TASK_TRANSACTION, data, reply, 0); 4537 reply.readException(); 4538 boolean res = reply.readInt() == 1; 4539 data.recycle(); 4540 reply.recycle(); 4541 return res; 4542 } 4543 4544 public boolean isTopActivityImmersive() 4545 throws RemoteException { 4546 Parcel data = Parcel.obtain(); 4547 Parcel reply = Parcel.obtain(); 4548 data.writeInterfaceToken(IActivityManager.descriptor); 4549 mRemote.transact(IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION, data, reply, 0); 4550 reply.readException(); 4551 boolean res = reply.readInt() == 1; 4552 data.recycle(); 4553 reply.recycle(); 4554 return res; 4555 } 4556 4557 public void crashApplication(int uid, int initialPid, String packageName, 4558 String message) throws RemoteException { 4559 Parcel data = Parcel.obtain(); 4560 Parcel reply = Parcel.obtain(); 4561 data.writeInterfaceToken(IActivityManager.descriptor); 4562 data.writeInt(uid); 4563 data.writeInt(initialPid); 4564 data.writeString(packageName); 4565 data.writeString(message); 4566 mRemote.transact(CRASH_APPLICATION_TRANSACTION, data, reply, 0); 4567 reply.readException(); 4568 data.recycle(); 4569 reply.recycle(); 4570 } 4571 4572 public String getProviderMimeType(Uri uri, int userId) throws RemoteException { 4573 Parcel data = Parcel.obtain(); 4574 Parcel reply = Parcel.obtain(); 4575 data.writeInterfaceToken(IActivityManager.descriptor); 4576 uri.writeToParcel(data, 0); 4577 data.writeInt(userId); 4578 mRemote.transact(GET_PROVIDER_MIME_TYPE_TRANSACTION, data, reply, 0); 4579 reply.readException(); 4580 String res = reply.readString(); 4581 data.recycle(); 4582 reply.recycle(); 4583 return res; 4584 } 4585 4586 public IBinder newUriPermissionOwner(String name) 4587 throws RemoteException { 4588 Parcel data = Parcel.obtain(); 4589 Parcel reply = Parcel.obtain(); 4590 data.writeInterfaceToken(IActivityManager.descriptor); 4591 data.writeString(name); 4592 mRemote.transact(NEW_URI_PERMISSION_OWNER_TRANSACTION, data, reply, 0); 4593 reply.readException(); 4594 IBinder res = reply.readStrongBinder(); 4595 data.recycle(); 4596 reply.recycle(); 4597 return res; 4598 } 4599 4600 public void grantUriPermissionFromOwner(IBinder owner, int fromUid, String targetPkg, 4601 Uri uri, int mode, int sourceUserId, int targetUserId) throws RemoteException { 4602 Parcel data = Parcel.obtain(); 4603 Parcel reply = Parcel.obtain(); 4604 data.writeInterfaceToken(IActivityManager.descriptor); 4605 data.writeStrongBinder(owner); 4606 data.writeInt(fromUid); 4607 data.writeString(targetPkg); 4608 uri.writeToParcel(data, 0); 4609 data.writeInt(mode); 4610 data.writeInt(sourceUserId); 4611 data.writeInt(targetUserId); 4612 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 4613 reply.readException(); 4614 data.recycle(); 4615 reply.recycle(); 4616 } 4617 4618 public void revokeUriPermissionFromOwner(IBinder owner, Uri uri, 4619 int mode, int userId) throws RemoteException { 4620 Parcel data = Parcel.obtain(); 4621 Parcel reply = Parcel.obtain(); 4622 data.writeInterfaceToken(IActivityManager.descriptor); 4623 data.writeStrongBinder(owner); 4624 if (uri != null) { 4625 data.writeInt(1); 4626 uri.writeToParcel(data, 0); 4627 } else { 4628 data.writeInt(0); 4629 } 4630 data.writeInt(mode); 4631 data.writeInt(userId); 4632 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0); 4633 reply.readException(); 4634 data.recycle(); 4635 reply.recycle(); 4636 } 4637 4638 public int checkGrantUriPermission(int callingUid, String targetPkg, 4639 Uri uri, int modeFlags, int userId) throws RemoteException { 4640 Parcel data = Parcel.obtain(); 4641 Parcel reply = Parcel.obtain(); 4642 data.writeInterfaceToken(IActivityManager.descriptor); 4643 data.writeInt(callingUid); 4644 data.writeString(targetPkg); 4645 uri.writeToParcel(data, 0); 4646 data.writeInt(modeFlags); 4647 data.writeInt(userId); 4648 mRemote.transact(CHECK_GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 4649 reply.readException(); 4650 int res = reply.readInt(); 4651 data.recycle(); 4652 reply.recycle(); 4653 return res; 4654 } 4655 4656 public boolean dumpHeap(String process, int userId, boolean managed, 4657 String path, ParcelFileDescriptor fd) throws RemoteException { 4658 Parcel data = Parcel.obtain(); 4659 Parcel reply = Parcel.obtain(); 4660 data.writeInterfaceToken(IActivityManager.descriptor); 4661 data.writeString(process); 4662 data.writeInt(userId); 4663 data.writeInt(managed ? 1 : 0); 4664 data.writeString(path); 4665 if (fd != null) { 4666 data.writeInt(1); 4667 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 4668 } else { 4669 data.writeInt(0); 4670 } 4671 mRemote.transact(DUMP_HEAP_TRANSACTION, data, reply, 0); 4672 reply.readException(); 4673 boolean res = reply.readInt() != 0; 4674 reply.recycle(); 4675 data.recycle(); 4676 return res; 4677 } 4678 4679 public int startActivities(IApplicationThread caller, String callingPackage, 4680 Intent[] intents, String[] resolvedTypes, IBinder resultTo, 4681 Bundle options, int userId) throws RemoteException { 4682 Parcel data = Parcel.obtain(); 4683 Parcel reply = Parcel.obtain(); 4684 data.writeInterfaceToken(IActivityManager.descriptor); 4685 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 4686 data.writeString(callingPackage); 4687 data.writeTypedArray(intents, 0); 4688 data.writeStringArray(resolvedTypes); 4689 data.writeStrongBinder(resultTo); 4690 if (options != null) { 4691 data.writeInt(1); 4692 options.writeToParcel(data, 0); 4693 } else { 4694 data.writeInt(0); 4695 } 4696 data.writeInt(userId); 4697 mRemote.transact(START_ACTIVITIES_TRANSACTION, data, reply, 0); 4698 reply.readException(); 4699 int result = reply.readInt(); 4700 reply.recycle(); 4701 data.recycle(); 4702 return result; 4703 } 4704 4705 public int getFrontActivityScreenCompatMode() throws RemoteException { 4706 Parcel data = Parcel.obtain(); 4707 Parcel reply = Parcel.obtain(); 4708 data.writeInterfaceToken(IActivityManager.descriptor); 4709 mRemote.transact(GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4710 reply.readException(); 4711 int mode = reply.readInt(); 4712 reply.recycle(); 4713 data.recycle(); 4714 return mode; 4715 } 4716 4717 public void setFrontActivityScreenCompatMode(int mode) throws RemoteException { 4718 Parcel data = Parcel.obtain(); 4719 Parcel reply = Parcel.obtain(); 4720 data.writeInterfaceToken(IActivityManager.descriptor); 4721 data.writeInt(mode); 4722 mRemote.transact(SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4723 reply.readException(); 4724 reply.recycle(); 4725 data.recycle(); 4726 } 4727 4728 public int getPackageScreenCompatMode(String packageName) throws RemoteException { 4729 Parcel data = Parcel.obtain(); 4730 Parcel reply = Parcel.obtain(); 4731 data.writeInterfaceToken(IActivityManager.descriptor); 4732 data.writeString(packageName); 4733 mRemote.transact(GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4734 reply.readException(); 4735 int mode = reply.readInt(); 4736 reply.recycle(); 4737 data.recycle(); 4738 return mode; 4739 } 4740 4741 public void setPackageScreenCompatMode(String packageName, int mode) 4742 throws RemoteException { 4743 Parcel data = Parcel.obtain(); 4744 Parcel reply = Parcel.obtain(); 4745 data.writeInterfaceToken(IActivityManager.descriptor); 4746 data.writeString(packageName); 4747 data.writeInt(mode); 4748 mRemote.transact(SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4749 reply.readException(); 4750 reply.recycle(); 4751 data.recycle(); 4752 } 4753 4754 public boolean getPackageAskScreenCompat(String packageName) throws RemoteException { 4755 Parcel data = Parcel.obtain(); 4756 Parcel reply = Parcel.obtain(); 4757 data.writeInterfaceToken(IActivityManager.descriptor); 4758 data.writeString(packageName); 4759 mRemote.transact(GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0); 4760 reply.readException(); 4761 boolean ask = reply.readInt() != 0; 4762 reply.recycle(); 4763 data.recycle(); 4764 return ask; 4765 } 4766 4767 public void setPackageAskScreenCompat(String packageName, boolean ask) 4768 throws RemoteException { 4769 Parcel data = Parcel.obtain(); 4770 Parcel reply = Parcel.obtain(); 4771 data.writeInterfaceToken(IActivityManager.descriptor); 4772 data.writeString(packageName); 4773 data.writeInt(ask ? 1 : 0); 4774 mRemote.transact(SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0); 4775 reply.readException(); 4776 reply.recycle(); 4777 data.recycle(); 4778 } 4779 4780 public boolean switchUser(int userid) throws RemoteException { 4781 Parcel data = Parcel.obtain(); 4782 Parcel reply = Parcel.obtain(); 4783 data.writeInterfaceToken(IActivityManager.descriptor); 4784 data.writeInt(userid); 4785 mRemote.transact(SWITCH_USER_TRANSACTION, data, reply, 0); 4786 reply.readException(); 4787 boolean result = reply.readInt() != 0; 4788 reply.recycle(); 4789 data.recycle(); 4790 return result; 4791 } 4792 4793 public boolean startUserInBackground(int userid) throws RemoteException { 4794 Parcel data = Parcel.obtain(); 4795 Parcel reply = Parcel.obtain(); 4796 data.writeInterfaceToken(IActivityManager.descriptor); 4797 data.writeInt(userid); 4798 mRemote.transact(START_USER_IN_BACKGROUND_TRANSACTION, data, reply, 0); 4799 reply.readException(); 4800 boolean result = reply.readInt() != 0; 4801 reply.recycle(); 4802 data.recycle(); 4803 return result; 4804 } 4805 4806 public int stopUser(int userid, IStopUserCallback callback) throws RemoteException { 4807 Parcel data = Parcel.obtain(); 4808 Parcel reply = Parcel.obtain(); 4809 data.writeInterfaceToken(IActivityManager.descriptor); 4810 data.writeInt(userid); 4811 data.writeStrongInterface(callback); 4812 mRemote.transact(STOP_USER_TRANSACTION, data, reply, 0); 4813 reply.readException(); 4814 int result = reply.readInt(); 4815 reply.recycle(); 4816 data.recycle(); 4817 return result; 4818 } 4819 4820 public UserInfo getCurrentUser() throws RemoteException { 4821 Parcel data = Parcel.obtain(); 4822 Parcel reply = Parcel.obtain(); 4823 data.writeInterfaceToken(IActivityManager.descriptor); 4824 mRemote.transact(GET_CURRENT_USER_TRANSACTION, data, reply, 0); 4825 reply.readException(); 4826 UserInfo userInfo = UserInfo.CREATOR.createFromParcel(reply); 4827 reply.recycle(); 4828 data.recycle(); 4829 return userInfo; 4830 } 4831 4832 public boolean isUserRunning(int userid, boolean orStopping) throws RemoteException { 4833 Parcel data = Parcel.obtain(); 4834 Parcel reply = Parcel.obtain(); 4835 data.writeInterfaceToken(IActivityManager.descriptor); 4836 data.writeInt(userid); 4837 data.writeInt(orStopping ? 1 : 0); 4838 mRemote.transact(IS_USER_RUNNING_TRANSACTION, data, reply, 0); 4839 reply.readException(); 4840 boolean result = reply.readInt() != 0; 4841 reply.recycle(); 4842 data.recycle(); 4843 return result; 4844 } 4845 4846 public int[] getRunningUserIds() throws RemoteException { 4847 Parcel data = Parcel.obtain(); 4848 Parcel reply = Parcel.obtain(); 4849 data.writeInterfaceToken(IActivityManager.descriptor); 4850 mRemote.transact(GET_RUNNING_USER_IDS_TRANSACTION, data, reply, 0); 4851 reply.readException(); 4852 int[] result = reply.createIntArray(); 4853 reply.recycle(); 4854 data.recycle(); 4855 return result; 4856 } 4857 4858 public boolean removeTask(int taskId) throws RemoteException { 4859 Parcel data = Parcel.obtain(); 4860 Parcel reply = Parcel.obtain(); 4861 data.writeInterfaceToken(IActivityManager.descriptor); 4862 data.writeInt(taskId); 4863 mRemote.transact(REMOVE_TASK_TRANSACTION, data, reply, 0); 4864 reply.readException(); 4865 boolean result = reply.readInt() != 0; 4866 reply.recycle(); 4867 data.recycle(); 4868 return result; 4869 } 4870 4871 public void registerProcessObserver(IProcessObserver observer) throws RemoteException { 4872 Parcel data = Parcel.obtain(); 4873 Parcel reply = Parcel.obtain(); 4874 data.writeInterfaceToken(IActivityManager.descriptor); 4875 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 4876 mRemote.transact(REGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0); 4877 reply.readException(); 4878 data.recycle(); 4879 reply.recycle(); 4880 } 4881 4882 public void unregisterProcessObserver(IProcessObserver observer) throws RemoteException { 4883 Parcel data = Parcel.obtain(); 4884 Parcel reply = Parcel.obtain(); 4885 data.writeInterfaceToken(IActivityManager.descriptor); 4886 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 4887 mRemote.transact(UNREGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0); 4888 reply.readException(); 4889 data.recycle(); 4890 reply.recycle(); 4891 } 4892 4893 public boolean isIntentSenderTargetedToPackage(IIntentSender sender) throws RemoteException { 4894 Parcel data = Parcel.obtain(); 4895 Parcel reply = Parcel.obtain(); 4896 data.writeInterfaceToken(IActivityManager.descriptor); 4897 data.writeStrongBinder(sender.asBinder()); 4898 mRemote.transact(IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION, data, reply, 0); 4899 reply.readException(); 4900 boolean res = reply.readInt() != 0; 4901 data.recycle(); 4902 reply.recycle(); 4903 return res; 4904 } 4905 4906 public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException { 4907 Parcel data = Parcel.obtain(); 4908 Parcel reply = Parcel.obtain(); 4909 data.writeInterfaceToken(IActivityManager.descriptor); 4910 data.writeStrongBinder(sender.asBinder()); 4911 mRemote.transact(IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION, data, reply, 0); 4912 reply.readException(); 4913 boolean res = reply.readInt() != 0; 4914 data.recycle(); 4915 reply.recycle(); 4916 return res; 4917 } 4918 4919 public Intent getIntentForIntentSender(IIntentSender sender) throws RemoteException { 4920 Parcel data = Parcel.obtain(); 4921 Parcel reply = Parcel.obtain(); 4922 data.writeInterfaceToken(IActivityManager.descriptor); 4923 data.writeStrongBinder(sender.asBinder()); 4924 mRemote.transact(GET_INTENT_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 4925 reply.readException(); 4926 Intent res = reply.readInt() != 0 4927 ? Intent.CREATOR.createFromParcel(reply) : null; 4928 data.recycle(); 4929 reply.recycle(); 4930 return res; 4931 } 4932 4933 public String getTagForIntentSender(IIntentSender sender, String prefix) 4934 throws RemoteException { 4935 Parcel data = Parcel.obtain(); 4936 Parcel reply = Parcel.obtain(); 4937 data.writeInterfaceToken(IActivityManager.descriptor); 4938 data.writeStrongBinder(sender.asBinder()); 4939 data.writeString(prefix); 4940 mRemote.transact(GET_TAG_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 4941 reply.readException(); 4942 String res = reply.readString(); 4943 data.recycle(); 4944 reply.recycle(); 4945 return res; 4946 } 4947 4948 public void updatePersistentConfiguration(Configuration values) throws RemoteException 4949 { 4950 Parcel data = Parcel.obtain(); 4951 Parcel reply = Parcel.obtain(); 4952 data.writeInterfaceToken(IActivityManager.descriptor); 4953 values.writeToParcel(data, 0); 4954 mRemote.transact(UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION, data, reply, 0); 4955 reply.readException(); 4956 data.recycle(); 4957 reply.recycle(); 4958 } 4959 4960 public long[] getProcessPss(int[] pids) throws RemoteException { 4961 Parcel data = Parcel.obtain(); 4962 Parcel reply = Parcel.obtain(); 4963 data.writeInterfaceToken(IActivityManager.descriptor); 4964 data.writeIntArray(pids); 4965 mRemote.transact(GET_PROCESS_PSS_TRANSACTION, data, reply, 0); 4966 reply.readException(); 4967 long[] res = reply.createLongArray(); 4968 data.recycle(); 4969 reply.recycle(); 4970 return res; 4971 } 4972 4973 public void showBootMessage(CharSequence msg, boolean always) throws RemoteException { 4974 Parcel data = Parcel.obtain(); 4975 Parcel reply = Parcel.obtain(); 4976 data.writeInterfaceToken(IActivityManager.descriptor); 4977 TextUtils.writeToParcel(msg, data, 0); 4978 data.writeInt(always ? 1 : 0); 4979 mRemote.transact(SHOW_BOOT_MESSAGE_TRANSACTION, data, reply, 0); 4980 reply.readException(); 4981 data.recycle(); 4982 reply.recycle(); 4983 } 4984 4985 public void keyguardWaitingForActivityDrawn() throws RemoteException { 4986 Parcel data = Parcel.obtain(); 4987 Parcel reply = Parcel.obtain(); 4988 data.writeInterfaceToken(IActivityManager.descriptor); 4989 mRemote.transact(KEYGUARD_WAITING_FOR_ACTIVITY_DRAWN_TRANSACTION, data, reply, 0); 4990 reply.readException(); 4991 data.recycle(); 4992 reply.recycle(); 4993 } 4994 4995 public boolean shouldUpRecreateTask(IBinder token, String destAffinity) 4996 throws RemoteException { 4997 Parcel data = Parcel.obtain(); 4998 Parcel reply = Parcel.obtain(); 4999 data.writeInterfaceToken(IActivityManager.descriptor); 5000 data.writeStrongBinder(token); 5001 data.writeString(destAffinity); 5002 mRemote.transact(SHOULD_UP_RECREATE_TASK_TRANSACTION, data, reply, 0); 5003 reply.readException(); 5004 boolean result = reply.readInt() != 0; 5005 data.recycle(); 5006 reply.recycle(); 5007 return result; 5008 } 5009 5010 public boolean navigateUpTo(IBinder token, Intent target, int resultCode, Intent resultData) 5011 throws RemoteException { 5012 Parcel data = Parcel.obtain(); 5013 Parcel reply = Parcel.obtain(); 5014 data.writeInterfaceToken(IActivityManager.descriptor); 5015 data.writeStrongBinder(token); 5016 target.writeToParcel(data, 0); 5017 data.writeInt(resultCode); 5018 if (resultData != null) { 5019 data.writeInt(1); 5020 resultData.writeToParcel(data, 0); 5021 } else { 5022 data.writeInt(0); 5023 } 5024 mRemote.transact(NAVIGATE_UP_TO_TRANSACTION, data, reply, 0); 5025 reply.readException(); 5026 boolean result = reply.readInt() != 0; 5027 data.recycle(); 5028 reply.recycle(); 5029 return result; 5030 } 5031 5032 public int getLaunchedFromUid(IBinder activityToken) throws RemoteException { 5033 Parcel data = Parcel.obtain(); 5034 Parcel reply = Parcel.obtain(); 5035 data.writeInterfaceToken(IActivityManager.descriptor); 5036 data.writeStrongBinder(activityToken); 5037 mRemote.transact(GET_LAUNCHED_FROM_UID_TRANSACTION, data, reply, 0); 5038 reply.readException(); 5039 int result = reply.readInt(); 5040 data.recycle(); 5041 reply.recycle(); 5042 return result; 5043 } 5044 5045 public String getLaunchedFromPackage(IBinder activityToken) throws RemoteException { 5046 Parcel data = Parcel.obtain(); 5047 Parcel reply = Parcel.obtain(); 5048 data.writeInterfaceToken(IActivityManager.descriptor); 5049 data.writeStrongBinder(activityToken); 5050 mRemote.transact(GET_LAUNCHED_FROM_PACKAGE_TRANSACTION, data, reply, 0); 5051 reply.readException(); 5052 String result = reply.readString(); 5053 data.recycle(); 5054 reply.recycle(); 5055 return result; 5056 } 5057 5058 public void registerUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException { 5059 Parcel data = Parcel.obtain(); 5060 Parcel reply = Parcel.obtain(); 5061 data.writeInterfaceToken(IActivityManager.descriptor); 5062 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 5063 mRemote.transact(REGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0); 5064 reply.readException(); 5065 data.recycle(); 5066 reply.recycle(); 5067 } 5068 5069 public void unregisterUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException { 5070 Parcel data = Parcel.obtain(); 5071 Parcel reply = Parcel.obtain(); 5072 data.writeInterfaceToken(IActivityManager.descriptor); 5073 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 5074 mRemote.transact(UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0); 5075 reply.readException(); 5076 data.recycle(); 5077 reply.recycle(); 5078 } 5079 5080 public void requestBugReport() throws RemoteException { 5081 Parcel data = Parcel.obtain(); 5082 Parcel reply = Parcel.obtain(); 5083 data.writeInterfaceToken(IActivityManager.descriptor); 5084 mRemote.transact(REQUEST_BUG_REPORT_TRANSACTION, data, reply, 0); 5085 reply.readException(); 5086 data.recycle(); 5087 reply.recycle(); 5088 } 5089 5090 public long inputDispatchingTimedOut(int pid, boolean aboveSystem, String reason) 5091 throws RemoteException { 5092 Parcel data = Parcel.obtain(); 5093 Parcel reply = Parcel.obtain(); 5094 data.writeInterfaceToken(IActivityManager.descriptor); 5095 data.writeInt(pid); 5096 data.writeInt(aboveSystem ? 1 : 0); 5097 data.writeString(reason); 5098 mRemote.transact(INPUT_DISPATCHING_TIMED_OUT_TRANSACTION, data, reply, 0); 5099 reply.readException(); 5100 long res = reply.readInt(); 5101 data.recycle(); 5102 reply.recycle(); 5103 return res; 5104 } 5105 5106 public Bundle getAssistContextExtras(int requestType) throws RemoteException { 5107 Parcel data = Parcel.obtain(); 5108 Parcel reply = Parcel.obtain(); 5109 data.writeInterfaceToken(IActivityManager.descriptor); 5110 data.writeInt(requestType); 5111 mRemote.transact(GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0); 5112 reply.readException(); 5113 Bundle res = reply.readBundle(); 5114 data.recycle(); 5115 reply.recycle(); 5116 return res; 5117 } 5118 5119 public void reportAssistContextExtras(IBinder token, Bundle extras) 5120 throws RemoteException { 5121 Parcel data = Parcel.obtain(); 5122 Parcel reply = Parcel.obtain(); 5123 data.writeInterfaceToken(IActivityManager.descriptor); 5124 data.writeStrongBinder(token); 5125 data.writeBundle(extras); 5126 mRemote.transact(REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0); 5127 reply.readException(); 5128 data.recycle(); 5129 reply.recycle(); 5130 } 5131 5132 public boolean launchAssistIntent(Intent intent, int requestType, String hint, int userHandle) 5133 throws RemoteException { 5134 Parcel data = Parcel.obtain(); 5135 Parcel reply = Parcel.obtain(); 5136 data.writeInterfaceToken(IActivityManager.descriptor); 5137 intent.writeToParcel(data, 0); 5138 data.writeInt(requestType); 5139 data.writeString(hint); 5140 data.writeInt(userHandle); 5141 mRemote.transact(LAUNCH_ASSIST_INTENT_TRANSACTION, data, reply, 0); 5142 reply.readException(); 5143 boolean res = reply.readInt() != 0; 5144 data.recycle(); 5145 reply.recycle(); 5146 return res; 5147 } 5148 5149 public void killUid(int uid, String reason) throws RemoteException { 5150 Parcel data = Parcel.obtain(); 5151 Parcel reply = Parcel.obtain(); 5152 data.writeInterfaceToken(IActivityManager.descriptor); 5153 data.writeInt(uid); 5154 data.writeString(reason); 5155 mRemote.transact(KILL_UID_TRANSACTION, data, reply, 0); 5156 reply.readException(); 5157 data.recycle(); 5158 reply.recycle(); 5159 } 5160 5161 public void hang(IBinder who, boolean allowRestart) throws RemoteException { 5162 Parcel data = Parcel.obtain(); 5163 Parcel reply = Parcel.obtain(); 5164 data.writeInterfaceToken(IActivityManager.descriptor); 5165 data.writeStrongBinder(who); 5166 data.writeInt(allowRestart ? 1 : 0); 5167 mRemote.transact(HANG_TRANSACTION, data, reply, 0); 5168 reply.readException(); 5169 data.recycle(); 5170 reply.recycle(); 5171 } 5172 5173 public void reportActivityFullyDrawn(IBinder token) throws RemoteException { 5174 Parcel data = Parcel.obtain(); 5175 Parcel reply = Parcel.obtain(); 5176 data.writeInterfaceToken(IActivityManager.descriptor); 5177 data.writeStrongBinder(token); 5178 mRemote.transact(REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION, data, reply, 0); 5179 reply.readException(); 5180 data.recycle(); 5181 reply.recycle(); 5182 } 5183 5184 public void notifyActivityDrawn(IBinder token) throws RemoteException { 5185 Parcel data = Parcel.obtain(); 5186 Parcel reply = Parcel.obtain(); 5187 data.writeInterfaceToken(IActivityManager.descriptor); 5188 data.writeStrongBinder(token); 5189 mRemote.transact(NOTIFY_ACTIVITY_DRAWN_TRANSACTION, data, reply, 0); 5190 reply.readException(); 5191 data.recycle(); 5192 reply.recycle(); 5193 } 5194 5195 public void restart() throws RemoteException { 5196 Parcel data = Parcel.obtain(); 5197 Parcel reply = Parcel.obtain(); 5198 data.writeInterfaceToken(IActivityManager.descriptor); 5199 mRemote.transact(RESTART_TRANSACTION, data, reply, 0); 5200 reply.readException(); 5201 data.recycle(); 5202 reply.recycle(); 5203 } 5204 5205 public void performIdleMaintenance() throws RemoteException { 5206 Parcel data = Parcel.obtain(); 5207 Parcel reply = Parcel.obtain(); 5208 data.writeInterfaceToken(IActivityManager.descriptor); 5209 mRemote.transact(PERFORM_IDLE_MAINTENANCE_TRANSACTION, data, reply, 0); 5210 reply.readException(); 5211 data.recycle(); 5212 reply.recycle(); 5213 } 5214 5215 public IActivityContainer createVirtualActivityContainer(IBinder parentActivityToken, 5216 IActivityContainerCallback callback) throws RemoteException { 5217 Parcel data = Parcel.obtain(); 5218 Parcel reply = Parcel.obtain(); 5219 data.writeInterfaceToken(IActivityManager.descriptor); 5220 data.writeStrongBinder(parentActivityToken); 5221 data.writeStrongBinder(callback == null ? null : callback.asBinder()); 5222 mRemote.transact(CREATE_VIRTUAL_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); 5223 reply.readException(); 5224 final int result = reply.readInt(); 5225 final IActivityContainer res; 5226 if (result == 1) { 5227 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder()); 5228 } else { 5229 res = null; 5230 } 5231 data.recycle(); 5232 reply.recycle(); 5233 return res; 5234 } 5235 5236 public void deleteActivityContainer(IActivityContainer activityContainer) 5237 throws RemoteException { 5238 Parcel data = Parcel.obtain(); 5239 Parcel reply = Parcel.obtain(); 5240 data.writeInterfaceToken(IActivityManager.descriptor); 5241 data.writeStrongBinder(activityContainer.asBinder()); 5242 mRemote.transact(DELETE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); 5243 reply.readException(); 5244 data.recycle(); 5245 reply.recycle(); 5246 } 5247 5248 public IActivityContainer createStackOnDisplay(int displayId) throws RemoteException { 5249 Parcel data = Parcel.obtain(); 5250 Parcel reply = Parcel.obtain(); 5251 data.writeInterfaceToken(IActivityManager.descriptor); 5252 data.writeInt(displayId); 5253 mRemote.transact(CREATE_STACK_ON_DISPLAY, data, reply, 0); 5254 reply.readException(); 5255 final int result = reply.readInt(); 5256 final IActivityContainer res; 5257 if (result == 1) { 5258 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder()); 5259 } else { 5260 res = null; 5261 } 5262 data.recycle(); 5263 reply.recycle(); 5264 return res; 5265 } 5266 5267 public IActivityContainer getEnclosingActivityContainer(IBinder activityToken) 5268 throws RemoteException { 5269 Parcel data = Parcel.obtain(); 5270 Parcel reply = Parcel.obtain(); 5271 data.writeInterfaceToken(IActivityManager.descriptor); 5272 data.writeStrongBinder(activityToken); 5273 mRemote.transact(GET_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); 5274 reply.readException(); 5275 final int result = reply.readInt(); 5276 final IActivityContainer res; 5277 if (result == 1) { 5278 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder()); 5279 } else { 5280 res = null; 5281 } 5282 data.recycle(); 5283 reply.recycle(); 5284 return res; 5285 } 5286 5287 public IBinder getHomeActivityToken() throws RemoteException { 5288 Parcel data = Parcel.obtain(); 5289 Parcel reply = Parcel.obtain(); 5290 data.writeInterfaceToken(IActivityManager.descriptor); 5291 mRemote.transact(GET_HOME_ACTIVITY_TOKEN_TRANSACTION, data, reply, 0); 5292 reply.readException(); 5293 IBinder res = reply.readStrongBinder(); 5294 data.recycle(); 5295 reply.recycle(); 5296 return res; 5297 } 5298 5299 @Override 5300 public void startLockTaskMode(int taskId) throws RemoteException { 5301 Parcel data = Parcel.obtain(); 5302 Parcel reply = Parcel.obtain(); 5303 data.writeInterfaceToken(IActivityManager.descriptor); 5304 data.writeInt(taskId); 5305 mRemote.transact(START_LOCK_TASK_BY_TASK_ID_TRANSACTION, data, reply, 0); 5306 reply.readException(); 5307 data.recycle(); 5308 reply.recycle(); 5309 } 5310 5311 @Override 5312 public void startLockTaskMode(IBinder token) throws RemoteException { 5313 Parcel data = Parcel.obtain(); 5314 Parcel reply = Parcel.obtain(); 5315 data.writeInterfaceToken(IActivityManager.descriptor); 5316 data.writeStrongBinder(token); 5317 mRemote.transact(START_LOCK_TASK_BY_TOKEN_TRANSACTION, data, reply, 0); 5318 reply.readException(); 5319 data.recycle(); 5320 reply.recycle(); 5321 } 5322 5323 @Override 5324 public void startLockTaskModeOnCurrent() throws RemoteException { 5325 Parcel data = Parcel.obtain(); 5326 Parcel reply = Parcel.obtain(); 5327 data.writeInterfaceToken(IActivityManager.descriptor); 5328 mRemote.transact(START_LOCK_TASK_BY_CURRENT_TRANSACTION, data, reply, 0); 5329 reply.readException(); 5330 data.recycle(); 5331 reply.recycle(); 5332 } 5333 5334 @Override 5335 public void stopLockTaskMode() throws RemoteException { 5336 Parcel data = Parcel.obtain(); 5337 Parcel reply = Parcel.obtain(); 5338 data.writeInterfaceToken(IActivityManager.descriptor); 5339 mRemote.transact(STOP_LOCK_TASK_MODE_TRANSACTION, data, reply, 0); 5340 reply.readException(); 5341 data.recycle(); 5342 reply.recycle(); 5343 } 5344 5345 @Override 5346 public void stopLockTaskModeOnCurrent() throws RemoteException { 5347 Parcel data = Parcel.obtain(); 5348 Parcel reply = Parcel.obtain(); 5349 data.writeInterfaceToken(IActivityManager.descriptor); 5350 mRemote.transact(STOP_LOCK_TASK_BY_CURRENT_TRANSACTION, data, reply, 0); 5351 reply.readException(); 5352 data.recycle(); 5353 reply.recycle(); 5354 } 5355 5356 @Override 5357 public boolean isInLockTaskMode() throws RemoteException { 5358 Parcel data = Parcel.obtain(); 5359 Parcel reply = Parcel.obtain(); 5360 data.writeInterfaceToken(IActivityManager.descriptor); 5361 mRemote.transact(IS_IN_LOCK_TASK_MODE_TRANSACTION, data, reply, 0); 5362 reply.readException(); 5363 boolean isInLockTaskMode = reply.readInt() == 1; 5364 data.recycle(); 5365 reply.recycle(); 5366 return isInLockTaskMode; 5367 } 5368 5369 @Override 5370 public void setTaskDescription(IBinder token, ActivityManager.TaskDescription values) 5371 throws RemoteException { 5372 Parcel data = Parcel.obtain(); 5373 Parcel reply = Parcel.obtain(); 5374 data.writeInterfaceToken(IActivityManager.descriptor); 5375 data.writeStrongBinder(token); 5376 values.writeToParcel(data, 0); 5377 mRemote.transact(SET_TASK_DESCRIPTION_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 5378 reply.readException(); 5379 data.recycle(); 5380 reply.recycle(); 5381 } 5382 5383 @Override 5384 public Bitmap getTaskDescriptionIcon(String filename) throws RemoteException { 5385 Parcel data = Parcel.obtain(); 5386 Parcel reply = Parcel.obtain(); 5387 data.writeInterfaceToken(IActivityManager.descriptor); 5388 data.writeString(filename); 5389 mRemote.transact(GET_TASK_DESCRIPTION_ICON_TRANSACTION, data, reply, 0); 5390 reply.readException(); 5391 final Bitmap icon = reply.readInt() == 0 ? null : Bitmap.CREATOR.createFromParcel(reply); 5392 data.recycle(); 5393 reply.recycle(); 5394 return icon; 5395 } 5396 5397 @Override 5398 public void startInPlaceAnimationOnFrontMostApplication(ActivityOptions options) 5399 throws RemoteException { 5400 Parcel data = Parcel.obtain(); 5401 Parcel reply = Parcel.obtain(); 5402 data.writeInterfaceToken(IActivityManager.descriptor); 5403 if (options == null) { 5404 data.writeInt(0); 5405 } else { 5406 data.writeInt(1); 5407 data.writeBundle(options.toBundle()); 5408 } 5409 mRemote.transact(START_IN_PLACE_ANIMATION_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 5410 reply.readException(); 5411 data.recycle(); 5412 reply.recycle(); 5413 } 5414 5415 @Override 5416 public boolean requestVisibleBehind(IBinder token, boolean visible) throws RemoteException { 5417 Parcel data = Parcel.obtain(); 5418 Parcel reply = Parcel.obtain(); 5419 data.writeInterfaceToken(IActivityManager.descriptor); 5420 data.writeStrongBinder(token); 5421 data.writeInt(visible ? 1 : 0); 5422 mRemote.transact(REQUEST_VISIBLE_BEHIND_TRANSACTION, data, reply, 0); 5423 reply.readException(); 5424 boolean success = reply.readInt() > 0; 5425 data.recycle(); 5426 reply.recycle(); 5427 return success; 5428 } 5429 5430 @Override 5431 public boolean isBackgroundVisibleBehind(IBinder token) throws RemoteException { 5432 Parcel data = Parcel.obtain(); 5433 Parcel reply = Parcel.obtain(); 5434 data.writeInterfaceToken(IActivityManager.descriptor); 5435 data.writeStrongBinder(token); 5436 mRemote.transact(IS_BACKGROUND_VISIBLE_BEHIND_TRANSACTION, data, reply, 0); 5437 reply.readException(); 5438 final boolean visible = reply.readInt() > 0; 5439 data.recycle(); 5440 reply.recycle(); 5441 return visible; 5442 } 5443 5444 @Override 5445 public void backgroundResourcesReleased(IBinder token) throws RemoteException { 5446 Parcel data = Parcel.obtain(); 5447 Parcel reply = Parcel.obtain(); 5448 data.writeInterfaceToken(IActivityManager.descriptor); 5449 data.writeStrongBinder(token); 5450 mRemote.transact(BACKGROUND_RESOURCES_RELEASED_TRANSACTION, data, reply, 5451 IBinder.FLAG_ONEWAY); 5452 reply.readException(); 5453 data.recycle(); 5454 reply.recycle(); 5455 } 5456 5457 @Override 5458 public void notifyLaunchTaskBehindComplete(IBinder token) throws RemoteException { 5459 Parcel data = Parcel.obtain(); 5460 Parcel reply = Parcel.obtain(); 5461 data.writeInterfaceToken(IActivityManager.descriptor); 5462 data.writeStrongBinder(token); 5463 mRemote.transact(NOTIFY_LAUNCH_TASK_BEHIND_COMPLETE_TRANSACTION, data, reply, 5464 IBinder.FLAG_ONEWAY); 5465 reply.readException(); 5466 data.recycle(); 5467 reply.recycle(); 5468 } 5469 5470 @Override 5471 public void notifyEnterAnimationComplete(IBinder token) throws RemoteException { 5472 Parcel data = Parcel.obtain(); 5473 Parcel reply = Parcel.obtain(); 5474 data.writeInterfaceToken(IActivityManager.descriptor); 5475 data.writeStrongBinder(token); 5476 mRemote.transact(NOTIFY_ENTER_ANIMATION_COMPLETE_TRANSACTION, data, reply, 5477 IBinder.FLAG_ONEWAY); 5478 reply.readException(); 5479 data.recycle(); 5480 reply.recycle(); 5481 } 5482 5483 @Override 5484 public void bootAnimationComplete() throws RemoteException { 5485 Parcel data = Parcel.obtain(); 5486 Parcel reply = Parcel.obtain(); 5487 data.writeInterfaceToken(IActivityManager.descriptor); 5488 mRemote.transact(BOOT_ANIMATION_COMPLETE_TRANSACTION, data, reply, 0); 5489 reply.readException(); 5490 data.recycle(); 5491 reply.recycle(); 5492 } 5493 5494 @Override 5495 public void systemBackupRestored() throws RemoteException { 5496 Parcel data = Parcel.obtain(); 5497 Parcel reply = Parcel.obtain(); 5498 data.writeInterfaceToken(IActivityManager.descriptor); 5499 mRemote.transact(SYSTEM_BACKUP_RESTORED, data, reply, 0); 5500 reply.readException(); 5501 data.recycle(); 5502 reply.recycle(); 5503 } 5504 5505 @Override 5506 public void notifyCleartextNetwork(int uid, byte[] firstPacket) throws RemoteException { 5507 Parcel data = Parcel.obtain(); 5508 Parcel reply = Parcel.obtain(); 5509 data.writeInterfaceToken(IActivityManager.descriptor); 5510 data.writeInt(uid); 5511 data.writeByteArray(firstPacket); 5512 mRemote.transact(NOTIFY_CLEARTEXT_NETWORK_TRANSACTION, data, reply, 0); 5513 reply.readException(); 5514 data.recycle(); 5515 reply.recycle(); 5516 } 5517 5518 private IBinder mRemote; 5519} 5520