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