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