ActivityManagerNative.java revision 8e3f29540db56d02a45966344133d6144c81e7c5
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 reportAssistContextExtras(token, extras); 2197 reply.writeNoException(); 2198 return true; 2199 } 2200 2201 case LAUNCH_ASSIST_INTENT_TRANSACTION: { 2202 data.enforceInterface(IActivityManager.descriptor); 2203 Intent intent = Intent.CREATOR.createFromParcel(data); 2204 int requestType = data.readInt(); 2205 String hint = data.readString(); 2206 int userHandle = data.readInt(); 2207 boolean res = launchAssistIntent(intent, requestType, hint, userHandle); 2208 reply.writeNoException(); 2209 reply.writeInt(res ? 1 : 0); 2210 return true; 2211 } 2212 2213 case KILL_UID_TRANSACTION: { 2214 data.enforceInterface(IActivityManager.descriptor); 2215 int uid = data.readInt(); 2216 String reason = data.readString(); 2217 killUid(uid, reason); 2218 reply.writeNoException(); 2219 return true; 2220 } 2221 2222 case HANG_TRANSACTION: { 2223 data.enforceInterface(IActivityManager.descriptor); 2224 IBinder who = data.readStrongBinder(); 2225 boolean allowRestart = data.readInt() != 0; 2226 hang(who, allowRestart); 2227 reply.writeNoException(); 2228 return true; 2229 } 2230 2231 case REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION: { 2232 data.enforceInterface(IActivityManager.descriptor); 2233 IBinder token = data.readStrongBinder(); 2234 reportActivityFullyDrawn(token); 2235 reply.writeNoException(); 2236 return true; 2237 } 2238 2239 case NOTIFY_ACTIVITY_DRAWN_TRANSACTION: { 2240 data.enforceInterface(IActivityManager.descriptor); 2241 IBinder token = data.readStrongBinder(); 2242 notifyActivityDrawn(token); 2243 reply.writeNoException(); 2244 return true; 2245 } 2246 2247 case RESTART_TRANSACTION: { 2248 data.enforceInterface(IActivityManager.descriptor); 2249 restart(); 2250 reply.writeNoException(); 2251 return true; 2252 } 2253 2254 case PERFORM_IDLE_MAINTENANCE_TRANSACTION: { 2255 data.enforceInterface(IActivityManager.descriptor); 2256 performIdleMaintenance(); 2257 reply.writeNoException(); 2258 return true; 2259 } 2260 2261 case CREATE_VIRTUAL_ACTIVITY_CONTAINER_TRANSACTION: { 2262 data.enforceInterface(IActivityManager.descriptor); 2263 IBinder parentActivityToken = data.readStrongBinder(); 2264 IActivityContainerCallback callback = 2265 IActivityContainerCallback.Stub.asInterface(data.readStrongBinder()); 2266 IActivityContainer activityContainer = 2267 createVirtualActivityContainer(parentActivityToken, callback); 2268 reply.writeNoException(); 2269 if (activityContainer != null) { 2270 reply.writeInt(1); 2271 reply.writeStrongBinder(activityContainer.asBinder()); 2272 } else { 2273 reply.writeInt(0); 2274 } 2275 return true; 2276 } 2277 2278 case DELETE_ACTIVITY_CONTAINER_TRANSACTION: { 2279 data.enforceInterface(IActivityManager.descriptor); 2280 IActivityContainer activityContainer = 2281 IActivityContainer.Stub.asInterface(data.readStrongBinder()); 2282 deleteActivityContainer(activityContainer); 2283 reply.writeNoException(); 2284 return true; 2285 } 2286 2287 case CREATE_STACK_ON_DISPLAY: { 2288 data.enforceInterface(IActivityManager.descriptor); 2289 int displayId = data.readInt(); 2290 IActivityContainer activityContainer = createStackOnDisplay(displayId); 2291 reply.writeNoException(); 2292 if (activityContainer != null) { 2293 reply.writeInt(1); 2294 reply.writeStrongBinder(activityContainer.asBinder()); 2295 } else { 2296 reply.writeInt(0); 2297 } 2298 return true; 2299 } 2300 2301 case GET_ACTIVITY_DISPLAY_ID_TRANSACTION: { 2302 data.enforceInterface(IActivityManager.descriptor); 2303 IBinder activityToken = data.readStrongBinder(); 2304 int displayId = getActivityDisplayId(activityToken); 2305 reply.writeNoException(); 2306 reply.writeInt(displayId); 2307 return true; 2308 } 2309 2310 case GET_HOME_ACTIVITY_TOKEN_TRANSACTION: { 2311 data.enforceInterface(IActivityManager.descriptor); 2312 IBinder homeActivityToken = getHomeActivityToken(); 2313 reply.writeNoException(); 2314 reply.writeStrongBinder(homeActivityToken); 2315 return true; 2316 } 2317 2318 case START_LOCK_TASK_BY_TASK_ID_TRANSACTION: { 2319 data.enforceInterface(IActivityManager.descriptor); 2320 final int taskId = data.readInt(); 2321 startLockTaskMode(taskId); 2322 reply.writeNoException(); 2323 return true; 2324 } 2325 2326 case START_LOCK_TASK_BY_TOKEN_TRANSACTION: { 2327 data.enforceInterface(IActivityManager.descriptor); 2328 IBinder token = data.readStrongBinder(); 2329 startLockTaskMode(token); 2330 reply.writeNoException(); 2331 return true; 2332 } 2333 2334 case START_LOCK_TASK_BY_CURRENT_TRANSACTION: { 2335 data.enforceInterface(IActivityManager.descriptor); 2336 startLockTaskModeOnCurrent(); 2337 reply.writeNoException(); 2338 return true; 2339 } 2340 2341 case STOP_LOCK_TASK_MODE_TRANSACTION: { 2342 data.enforceInterface(IActivityManager.descriptor); 2343 stopLockTaskMode(); 2344 reply.writeNoException(); 2345 return true; 2346 } 2347 2348 case STOP_LOCK_TASK_BY_CURRENT_TRANSACTION: { 2349 data.enforceInterface(IActivityManager.descriptor); 2350 stopLockTaskModeOnCurrent(); 2351 reply.writeNoException(); 2352 return true; 2353 } 2354 2355 case IS_IN_LOCK_TASK_MODE_TRANSACTION: { 2356 data.enforceInterface(IActivityManager.descriptor); 2357 final boolean isInLockTaskMode = isInLockTaskMode(); 2358 reply.writeNoException(); 2359 reply.writeInt(isInLockTaskMode ? 1 : 0); 2360 return true; 2361 } 2362 2363 case GET_LOCK_TASK_MODE_STATE_TRANSACTION: { 2364 data.enforceInterface(IActivityManager.descriptor); 2365 final int lockTaskModeState = getLockTaskModeState(); 2366 reply.writeNoException(); 2367 reply.writeInt(lockTaskModeState); 2368 return true; 2369 } 2370 2371 case SHOW_LOCK_TASK_ESCAPE_MESSAGE_TRANSACTION: { 2372 data.enforceInterface(IActivityManager.descriptor); 2373 final IBinder token = data.readStrongBinder(); 2374 showLockTaskEscapeMessage(token); 2375 reply.writeNoException(); 2376 return true; 2377 } 2378 2379 case SET_TASK_DESCRIPTION_TRANSACTION: { 2380 data.enforceInterface(IActivityManager.descriptor); 2381 IBinder token = data.readStrongBinder(); 2382 ActivityManager.TaskDescription values = 2383 ActivityManager.TaskDescription.CREATOR.createFromParcel(data); 2384 setTaskDescription(token, values); 2385 reply.writeNoException(); 2386 return true; 2387 } 2388 2389 case SET_TASK_RESIZEABLE_TRANSACTION: { 2390 data.enforceInterface(IActivityManager.descriptor); 2391 int taskId = data.readInt(); 2392 boolean resizeable = (data.readInt() == 1) ? true : false; 2393 setTaskResizeable(taskId, resizeable); 2394 reply.writeNoException(); 2395 return true; 2396 } 2397 2398 case RESIZE_TASK_TRANSACTION: { 2399 data.enforceInterface(IActivityManager.descriptor); 2400 int taskId = data.readInt(); 2401 Rect r = Rect.CREATOR.createFromParcel(data); 2402 resizeTask(taskId, r); 2403 reply.writeNoException(); 2404 return true; 2405 } 2406 2407 case GET_TASK_DESCRIPTION_ICON_TRANSACTION: { 2408 data.enforceInterface(IActivityManager.descriptor); 2409 String filename = data.readString(); 2410 Bitmap icon = getTaskDescriptionIcon(filename); 2411 reply.writeNoException(); 2412 if (icon == null) { 2413 reply.writeInt(0); 2414 } else { 2415 reply.writeInt(1); 2416 icon.writeToParcel(reply, 0); 2417 } 2418 return true; 2419 } 2420 2421 case START_IN_PLACE_ANIMATION_TRANSACTION: { 2422 data.enforceInterface(IActivityManager.descriptor); 2423 final Bundle bundle; 2424 if (data.readInt() == 0) { 2425 bundle = null; 2426 } else { 2427 bundle = data.readBundle(); 2428 } 2429 final ActivityOptions options = bundle == null ? null : new ActivityOptions(bundle); 2430 startInPlaceAnimationOnFrontMostApplication(options); 2431 reply.writeNoException(); 2432 return true; 2433 } 2434 2435 case REQUEST_VISIBLE_BEHIND_TRANSACTION: { 2436 data.enforceInterface(IActivityManager.descriptor); 2437 IBinder token = data.readStrongBinder(); 2438 boolean enable = data.readInt() > 0; 2439 boolean success = requestVisibleBehind(token, enable); 2440 reply.writeNoException(); 2441 reply.writeInt(success ? 1 : 0); 2442 return true; 2443 } 2444 2445 case IS_BACKGROUND_VISIBLE_BEHIND_TRANSACTION: { 2446 data.enforceInterface(IActivityManager.descriptor); 2447 IBinder token = data.readStrongBinder(); 2448 final boolean enabled = isBackgroundVisibleBehind(token); 2449 reply.writeNoException(); 2450 reply.writeInt(enabled ? 1 : 0); 2451 return true; 2452 } 2453 2454 case BACKGROUND_RESOURCES_RELEASED_TRANSACTION: { 2455 data.enforceInterface(IActivityManager.descriptor); 2456 IBinder token = data.readStrongBinder(); 2457 backgroundResourcesReleased(token); 2458 reply.writeNoException(); 2459 return true; 2460 } 2461 2462 case NOTIFY_LAUNCH_TASK_BEHIND_COMPLETE_TRANSACTION: { 2463 data.enforceInterface(IActivityManager.descriptor); 2464 IBinder token = data.readStrongBinder(); 2465 notifyLaunchTaskBehindComplete(token); 2466 reply.writeNoException(); 2467 return true; 2468 } 2469 2470 case NOTIFY_ENTER_ANIMATION_COMPLETE_TRANSACTION: { 2471 data.enforceInterface(IActivityManager.descriptor); 2472 IBinder token = data.readStrongBinder(); 2473 notifyEnterAnimationComplete(token); 2474 reply.writeNoException(); 2475 return true; 2476 } 2477 2478 case BOOT_ANIMATION_COMPLETE_TRANSACTION: { 2479 data.enforceInterface(IActivityManager.descriptor); 2480 bootAnimationComplete(); 2481 reply.writeNoException(); 2482 return true; 2483 } 2484 2485 case NOTIFY_CLEARTEXT_NETWORK_TRANSACTION: { 2486 data.enforceInterface(IActivityManager.descriptor); 2487 final int uid = data.readInt(); 2488 final byte[] firstPacket = data.createByteArray(); 2489 notifyCleartextNetwork(uid, firstPacket); 2490 reply.writeNoException(); 2491 return true; 2492 } 2493 2494 case SET_DUMP_HEAP_DEBUG_LIMIT_TRANSACTION: { 2495 data.enforceInterface(IActivityManager.descriptor); 2496 String procName = data.readString(); 2497 int uid = data.readInt(); 2498 long maxMemSize = data.readLong(); 2499 String reportPackage = data.readString(); 2500 setDumpHeapDebugLimit(procName, uid, maxMemSize, reportPackage); 2501 reply.writeNoException(); 2502 return true; 2503 } 2504 2505 case DUMP_HEAP_FINISHED_TRANSACTION: { 2506 data.enforceInterface(IActivityManager.descriptor); 2507 String path = data.readString(); 2508 dumpHeapFinished(path); 2509 reply.writeNoException(); 2510 return true; 2511 } 2512 2513 case SET_VOICE_KEEP_AWAKE_TRANSACTION: { 2514 data.enforceInterface(IActivityManager.descriptor); 2515 IVoiceInteractionSession session = IVoiceInteractionSession.Stub.asInterface( 2516 data.readStrongBinder()); 2517 boolean keepAwake = data.readInt() != 0; 2518 setVoiceKeepAwake(session, keepAwake); 2519 reply.writeNoException(); 2520 return true; 2521 } 2522 2523 case UPDATE_LOCK_TASK_PACKAGES_TRANSACTION: { 2524 data.enforceInterface(IActivityManager.descriptor); 2525 int userId = data.readInt(); 2526 String[] packages = data.readStringArray(); 2527 updateLockTaskPackages(userId, packages); 2528 reply.writeNoException(); 2529 return true; 2530 } 2531 2532 case UPDATE_DEVICE_OWNER_TRANSACTION: { 2533 data.enforceInterface(IActivityManager.descriptor); 2534 String packageName = data.readString(); 2535 updateDeviceOwner(packageName); 2536 reply.writeNoException(); 2537 return true; 2538 } 2539 2540 case UPDATE_PREFERRED_SETUP_ACTIVITY_TRANSACTION: { 2541 data.enforceInterface(IActivityManager.descriptor); 2542 ComponentName preferredActivity = ComponentName.readFromParcel(data); 2543 int userId = data.readInt(); 2544 updatePreferredSetupActivity(preferredActivity, userId); 2545 reply.writeNoException(); 2546 return true; 2547 } 2548 2549 case GET_PACKAGE_PROCESS_STATE_TRANSACTION: { 2550 data.enforceInterface(IActivityManager.descriptor); 2551 String pkg = data.readString(); 2552 int res = getPackageProcessState(pkg); 2553 reply.writeNoException(); 2554 reply.writeInt(res); 2555 return true; 2556 } 2557 } 2558 2559 return super.onTransact(code, data, reply, flags); 2560 } 2561 2562 public IBinder asBinder() { 2563 return this; 2564 } 2565 2566 private static final Singleton<IActivityManager> gDefault = new Singleton<IActivityManager>() { 2567 protected IActivityManager create() { 2568 IBinder b = ServiceManager.getService("activity"); 2569 if (false) { 2570 Log.v("ActivityManager", "default service binder = " + b); 2571 } 2572 IActivityManager am = asInterface(b); 2573 if (false) { 2574 Log.v("ActivityManager", "default service = " + am); 2575 } 2576 return am; 2577 } 2578 }; 2579} 2580 2581class ActivityManagerProxy implements IActivityManager 2582{ 2583 public ActivityManagerProxy(IBinder remote) 2584 { 2585 mRemote = remote; 2586 } 2587 2588 public IBinder asBinder() 2589 { 2590 return mRemote; 2591 } 2592 2593 public int startActivity(IApplicationThread caller, String callingPackage, Intent intent, 2594 String resolvedType, IBinder resultTo, String resultWho, int requestCode, 2595 int startFlags, ProfilerInfo profilerInfo, Bundle options) throws RemoteException { 2596 Parcel data = Parcel.obtain(); 2597 Parcel reply = Parcel.obtain(); 2598 data.writeInterfaceToken(IActivityManager.descriptor); 2599 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2600 data.writeString(callingPackage); 2601 intent.writeToParcel(data, 0); 2602 data.writeString(resolvedType); 2603 data.writeStrongBinder(resultTo); 2604 data.writeString(resultWho); 2605 data.writeInt(requestCode); 2606 data.writeInt(startFlags); 2607 if (profilerInfo != null) { 2608 data.writeInt(1); 2609 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2610 } else { 2611 data.writeInt(0); 2612 } 2613 if (options != null) { 2614 data.writeInt(1); 2615 options.writeToParcel(data, 0); 2616 } else { 2617 data.writeInt(0); 2618 } 2619 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0); 2620 reply.readException(); 2621 int result = reply.readInt(); 2622 reply.recycle(); 2623 data.recycle(); 2624 return result; 2625 } 2626 2627 public int startActivityAsUser(IApplicationThread caller, String callingPackage, Intent intent, 2628 String resolvedType, IBinder resultTo, String resultWho, int requestCode, 2629 int startFlags, ProfilerInfo profilerInfo, Bundle options, 2630 int userId) throws RemoteException { 2631 Parcel data = Parcel.obtain(); 2632 Parcel reply = Parcel.obtain(); 2633 data.writeInterfaceToken(IActivityManager.descriptor); 2634 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2635 data.writeString(callingPackage); 2636 intent.writeToParcel(data, 0); 2637 data.writeString(resolvedType); 2638 data.writeStrongBinder(resultTo); 2639 data.writeString(resultWho); 2640 data.writeInt(requestCode); 2641 data.writeInt(startFlags); 2642 if (profilerInfo != null) { 2643 data.writeInt(1); 2644 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2645 } else { 2646 data.writeInt(0); 2647 } 2648 if (options != null) { 2649 data.writeInt(1); 2650 options.writeToParcel(data, 0); 2651 } else { 2652 data.writeInt(0); 2653 } 2654 data.writeInt(userId); 2655 mRemote.transact(START_ACTIVITY_AS_USER_TRANSACTION, data, reply, 0); 2656 reply.readException(); 2657 int result = reply.readInt(); 2658 reply.recycle(); 2659 data.recycle(); 2660 return result; 2661 } 2662 public int startActivityAsCaller(IApplicationThread caller, String callingPackage, 2663 Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode, 2664 int startFlags, ProfilerInfo profilerInfo, Bundle options, int userId) throws RemoteException { 2665 Parcel data = Parcel.obtain(); 2666 Parcel reply = Parcel.obtain(); 2667 data.writeInterfaceToken(IActivityManager.descriptor); 2668 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2669 data.writeString(callingPackage); 2670 intent.writeToParcel(data, 0); 2671 data.writeString(resolvedType); 2672 data.writeStrongBinder(resultTo); 2673 data.writeString(resultWho); 2674 data.writeInt(requestCode); 2675 data.writeInt(startFlags); 2676 if (profilerInfo != null) { 2677 data.writeInt(1); 2678 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2679 } else { 2680 data.writeInt(0); 2681 } 2682 if (options != null) { 2683 data.writeInt(1); 2684 options.writeToParcel(data, 0); 2685 } else { 2686 data.writeInt(0); 2687 } 2688 data.writeInt(userId); 2689 mRemote.transact(START_ACTIVITY_AS_CALLER_TRANSACTION, data, reply, 0); 2690 reply.readException(); 2691 int result = reply.readInt(); 2692 reply.recycle(); 2693 data.recycle(); 2694 return result; 2695 } 2696 public WaitResult startActivityAndWait(IApplicationThread caller, String callingPackage, 2697 Intent intent, String resolvedType, IBinder resultTo, String resultWho, 2698 int requestCode, int startFlags, ProfilerInfo profilerInfo, Bundle options, 2699 int userId) throws RemoteException { 2700 Parcel data = Parcel.obtain(); 2701 Parcel reply = Parcel.obtain(); 2702 data.writeInterfaceToken(IActivityManager.descriptor); 2703 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2704 data.writeString(callingPackage); 2705 intent.writeToParcel(data, 0); 2706 data.writeString(resolvedType); 2707 data.writeStrongBinder(resultTo); 2708 data.writeString(resultWho); 2709 data.writeInt(requestCode); 2710 data.writeInt(startFlags); 2711 if (profilerInfo != null) { 2712 data.writeInt(1); 2713 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2714 } else { 2715 data.writeInt(0); 2716 } 2717 if (options != null) { 2718 data.writeInt(1); 2719 options.writeToParcel(data, 0); 2720 } else { 2721 data.writeInt(0); 2722 } 2723 data.writeInt(userId); 2724 mRemote.transact(START_ACTIVITY_AND_WAIT_TRANSACTION, data, reply, 0); 2725 reply.readException(); 2726 WaitResult result = WaitResult.CREATOR.createFromParcel(reply); 2727 reply.recycle(); 2728 data.recycle(); 2729 return result; 2730 } 2731 public int startActivityWithConfig(IApplicationThread caller, String callingPackage, 2732 Intent intent, String resolvedType, IBinder resultTo, String resultWho, 2733 int requestCode, int startFlags, Configuration config, 2734 Bundle options, int userId) throws RemoteException { 2735 Parcel data = Parcel.obtain(); 2736 Parcel reply = Parcel.obtain(); 2737 data.writeInterfaceToken(IActivityManager.descriptor); 2738 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2739 data.writeString(callingPackage); 2740 intent.writeToParcel(data, 0); 2741 data.writeString(resolvedType); 2742 data.writeStrongBinder(resultTo); 2743 data.writeString(resultWho); 2744 data.writeInt(requestCode); 2745 data.writeInt(startFlags); 2746 config.writeToParcel(data, 0); 2747 if (options != null) { 2748 data.writeInt(1); 2749 options.writeToParcel(data, 0); 2750 } else { 2751 data.writeInt(0); 2752 } 2753 data.writeInt(userId); 2754 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0); 2755 reply.readException(); 2756 int result = reply.readInt(); 2757 reply.recycle(); 2758 data.recycle(); 2759 return result; 2760 } 2761 public int startActivityIntentSender(IApplicationThread caller, 2762 IntentSender intent, Intent fillInIntent, String resolvedType, 2763 IBinder resultTo, String resultWho, int requestCode, 2764 int flagsMask, int flagsValues, Bundle options) throws RemoteException { 2765 Parcel data = Parcel.obtain(); 2766 Parcel reply = Parcel.obtain(); 2767 data.writeInterfaceToken(IActivityManager.descriptor); 2768 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2769 intent.writeToParcel(data, 0); 2770 if (fillInIntent != null) { 2771 data.writeInt(1); 2772 fillInIntent.writeToParcel(data, 0); 2773 } else { 2774 data.writeInt(0); 2775 } 2776 data.writeString(resolvedType); 2777 data.writeStrongBinder(resultTo); 2778 data.writeString(resultWho); 2779 data.writeInt(requestCode); 2780 data.writeInt(flagsMask); 2781 data.writeInt(flagsValues); 2782 if (options != null) { 2783 data.writeInt(1); 2784 options.writeToParcel(data, 0); 2785 } else { 2786 data.writeInt(0); 2787 } 2788 mRemote.transact(START_ACTIVITY_INTENT_SENDER_TRANSACTION, data, reply, 0); 2789 reply.readException(); 2790 int result = reply.readInt(); 2791 reply.recycle(); 2792 data.recycle(); 2793 return result; 2794 } 2795 public int startVoiceActivity(String callingPackage, int callingPid, int callingUid, 2796 Intent intent, String resolvedType, IVoiceInteractionSession session, 2797 IVoiceInteractor interactor, int startFlags, ProfilerInfo profilerInfo, 2798 Bundle options, int userId) throws RemoteException { 2799 Parcel data = Parcel.obtain(); 2800 Parcel reply = Parcel.obtain(); 2801 data.writeInterfaceToken(IActivityManager.descriptor); 2802 data.writeString(callingPackage); 2803 data.writeInt(callingPid); 2804 data.writeInt(callingUid); 2805 intent.writeToParcel(data, 0); 2806 data.writeString(resolvedType); 2807 data.writeStrongBinder(session.asBinder()); 2808 data.writeStrongBinder(interactor.asBinder()); 2809 data.writeInt(startFlags); 2810 if (profilerInfo != null) { 2811 data.writeInt(1); 2812 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2813 } else { 2814 data.writeInt(0); 2815 } 2816 if (options != null) { 2817 data.writeInt(1); 2818 options.writeToParcel(data, 0); 2819 } else { 2820 data.writeInt(0); 2821 } 2822 data.writeInt(userId); 2823 mRemote.transact(START_VOICE_ACTIVITY_TRANSACTION, data, reply, 0); 2824 reply.readException(); 2825 int result = reply.readInt(); 2826 reply.recycle(); 2827 data.recycle(); 2828 return result; 2829 } 2830 public boolean startNextMatchingActivity(IBinder callingActivity, 2831 Intent intent, Bundle options) throws RemoteException { 2832 Parcel data = Parcel.obtain(); 2833 Parcel reply = Parcel.obtain(); 2834 data.writeInterfaceToken(IActivityManager.descriptor); 2835 data.writeStrongBinder(callingActivity); 2836 intent.writeToParcel(data, 0); 2837 if (options != null) { 2838 data.writeInt(1); 2839 options.writeToParcel(data, 0); 2840 } else { 2841 data.writeInt(0); 2842 } 2843 mRemote.transact(START_NEXT_MATCHING_ACTIVITY_TRANSACTION, data, reply, 0); 2844 reply.readException(); 2845 int result = reply.readInt(); 2846 reply.recycle(); 2847 data.recycle(); 2848 return result != 0; 2849 } 2850 public int startActivityFromRecents(int taskId, Bundle options) throws RemoteException { 2851 Parcel data = Parcel.obtain(); 2852 Parcel reply = Parcel.obtain(); 2853 data.writeInterfaceToken(IActivityManager.descriptor); 2854 data.writeInt(taskId); 2855 if (options == null) { 2856 data.writeInt(0); 2857 } else { 2858 data.writeInt(1); 2859 options.writeToParcel(data, 0); 2860 } 2861 mRemote.transact(START_ACTIVITY_FROM_RECENTS_TRANSACTION, data, reply, 0); 2862 reply.readException(); 2863 int result = reply.readInt(); 2864 reply.recycle(); 2865 data.recycle(); 2866 return result; 2867 } 2868 public boolean finishActivity(IBinder token, int resultCode, Intent resultData, boolean finishTask) 2869 throws RemoteException { 2870 Parcel data = Parcel.obtain(); 2871 Parcel reply = Parcel.obtain(); 2872 data.writeInterfaceToken(IActivityManager.descriptor); 2873 data.writeStrongBinder(token); 2874 data.writeInt(resultCode); 2875 if (resultData != null) { 2876 data.writeInt(1); 2877 resultData.writeToParcel(data, 0); 2878 } else { 2879 data.writeInt(0); 2880 } 2881 data.writeInt(finishTask ? 1 : 0); 2882 mRemote.transact(FINISH_ACTIVITY_TRANSACTION, data, reply, 0); 2883 reply.readException(); 2884 boolean res = reply.readInt() != 0; 2885 data.recycle(); 2886 reply.recycle(); 2887 return res; 2888 } 2889 public void finishSubActivity(IBinder token, String resultWho, int requestCode) throws RemoteException 2890 { 2891 Parcel data = Parcel.obtain(); 2892 Parcel reply = Parcel.obtain(); 2893 data.writeInterfaceToken(IActivityManager.descriptor); 2894 data.writeStrongBinder(token); 2895 data.writeString(resultWho); 2896 data.writeInt(requestCode); 2897 mRemote.transact(FINISH_SUB_ACTIVITY_TRANSACTION, data, reply, 0); 2898 reply.readException(); 2899 data.recycle(); 2900 reply.recycle(); 2901 } 2902 public boolean finishActivityAffinity(IBinder token) throws RemoteException { 2903 Parcel data = Parcel.obtain(); 2904 Parcel reply = Parcel.obtain(); 2905 data.writeInterfaceToken(IActivityManager.descriptor); 2906 data.writeStrongBinder(token); 2907 mRemote.transact(FINISH_ACTIVITY_AFFINITY_TRANSACTION, data, reply, 0); 2908 reply.readException(); 2909 boolean res = reply.readInt() != 0; 2910 data.recycle(); 2911 reply.recycle(); 2912 return res; 2913 } 2914 public void finishVoiceTask(IVoiceInteractionSession session) throws RemoteException { 2915 Parcel data = Parcel.obtain(); 2916 Parcel reply = Parcel.obtain(); 2917 data.writeInterfaceToken(IActivityManager.descriptor); 2918 data.writeStrongBinder(session.asBinder()); 2919 mRemote.transact(FINISH_VOICE_TASK_TRANSACTION, data, reply, 0); 2920 reply.readException(); 2921 data.recycle(); 2922 reply.recycle(); 2923 } 2924 public boolean releaseActivityInstance(IBinder token) throws RemoteException { 2925 Parcel data = Parcel.obtain(); 2926 Parcel reply = Parcel.obtain(); 2927 data.writeInterfaceToken(IActivityManager.descriptor); 2928 data.writeStrongBinder(token); 2929 mRemote.transact(RELEASE_ACTIVITY_INSTANCE_TRANSACTION, data, reply, 0); 2930 reply.readException(); 2931 boolean res = reply.readInt() != 0; 2932 data.recycle(); 2933 reply.recycle(); 2934 return res; 2935 } 2936 public void releaseSomeActivities(IApplicationThread app) throws RemoteException { 2937 Parcel data = Parcel.obtain(); 2938 Parcel reply = Parcel.obtain(); 2939 data.writeInterfaceToken(IActivityManager.descriptor); 2940 data.writeStrongBinder(app.asBinder()); 2941 mRemote.transact(RELEASE_SOME_ACTIVITIES_TRANSACTION, data, reply, 0); 2942 reply.readException(); 2943 data.recycle(); 2944 reply.recycle(); 2945 } 2946 public boolean willActivityBeVisible(IBinder token) throws RemoteException { 2947 Parcel data = Parcel.obtain(); 2948 Parcel reply = Parcel.obtain(); 2949 data.writeInterfaceToken(IActivityManager.descriptor); 2950 data.writeStrongBinder(token); 2951 mRemote.transact(WILL_ACTIVITY_BE_VISIBLE_TRANSACTION, data, reply, 0); 2952 reply.readException(); 2953 boolean res = reply.readInt() != 0; 2954 data.recycle(); 2955 reply.recycle(); 2956 return res; 2957 } 2958 public Intent registerReceiver(IApplicationThread caller, String packageName, 2959 IIntentReceiver receiver, 2960 IntentFilter filter, String perm, int userId) throws RemoteException 2961 { 2962 Parcel data = Parcel.obtain(); 2963 Parcel reply = Parcel.obtain(); 2964 data.writeInterfaceToken(IActivityManager.descriptor); 2965 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2966 data.writeString(packageName); 2967 data.writeStrongBinder(receiver != null ? receiver.asBinder() : null); 2968 filter.writeToParcel(data, 0); 2969 data.writeString(perm); 2970 data.writeInt(userId); 2971 mRemote.transact(REGISTER_RECEIVER_TRANSACTION, data, reply, 0); 2972 reply.readException(); 2973 Intent intent = null; 2974 int haveIntent = reply.readInt(); 2975 if (haveIntent != 0) { 2976 intent = Intent.CREATOR.createFromParcel(reply); 2977 } 2978 reply.recycle(); 2979 data.recycle(); 2980 return intent; 2981 } 2982 public void unregisterReceiver(IIntentReceiver receiver) throws RemoteException 2983 { 2984 Parcel data = Parcel.obtain(); 2985 Parcel reply = Parcel.obtain(); 2986 data.writeInterfaceToken(IActivityManager.descriptor); 2987 data.writeStrongBinder(receiver.asBinder()); 2988 mRemote.transact(UNREGISTER_RECEIVER_TRANSACTION, data, reply, 0); 2989 reply.readException(); 2990 data.recycle(); 2991 reply.recycle(); 2992 } 2993 public int broadcastIntent(IApplicationThread caller, 2994 Intent intent, String resolvedType, IIntentReceiver resultTo, 2995 int resultCode, String resultData, Bundle map, 2996 String requiredPermission, int appOp, boolean serialized, 2997 boolean sticky, int userId) throws RemoteException 2998 { 2999 Parcel data = Parcel.obtain(); 3000 Parcel reply = Parcel.obtain(); 3001 data.writeInterfaceToken(IActivityManager.descriptor); 3002 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3003 intent.writeToParcel(data, 0); 3004 data.writeString(resolvedType); 3005 data.writeStrongBinder(resultTo != null ? resultTo.asBinder() : null); 3006 data.writeInt(resultCode); 3007 data.writeString(resultData); 3008 data.writeBundle(map); 3009 data.writeString(requiredPermission); 3010 data.writeInt(appOp); 3011 data.writeInt(serialized ? 1 : 0); 3012 data.writeInt(sticky ? 1 : 0); 3013 data.writeInt(userId); 3014 mRemote.transact(BROADCAST_INTENT_TRANSACTION, data, reply, 0); 3015 reply.readException(); 3016 int res = reply.readInt(); 3017 reply.recycle(); 3018 data.recycle(); 3019 return res; 3020 } 3021 public void unbroadcastIntent(IApplicationThread caller, Intent intent, int userId) 3022 throws RemoteException 3023 { 3024 Parcel data = Parcel.obtain(); 3025 Parcel reply = Parcel.obtain(); 3026 data.writeInterfaceToken(IActivityManager.descriptor); 3027 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3028 intent.writeToParcel(data, 0); 3029 data.writeInt(userId); 3030 mRemote.transact(UNBROADCAST_INTENT_TRANSACTION, data, reply, 0); 3031 reply.readException(); 3032 data.recycle(); 3033 reply.recycle(); 3034 } 3035 public void finishReceiver(IBinder who, int resultCode, String resultData, Bundle map, 3036 boolean abortBroadcast, int flags) throws RemoteException 3037 { 3038 Parcel data = Parcel.obtain(); 3039 Parcel reply = Parcel.obtain(); 3040 data.writeInterfaceToken(IActivityManager.descriptor); 3041 data.writeStrongBinder(who); 3042 data.writeInt(resultCode); 3043 data.writeString(resultData); 3044 data.writeBundle(map); 3045 data.writeInt(abortBroadcast ? 1 : 0); 3046 data.writeInt(flags); 3047 mRemote.transact(FINISH_RECEIVER_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3048 reply.readException(); 3049 data.recycle(); 3050 reply.recycle(); 3051 } 3052 public void attachApplication(IApplicationThread app) throws RemoteException 3053 { 3054 Parcel data = Parcel.obtain(); 3055 Parcel reply = Parcel.obtain(); 3056 data.writeInterfaceToken(IActivityManager.descriptor); 3057 data.writeStrongBinder(app.asBinder()); 3058 mRemote.transact(ATTACH_APPLICATION_TRANSACTION, data, reply, 0); 3059 reply.readException(); 3060 data.recycle(); 3061 reply.recycle(); 3062 } 3063 public void activityIdle(IBinder token, Configuration config, boolean stopProfiling) 3064 throws RemoteException 3065 { 3066 Parcel data = Parcel.obtain(); 3067 Parcel reply = Parcel.obtain(); 3068 data.writeInterfaceToken(IActivityManager.descriptor); 3069 data.writeStrongBinder(token); 3070 if (config != null) { 3071 data.writeInt(1); 3072 config.writeToParcel(data, 0); 3073 } else { 3074 data.writeInt(0); 3075 } 3076 data.writeInt(stopProfiling ? 1 : 0); 3077 mRemote.transact(ACTIVITY_IDLE_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3078 reply.readException(); 3079 data.recycle(); 3080 reply.recycle(); 3081 } 3082 public void activityResumed(IBinder token) throws RemoteException 3083 { 3084 Parcel data = Parcel.obtain(); 3085 Parcel reply = Parcel.obtain(); 3086 data.writeInterfaceToken(IActivityManager.descriptor); 3087 data.writeStrongBinder(token); 3088 mRemote.transact(ACTIVITY_RESUMED_TRANSACTION, data, reply, 0); 3089 reply.readException(); 3090 data.recycle(); 3091 reply.recycle(); 3092 } 3093 public void activityPaused(IBinder token) throws RemoteException 3094 { 3095 Parcel data = Parcel.obtain(); 3096 Parcel reply = Parcel.obtain(); 3097 data.writeInterfaceToken(IActivityManager.descriptor); 3098 data.writeStrongBinder(token); 3099 mRemote.transact(ACTIVITY_PAUSED_TRANSACTION, data, reply, 0); 3100 reply.readException(); 3101 data.recycle(); 3102 reply.recycle(); 3103 } 3104 public void activityStopped(IBinder token, Bundle state, 3105 PersistableBundle persistentState, CharSequence description) throws RemoteException 3106 { 3107 Parcel data = Parcel.obtain(); 3108 Parcel reply = Parcel.obtain(); 3109 data.writeInterfaceToken(IActivityManager.descriptor); 3110 data.writeStrongBinder(token); 3111 data.writeBundle(state); 3112 data.writePersistableBundle(persistentState); 3113 TextUtils.writeToParcel(description, data, 0); 3114 mRemote.transact(ACTIVITY_STOPPED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3115 reply.readException(); 3116 data.recycle(); 3117 reply.recycle(); 3118 } 3119 public void activitySlept(IBinder token) throws RemoteException 3120 { 3121 Parcel data = Parcel.obtain(); 3122 Parcel reply = Parcel.obtain(); 3123 data.writeInterfaceToken(IActivityManager.descriptor); 3124 data.writeStrongBinder(token); 3125 mRemote.transact(ACTIVITY_SLEPT_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3126 reply.readException(); 3127 data.recycle(); 3128 reply.recycle(); 3129 } 3130 public void activityDestroyed(IBinder token) throws RemoteException 3131 { 3132 Parcel data = Parcel.obtain(); 3133 Parcel reply = Parcel.obtain(); 3134 data.writeInterfaceToken(IActivityManager.descriptor); 3135 data.writeStrongBinder(token); 3136 mRemote.transact(ACTIVITY_DESTROYED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3137 reply.readException(); 3138 data.recycle(); 3139 reply.recycle(); 3140 } 3141 public String getCallingPackage(IBinder token) throws RemoteException 3142 { 3143 Parcel data = Parcel.obtain(); 3144 Parcel reply = Parcel.obtain(); 3145 data.writeInterfaceToken(IActivityManager.descriptor); 3146 data.writeStrongBinder(token); 3147 mRemote.transact(GET_CALLING_PACKAGE_TRANSACTION, data, reply, 0); 3148 reply.readException(); 3149 String res = reply.readString(); 3150 data.recycle(); 3151 reply.recycle(); 3152 return res; 3153 } 3154 public ComponentName getCallingActivity(IBinder token) 3155 throws RemoteException { 3156 Parcel data = Parcel.obtain(); 3157 Parcel reply = Parcel.obtain(); 3158 data.writeInterfaceToken(IActivityManager.descriptor); 3159 data.writeStrongBinder(token); 3160 mRemote.transact(GET_CALLING_ACTIVITY_TRANSACTION, data, reply, 0); 3161 reply.readException(); 3162 ComponentName res = ComponentName.readFromParcel(reply); 3163 data.recycle(); 3164 reply.recycle(); 3165 return res; 3166 } 3167 public List<IAppTask> getAppTasks(String callingPackage) throws RemoteException { 3168 Parcel data = Parcel.obtain(); 3169 Parcel reply = Parcel.obtain(); 3170 data.writeInterfaceToken(IActivityManager.descriptor); 3171 data.writeString(callingPackage); 3172 mRemote.transact(GET_APP_TASKS_TRANSACTION, data, reply, 0); 3173 reply.readException(); 3174 ArrayList<IAppTask> list = null; 3175 int N = reply.readInt(); 3176 if (N >= 0) { 3177 list = new ArrayList<>(); 3178 while (N > 0) { 3179 IAppTask task = IAppTask.Stub.asInterface(reply.readStrongBinder()); 3180 list.add(task); 3181 N--; 3182 } 3183 } 3184 data.recycle(); 3185 reply.recycle(); 3186 return list; 3187 } 3188 public int addAppTask(IBinder activityToken, Intent intent, 3189 ActivityManager.TaskDescription description, Bitmap thumbnail) throws RemoteException { 3190 Parcel data = Parcel.obtain(); 3191 Parcel reply = Parcel.obtain(); 3192 data.writeInterfaceToken(IActivityManager.descriptor); 3193 data.writeStrongBinder(activityToken); 3194 intent.writeToParcel(data, 0); 3195 description.writeToParcel(data, 0); 3196 thumbnail.writeToParcel(data, 0); 3197 mRemote.transact(ADD_APP_TASK_TRANSACTION, data, reply, 0); 3198 reply.readException(); 3199 int res = reply.readInt(); 3200 data.recycle(); 3201 reply.recycle(); 3202 return res; 3203 } 3204 public Point getAppTaskThumbnailSize() throws RemoteException { 3205 Parcel data = Parcel.obtain(); 3206 Parcel reply = Parcel.obtain(); 3207 data.writeInterfaceToken(IActivityManager.descriptor); 3208 mRemote.transact(GET_APP_TASK_THUMBNAIL_SIZE_TRANSACTION, data, reply, 0); 3209 reply.readException(); 3210 Point size = Point.CREATOR.createFromParcel(reply); 3211 data.recycle(); 3212 reply.recycle(); 3213 return size; 3214 } 3215 public List<ActivityManager.RunningTaskInfo> getTasks(int maxNum, int flags) 3216 throws RemoteException { 3217 Parcel data = Parcel.obtain(); 3218 Parcel reply = Parcel.obtain(); 3219 data.writeInterfaceToken(IActivityManager.descriptor); 3220 data.writeInt(maxNum); 3221 data.writeInt(flags); 3222 mRemote.transact(GET_TASKS_TRANSACTION, data, reply, 0); 3223 reply.readException(); 3224 ArrayList<ActivityManager.RunningTaskInfo> list = null; 3225 int N = reply.readInt(); 3226 if (N >= 0) { 3227 list = new ArrayList<>(); 3228 while (N > 0) { 3229 ActivityManager.RunningTaskInfo info = 3230 ActivityManager.RunningTaskInfo.CREATOR 3231 .createFromParcel(reply); 3232 list.add(info); 3233 N--; 3234 } 3235 } 3236 data.recycle(); 3237 reply.recycle(); 3238 return list; 3239 } 3240 public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, 3241 int flags, int userId) throws RemoteException { 3242 Parcel data = Parcel.obtain(); 3243 Parcel reply = Parcel.obtain(); 3244 data.writeInterfaceToken(IActivityManager.descriptor); 3245 data.writeInt(maxNum); 3246 data.writeInt(flags); 3247 data.writeInt(userId); 3248 mRemote.transact(GET_RECENT_TASKS_TRANSACTION, data, reply, 0); 3249 reply.readException(); 3250 ArrayList<ActivityManager.RecentTaskInfo> list 3251 = reply.createTypedArrayList(ActivityManager.RecentTaskInfo.CREATOR); 3252 data.recycle(); 3253 reply.recycle(); 3254 return list; 3255 } 3256 public ActivityManager.TaskThumbnail getTaskThumbnail(int id) throws RemoteException { 3257 Parcel data = Parcel.obtain(); 3258 Parcel reply = Parcel.obtain(); 3259 data.writeInterfaceToken(IActivityManager.descriptor); 3260 data.writeInt(id); 3261 mRemote.transact(GET_TASK_THUMBNAIL_TRANSACTION, data, reply, 0); 3262 reply.readException(); 3263 ActivityManager.TaskThumbnail taskThumbnail = null; 3264 if (reply.readInt() != 0) { 3265 taskThumbnail = ActivityManager.TaskThumbnail.CREATOR.createFromParcel(reply); 3266 } 3267 data.recycle(); 3268 reply.recycle(); 3269 return taskThumbnail; 3270 } 3271 public List<ActivityManager.RunningServiceInfo> getServices(int maxNum, int flags) 3272 throws RemoteException { 3273 Parcel data = Parcel.obtain(); 3274 Parcel reply = Parcel.obtain(); 3275 data.writeInterfaceToken(IActivityManager.descriptor); 3276 data.writeInt(maxNum); 3277 data.writeInt(flags); 3278 mRemote.transact(GET_SERVICES_TRANSACTION, data, reply, 0); 3279 reply.readException(); 3280 ArrayList<ActivityManager.RunningServiceInfo> list = null; 3281 int N = reply.readInt(); 3282 if (N >= 0) { 3283 list = new ArrayList<>(); 3284 while (N > 0) { 3285 ActivityManager.RunningServiceInfo info = 3286 ActivityManager.RunningServiceInfo.CREATOR 3287 .createFromParcel(reply); 3288 list.add(info); 3289 N--; 3290 } 3291 } 3292 data.recycle(); 3293 reply.recycle(); 3294 return list; 3295 } 3296 public List<ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState() 3297 throws RemoteException { 3298 Parcel data = Parcel.obtain(); 3299 Parcel reply = Parcel.obtain(); 3300 data.writeInterfaceToken(IActivityManager.descriptor); 3301 mRemote.transact(GET_PROCESSES_IN_ERROR_STATE_TRANSACTION, data, reply, 0); 3302 reply.readException(); 3303 ArrayList<ActivityManager.ProcessErrorStateInfo> list 3304 = reply.createTypedArrayList(ActivityManager.ProcessErrorStateInfo.CREATOR); 3305 data.recycle(); 3306 reply.recycle(); 3307 return list; 3308 } 3309 public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses() 3310 throws RemoteException { 3311 Parcel data = Parcel.obtain(); 3312 Parcel reply = Parcel.obtain(); 3313 data.writeInterfaceToken(IActivityManager.descriptor); 3314 mRemote.transact(GET_RUNNING_APP_PROCESSES_TRANSACTION, data, reply, 0); 3315 reply.readException(); 3316 ArrayList<ActivityManager.RunningAppProcessInfo> list 3317 = reply.createTypedArrayList(ActivityManager.RunningAppProcessInfo.CREATOR); 3318 data.recycle(); 3319 reply.recycle(); 3320 return list; 3321 } 3322 public List<ApplicationInfo> getRunningExternalApplications() 3323 throws RemoteException { 3324 Parcel data = Parcel.obtain(); 3325 Parcel reply = Parcel.obtain(); 3326 data.writeInterfaceToken(IActivityManager.descriptor); 3327 mRemote.transact(GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION, data, reply, 0); 3328 reply.readException(); 3329 ArrayList<ApplicationInfo> list 3330 = reply.createTypedArrayList(ApplicationInfo.CREATOR); 3331 data.recycle(); 3332 reply.recycle(); 3333 return list; 3334 } 3335 public void moveTaskToFront(int task, int flags, Bundle options) throws RemoteException 3336 { 3337 Parcel data = Parcel.obtain(); 3338 Parcel reply = Parcel.obtain(); 3339 data.writeInterfaceToken(IActivityManager.descriptor); 3340 data.writeInt(task); 3341 data.writeInt(flags); 3342 if (options != null) { 3343 data.writeInt(1); 3344 options.writeToParcel(data, 0); 3345 } else { 3346 data.writeInt(0); 3347 } 3348 mRemote.transact(MOVE_TASK_TO_FRONT_TRANSACTION, data, reply, 0); 3349 reply.readException(); 3350 data.recycle(); 3351 reply.recycle(); 3352 } 3353 public boolean moveActivityTaskToBack(IBinder token, boolean nonRoot) 3354 throws RemoteException { 3355 Parcel data = Parcel.obtain(); 3356 Parcel reply = Parcel.obtain(); 3357 data.writeInterfaceToken(IActivityManager.descriptor); 3358 data.writeStrongBinder(token); 3359 data.writeInt(nonRoot ? 1 : 0); 3360 mRemote.transact(MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION, data, reply, 0); 3361 reply.readException(); 3362 boolean res = reply.readInt() != 0; 3363 data.recycle(); 3364 reply.recycle(); 3365 return res; 3366 } 3367 public void moveTaskBackwards(int task) throws RemoteException 3368 { 3369 Parcel data = Parcel.obtain(); 3370 Parcel reply = Parcel.obtain(); 3371 data.writeInterfaceToken(IActivityManager.descriptor); 3372 data.writeInt(task); 3373 mRemote.transact(MOVE_TASK_BACKWARDS_TRANSACTION, data, reply, 0); 3374 reply.readException(); 3375 data.recycle(); 3376 reply.recycle(); 3377 } 3378 @Override 3379 public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException 3380 { 3381 Parcel data = Parcel.obtain(); 3382 Parcel reply = Parcel.obtain(); 3383 data.writeInterfaceToken(IActivityManager.descriptor); 3384 data.writeInt(taskId); 3385 data.writeInt(stackId); 3386 data.writeInt(toTop ? 1 : 0); 3387 mRemote.transact(MOVE_TASK_TO_STACK_TRANSACTION, data, reply, 0); 3388 reply.readException(); 3389 data.recycle(); 3390 reply.recycle(); 3391 } 3392 @Override 3393 public void resizeStack(int stackBoxId, Rect r) throws RemoteException 3394 { 3395 Parcel data = Parcel.obtain(); 3396 Parcel reply = Parcel.obtain(); 3397 data.writeInterfaceToken(IActivityManager.descriptor); 3398 data.writeInt(stackBoxId); 3399 r.writeToParcel(data, 0); 3400 mRemote.transact(RESIZE_STACK_TRANSACTION, data, reply, 0); 3401 reply.readException(); 3402 data.recycle(); 3403 reply.recycle(); 3404 } 3405 @Override 3406 public List<StackInfo> getAllStackInfos() throws RemoteException 3407 { 3408 Parcel data = Parcel.obtain(); 3409 Parcel reply = Parcel.obtain(); 3410 data.writeInterfaceToken(IActivityManager.descriptor); 3411 mRemote.transact(GET_ALL_STACK_INFOS_TRANSACTION, data, reply, 0); 3412 reply.readException(); 3413 ArrayList<StackInfo> list = reply.createTypedArrayList(StackInfo.CREATOR); 3414 data.recycle(); 3415 reply.recycle(); 3416 return list; 3417 } 3418 @Override 3419 public StackInfo getStackInfo(int stackId) throws RemoteException 3420 { 3421 Parcel data = Parcel.obtain(); 3422 Parcel reply = Parcel.obtain(); 3423 data.writeInterfaceToken(IActivityManager.descriptor); 3424 data.writeInt(stackId); 3425 mRemote.transact(GET_STACK_INFO_TRANSACTION, data, reply, 0); 3426 reply.readException(); 3427 int res = reply.readInt(); 3428 StackInfo info = null; 3429 if (res != 0) { 3430 info = StackInfo.CREATOR.createFromParcel(reply); 3431 } 3432 data.recycle(); 3433 reply.recycle(); 3434 return info; 3435 } 3436 @Override 3437 public boolean isInHomeStack(int taskId) throws RemoteException { 3438 Parcel data = Parcel.obtain(); 3439 Parcel reply = Parcel.obtain(); 3440 data.writeInterfaceToken(IActivityManager.descriptor); 3441 data.writeInt(taskId); 3442 mRemote.transact(IS_IN_HOME_STACK_TRANSACTION, data, reply, 0); 3443 reply.readException(); 3444 boolean isInHomeStack = reply.readInt() > 0; 3445 data.recycle(); 3446 reply.recycle(); 3447 return isInHomeStack; 3448 } 3449 @Override 3450 public void setFocusedStack(int stackId) throws RemoteException 3451 { 3452 Parcel data = Parcel.obtain(); 3453 Parcel reply = Parcel.obtain(); 3454 data.writeInterfaceToken(IActivityManager.descriptor); 3455 data.writeInt(stackId); 3456 mRemote.transact(SET_FOCUSED_STACK_TRANSACTION, data, reply, 0); 3457 reply.readException(); 3458 data.recycle(); 3459 reply.recycle(); 3460 } 3461 @Override 3462 public int getFocusedStackId() throws RemoteException { 3463 Parcel data = Parcel.obtain(); 3464 Parcel reply = Parcel.obtain(); 3465 data.writeInterfaceToken(IActivityManager.descriptor); 3466 mRemote.transact(GET_FOCUSED_STACK_ID_TRANSACTION, data, reply, 0); 3467 reply.readException(); 3468 int focusedStackId = reply.readInt(); 3469 data.recycle(); 3470 reply.recycle(); 3471 return focusedStackId; 3472 } 3473 @Override 3474 public void registerTaskStackListener(ITaskStackListener listener) throws RemoteException 3475 { 3476 Parcel data = Parcel.obtain(); 3477 Parcel reply = Parcel.obtain(); 3478 data.writeInterfaceToken(IActivityManager.descriptor); 3479 data.writeStrongBinder(listener.asBinder()); 3480 mRemote.transact(REGISTER_TASK_STACK_LISTENER_TRANSACTION, data, reply, 0); 3481 reply.readException(); 3482 data.recycle(); 3483 reply.recycle(); 3484 } 3485 public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException 3486 { 3487 Parcel data = Parcel.obtain(); 3488 Parcel reply = Parcel.obtain(); 3489 data.writeInterfaceToken(IActivityManager.descriptor); 3490 data.writeStrongBinder(token); 3491 data.writeInt(onlyRoot ? 1 : 0); 3492 mRemote.transact(GET_TASK_FOR_ACTIVITY_TRANSACTION, data, reply, 0); 3493 reply.readException(); 3494 int res = reply.readInt(); 3495 data.recycle(); 3496 reply.recycle(); 3497 return res; 3498 } 3499 public ContentProviderHolder getContentProvider(IApplicationThread caller, 3500 String name, int userId, boolean stable) throws RemoteException { 3501 Parcel data = Parcel.obtain(); 3502 Parcel reply = Parcel.obtain(); 3503 data.writeInterfaceToken(IActivityManager.descriptor); 3504 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3505 data.writeString(name); 3506 data.writeInt(userId); 3507 data.writeInt(stable ? 1 : 0); 3508 mRemote.transact(GET_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 3509 reply.readException(); 3510 int res = reply.readInt(); 3511 ContentProviderHolder cph = null; 3512 if (res != 0) { 3513 cph = ContentProviderHolder.CREATOR.createFromParcel(reply); 3514 } 3515 data.recycle(); 3516 reply.recycle(); 3517 return cph; 3518 } 3519 public ContentProviderHolder getContentProviderExternal(String name, int userId, IBinder token) 3520 throws RemoteException { 3521 Parcel data = Parcel.obtain(); 3522 Parcel reply = Parcel.obtain(); 3523 data.writeInterfaceToken(IActivityManager.descriptor); 3524 data.writeString(name); 3525 data.writeInt(userId); 3526 data.writeStrongBinder(token); 3527 mRemote.transact(GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0); 3528 reply.readException(); 3529 int res = reply.readInt(); 3530 ContentProviderHolder cph = null; 3531 if (res != 0) { 3532 cph = ContentProviderHolder.CREATOR.createFromParcel(reply); 3533 } 3534 data.recycle(); 3535 reply.recycle(); 3536 return cph; 3537 } 3538 public void publishContentProviders(IApplicationThread caller, 3539 List<ContentProviderHolder> providers) throws RemoteException 3540 { 3541 Parcel data = Parcel.obtain(); 3542 Parcel reply = Parcel.obtain(); 3543 data.writeInterfaceToken(IActivityManager.descriptor); 3544 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3545 data.writeTypedList(providers); 3546 mRemote.transact(PUBLISH_CONTENT_PROVIDERS_TRANSACTION, data, reply, 0); 3547 reply.readException(); 3548 data.recycle(); 3549 reply.recycle(); 3550 } 3551 public boolean refContentProvider(IBinder connection, int stable, int unstable) 3552 throws RemoteException { 3553 Parcel data = Parcel.obtain(); 3554 Parcel reply = Parcel.obtain(); 3555 data.writeInterfaceToken(IActivityManager.descriptor); 3556 data.writeStrongBinder(connection); 3557 data.writeInt(stable); 3558 data.writeInt(unstable); 3559 mRemote.transact(REF_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 3560 reply.readException(); 3561 boolean res = reply.readInt() != 0; 3562 data.recycle(); 3563 reply.recycle(); 3564 return res; 3565 } 3566 3567 public void unstableProviderDied(IBinder connection) throws RemoteException { 3568 Parcel data = Parcel.obtain(); 3569 Parcel reply = Parcel.obtain(); 3570 data.writeInterfaceToken(IActivityManager.descriptor); 3571 data.writeStrongBinder(connection); 3572 mRemote.transact(UNSTABLE_PROVIDER_DIED_TRANSACTION, data, reply, 0); 3573 reply.readException(); 3574 data.recycle(); 3575 reply.recycle(); 3576 } 3577 3578 @Override 3579 public void appNotRespondingViaProvider(IBinder connection) throws RemoteException { 3580 Parcel data = Parcel.obtain(); 3581 Parcel reply = Parcel.obtain(); 3582 data.writeInterfaceToken(IActivityManager.descriptor); 3583 data.writeStrongBinder(connection); 3584 mRemote.transact(APP_NOT_RESPONDING_VIA_PROVIDER_TRANSACTION, data, reply, 0); 3585 reply.readException(); 3586 data.recycle(); 3587 reply.recycle(); 3588 } 3589 3590 public void removeContentProvider(IBinder connection, boolean stable) throws RemoteException { 3591 Parcel data = Parcel.obtain(); 3592 Parcel reply = Parcel.obtain(); 3593 data.writeInterfaceToken(IActivityManager.descriptor); 3594 data.writeStrongBinder(connection); 3595 data.writeInt(stable ? 1 : 0); 3596 mRemote.transact(REMOVE_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 3597 reply.readException(); 3598 data.recycle(); 3599 reply.recycle(); 3600 } 3601 3602 public void removeContentProviderExternal(String name, IBinder token) throws RemoteException { 3603 Parcel data = Parcel.obtain(); 3604 Parcel reply = Parcel.obtain(); 3605 data.writeInterfaceToken(IActivityManager.descriptor); 3606 data.writeString(name); 3607 data.writeStrongBinder(token); 3608 mRemote.transact(REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0); 3609 reply.readException(); 3610 data.recycle(); 3611 reply.recycle(); 3612 } 3613 3614 public PendingIntent getRunningServiceControlPanel(ComponentName service) 3615 throws RemoteException 3616 { 3617 Parcel data = Parcel.obtain(); 3618 Parcel reply = Parcel.obtain(); 3619 data.writeInterfaceToken(IActivityManager.descriptor); 3620 service.writeToParcel(data, 0); 3621 mRemote.transact(GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION, data, reply, 0); 3622 reply.readException(); 3623 PendingIntent res = PendingIntent.readPendingIntentOrNullFromParcel(reply); 3624 data.recycle(); 3625 reply.recycle(); 3626 return res; 3627 } 3628 3629 public ComponentName startService(IApplicationThread caller, Intent service, 3630 String resolvedType, int userId) throws RemoteException 3631 { 3632 Parcel data = Parcel.obtain(); 3633 Parcel reply = Parcel.obtain(); 3634 data.writeInterfaceToken(IActivityManager.descriptor); 3635 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3636 service.writeToParcel(data, 0); 3637 data.writeString(resolvedType); 3638 data.writeInt(userId); 3639 mRemote.transact(START_SERVICE_TRANSACTION, data, reply, 0); 3640 reply.readException(); 3641 ComponentName res = ComponentName.readFromParcel(reply); 3642 data.recycle(); 3643 reply.recycle(); 3644 return res; 3645 } 3646 public int stopService(IApplicationThread caller, Intent service, 3647 String resolvedType, int userId) throws RemoteException 3648 { 3649 Parcel data = Parcel.obtain(); 3650 Parcel reply = Parcel.obtain(); 3651 data.writeInterfaceToken(IActivityManager.descriptor); 3652 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3653 service.writeToParcel(data, 0); 3654 data.writeString(resolvedType); 3655 data.writeInt(userId); 3656 mRemote.transact(STOP_SERVICE_TRANSACTION, data, reply, 0); 3657 reply.readException(); 3658 int res = reply.readInt(); 3659 reply.recycle(); 3660 data.recycle(); 3661 return res; 3662 } 3663 public boolean stopServiceToken(ComponentName className, IBinder token, 3664 int startId) throws RemoteException { 3665 Parcel data = Parcel.obtain(); 3666 Parcel reply = Parcel.obtain(); 3667 data.writeInterfaceToken(IActivityManager.descriptor); 3668 ComponentName.writeToParcel(className, data); 3669 data.writeStrongBinder(token); 3670 data.writeInt(startId); 3671 mRemote.transact(STOP_SERVICE_TOKEN_TRANSACTION, data, reply, 0); 3672 reply.readException(); 3673 boolean res = reply.readInt() != 0; 3674 data.recycle(); 3675 reply.recycle(); 3676 return res; 3677 } 3678 public void setServiceForeground(ComponentName className, IBinder token, 3679 int id, Notification notification, boolean removeNotification) throws RemoteException { 3680 Parcel data = Parcel.obtain(); 3681 Parcel reply = Parcel.obtain(); 3682 data.writeInterfaceToken(IActivityManager.descriptor); 3683 ComponentName.writeToParcel(className, data); 3684 data.writeStrongBinder(token); 3685 data.writeInt(id); 3686 if (notification != null) { 3687 data.writeInt(1); 3688 notification.writeToParcel(data, 0); 3689 } else { 3690 data.writeInt(0); 3691 } 3692 data.writeInt(removeNotification ? 1 : 0); 3693 mRemote.transact(SET_SERVICE_FOREGROUND_TRANSACTION, data, reply, 0); 3694 reply.readException(); 3695 data.recycle(); 3696 reply.recycle(); 3697 } 3698 public int bindService(IApplicationThread caller, IBinder token, 3699 Intent service, String resolvedType, IServiceConnection connection, 3700 int flags, int userId) throws RemoteException { 3701 Parcel data = Parcel.obtain(); 3702 Parcel reply = Parcel.obtain(); 3703 data.writeInterfaceToken(IActivityManager.descriptor); 3704 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3705 data.writeStrongBinder(token); 3706 service.writeToParcel(data, 0); 3707 data.writeString(resolvedType); 3708 data.writeStrongBinder(connection.asBinder()); 3709 data.writeInt(flags); 3710 data.writeInt(userId); 3711 mRemote.transact(BIND_SERVICE_TRANSACTION, data, reply, 0); 3712 reply.readException(); 3713 int res = reply.readInt(); 3714 data.recycle(); 3715 reply.recycle(); 3716 return res; 3717 } 3718 public boolean unbindService(IServiceConnection connection) throws RemoteException 3719 { 3720 Parcel data = Parcel.obtain(); 3721 Parcel reply = Parcel.obtain(); 3722 data.writeInterfaceToken(IActivityManager.descriptor); 3723 data.writeStrongBinder(connection.asBinder()); 3724 mRemote.transact(UNBIND_SERVICE_TRANSACTION, data, reply, 0); 3725 reply.readException(); 3726 boolean res = reply.readInt() != 0; 3727 data.recycle(); 3728 reply.recycle(); 3729 return res; 3730 } 3731 3732 public void publishService(IBinder token, 3733 Intent intent, IBinder service) throws RemoteException { 3734 Parcel data = Parcel.obtain(); 3735 Parcel reply = Parcel.obtain(); 3736 data.writeInterfaceToken(IActivityManager.descriptor); 3737 data.writeStrongBinder(token); 3738 intent.writeToParcel(data, 0); 3739 data.writeStrongBinder(service); 3740 mRemote.transact(PUBLISH_SERVICE_TRANSACTION, data, reply, 0); 3741 reply.readException(); 3742 data.recycle(); 3743 reply.recycle(); 3744 } 3745 3746 public void unbindFinished(IBinder token, Intent intent, boolean doRebind) 3747 throws RemoteException { 3748 Parcel data = Parcel.obtain(); 3749 Parcel reply = Parcel.obtain(); 3750 data.writeInterfaceToken(IActivityManager.descriptor); 3751 data.writeStrongBinder(token); 3752 intent.writeToParcel(data, 0); 3753 data.writeInt(doRebind ? 1 : 0); 3754 mRemote.transact(UNBIND_FINISHED_TRANSACTION, data, reply, 0); 3755 reply.readException(); 3756 data.recycle(); 3757 reply.recycle(); 3758 } 3759 3760 public void serviceDoneExecuting(IBinder token, int type, int startId, 3761 int res) throws RemoteException { 3762 Parcel data = Parcel.obtain(); 3763 Parcel reply = Parcel.obtain(); 3764 data.writeInterfaceToken(IActivityManager.descriptor); 3765 data.writeStrongBinder(token); 3766 data.writeInt(type); 3767 data.writeInt(startId); 3768 data.writeInt(res); 3769 mRemote.transact(SERVICE_DONE_EXECUTING_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 3770 reply.readException(); 3771 data.recycle(); 3772 reply.recycle(); 3773 } 3774 3775 public IBinder peekService(Intent service, String resolvedType) throws RemoteException { 3776 Parcel data = Parcel.obtain(); 3777 Parcel reply = Parcel.obtain(); 3778 data.writeInterfaceToken(IActivityManager.descriptor); 3779 service.writeToParcel(data, 0); 3780 data.writeString(resolvedType); 3781 mRemote.transact(PEEK_SERVICE_TRANSACTION, data, reply, 0); 3782 reply.readException(); 3783 IBinder binder = reply.readStrongBinder(); 3784 reply.recycle(); 3785 data.recycle(); 3786 return binder; 3787 } 3788 3789 public boolean bindBackupAgent(ApplicationInfo app, int backupRestoreMode) 3790 throws RemoteException { 3791 Parcel data = Parcel.obtain(); 3792 Parcel reply = Parcel.obtain(); 3793 data.writeInterfaceToken(IActivityManager.descriptor); 3794 app.writeToParcel(data, 0); 3795 data.writeInt(backupRestoreMode); 3796 mRemote.transact(START_BACKUP_AGENT_TRANSACTION, data, reply, 0); 3797 reply.readException(); 3798 boolean success = reply.readInt() != 0; 3799 reply.recycle(); 3800 data.recycle(); 3801 return success; 3802 } 3803 3804 public void clearPendingBackup() throws RemoteException { 3805 Parcel data = Parcel.obtain(); 3806 Parcel reply = Parcel.obtain(); 3807 data.writeInterfaceToken(IActivityManager.descriptor); 3808 mRemote.transact(CLEAR_PENDING_BACKUP_TRANSACTION, data, reply, 0); 3809 reply.recycle(); 3810 data.recycle(); 3811 } 3812 3813 public void backupAgentCreated(String packageName, IBinder agent) throws RemoteException { 3814 Parcel data = Parcel.obtain(); 3815 Parcel reply = Parcel.obtain(); 3816 data.writeInterfaceToken(IActivityManager.descriptor); 3817 data.writeString(packageName); 3818 data.writeStrongBinder(agent); 3819 mRemote.transact(BACKUP_AGENT_CREATED_TRANSACTION, data, reply, 0); 3820 reply.recycle(); 3821 data.recycle(); 3822 } 3823 3824 public void unbindBackupAgent(ApplicationInfo app) throws RemoteException { 3825 Parcel data = Parcel.obtain(); 3826 Parcel reply = Parcel.obtain(); 3827 data.writeInterfaceToken(IActivityManager.descriptor); 3828 app.writeToParcel(data, 0); 3829 mRemote.transact(UNBIND_BACKUP_AGENT_TRANSACTION, data, reply, 0); 3830 reply.readException(); 3831 reply.recycle(); 3832 data.recycle(); 3833 } 3834 3835 public boolean startInstrumentation(ComponentName className, String profileFile, 3836 int flags, Bundle arguments, IInstrumentationWatcher watcher, 3837 IUiAutomationConnection connection, int userId, String instructionSet) 3838 throws RemoteException { 3839 Parcel data = Parcel.obtain(); 3840 Parcel reply = Parcel.obtain(); 3841 data.writeInterfaceToken(IActivityManager.descriptor); 3842 ComponentName.writeToParcel(className, data); 3843 data.writeString(profileFile); 3844 data.writeInt(flags); 3845 data.writeBundle(arguments); 3846 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null); 3847 data.writeStrongBinder(connection != null ? connection.asBinder() : null); 3848 data.writeInt(userId); 3849 data.writeString(instructionSet); 3850 mRemote.transact(START_INSTRUMENTATION_TRANSACTION, data, reply, 0); 3851 reply.readException(); 3852 boolean res = reply.readInt() != 0; 3853 reply.recycle(); 3854 data.recycle(); 3855 return res; 3856 } 3857 3858 public void finishInstrumentation(IApplicationThread target, 3859 int resultCode, Bundle results) throws RemoteException { 3860 Parcel data = Parcel.obtain(); 3861 Parcel reply = Parcel.obtain(); 3862 data.writeInterfaceToken(IActivityManager.descriptor); 3863 data.writeStrongBinder(target != null ? target.asBinder() : null); 3864 data.writeInt(resultCode); 3865 data.writeBundle(results); 3866 mRemote.transact(FINISH_INSTRUMENTATION_TRANSACTION, data, reply, 0); 3867 reply.readException(); 3868 data.recycle(); 3869 reply.recycle(); 3870 } 3871 public Configuration getConfiguration() throws RemoteException 3872 { 3873 Parcel data = Parcel.obtain(); 3874 Parcel reply = Parcel.obtain(); 3875 data.writeInterfaceToken(IActivityManager.descriptor); 3876 mRemote.transact(GET_CONFIGURATION_TRANSACTION, data, reply, 0); 3877 reply.readException(); 3878 Configuration res = Configuration.CREATOR.createFromParcel(reply); 3879 reply.recycle(); 3880 data.recycle(); 3881 return res; 3882 } 3883 public void updateConfiguration(Configuration values) throws RemoteException 3884 { 3885 Parcel data = Parcel.obtain(); 3886 Parcel reply = Parcel.obtain(); 3887 data.writeInterfaceToken(IActivityManager.descriptor); 3888 values.writeToParcel(data, 0); 3889 mRemote.transact(UPDATE_CONFIGURATION_TRANSACTION, data, reply, 0); 3890 reply.readException(); 3891 data.recycle(); 3892 reply.recycle(); 3893 } 3894 public void setRequestedOrientation(IBinder token, int requestedOrientation) 3895 throws RemoteException { 3896 Parcel data = Parcel.obtain(); 3897 Parcel reply = Parcel.obtain(); 3898 data.writeInterfaceToken(IActivityManager.descriptor); 3899 data.writeStrongBinder(token); 3900 data.writeInt(requestedOrientation); 3901 mRemote.transact(SET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0); 3902 reply.readException(); 3903 data.recycle(); 3904 reply.recycle(); 3905 } 3906 public int getRequestedOrientation(IBinder token) throws RemoteException { 3907 Parcel data = Parcel.obtain(); 3908 Parcel reply = Parcel.obtain(); 3909 data.writeInterfaceToken(IActivityManager.descriptor); 3910 data.writeStrongBinder(token); 3911 mRemote.transact(GET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0); 3912 reply.readException(); 3913 int res = reply.readInt(); 3914 data.recycle(); 3915 reply.recycle(); 3916 return res; 3917 } 3918 public ComponentName getActivityClassForToken(IBinder token) 3919 throws RemoteException { 3920 Parcel data = Parcel.obtain(); 3921 Parcel reply = Parcel.obtain(); 3922 data.writeInterfaceToken(IActivityManager.descriptor); 3923 data.writeStrongBinder(token); 3924 mRemote.transact(GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION, data, reply, 0); 3925 reply.readException(); 3926 ComponentName res = ComponentName.readFromParcel(reply); 3927 data.recycle(); 3928 reply.recycle(); 3929 return res; 3930 } 3931 public String getPackageForToken(IBinder token) throws RemoteException 3932 { 3933 Parcel data = Parcel.obtain(); 3934 Parcel reply = Parcel.obtain(); 3935 data.writeInterfaceToken(IActivityManager.descriptor); 3936 data.writeStrongBinder(token); 3937 mRemote.transact(GET_PACKAGE_FOR_TOKEN_TRANSACTION, data, reply, 0); 3938 reply.readException(); 3939 String res = reply.readString(); 3940 data.recycle(); 3941 reply.recycle(); 3942 return res; 3943 } 3944 public IIntentSender getIntentSender(int type, 3945 String packageName, IBinder token, String resultWho, 3946 int requestCode, Intent[] intents, String[] resolvedTypes, int flags, 3947 Bundle options, int userId) throws RemoteException { 3948 Parcel data = Parcel.obtain(); 3949 Parcel reply = Parcel.obtain(); 3950 data.writeInterfaceToken(IActivityManager.descriptor); 3951 data.writeInt(type); 3952 data.writeString(packageName); 3953 data.writeStrongBinder(token); 3954 data.writeString(resultWho); 3955 data.writeInt(requestCode); 3956 if (intents != null) { 3957 data.writeInt(1); 3958 data.writeTypedArray(intents, 0); 3959 data.writeStringArray(resolvedTypes); 3960 } else { 3961 data.writeInt(0); 3962 } 3963 data.writeInt(flags); 3964 if (options != null) { 3965 data.writeInt(1); 3966 options.writeToParcel(data, 0); 3967 } else { 3968 data.writeInt(0); 3969 } 3970 data.writeInt(userId); 3971 mRemote.transact(GET_INTENT_SENDER_TRANSACTION, data, reply, 0); 3972 reply.readException(); 3973 IIntentSender res = IIntentSender.Stub.asInterface( 3974 reply.readStrongBinder()); 3975 data.recycle(); 3976 reply.recycle(); 3977 return res; 3978 } 3979 public void cancelIntentSender(IIntentSender sender) throws RemoteException { 3980 Parcel data = Parcel.obtain(); 3981 Parcel reply = Parcel.obtain(); 3982 data.writeInterfaceToken(IActivityManager.descriptor); 3983 data.writeStrongBinder(sender.asBinder()); 3984 mRemote.transact(CANCEL_INTENT_SENDER_TRANSACTION, data, reply, 0); 3985 reply.readException(); 3986 data.recycle(); 3987 reply.recycle(); 3988 } 3989 public String getPackageForIntentSender(IIntentSender sender) throws RemoteException { 3990 Parcel data = Parcel.obtain(); 3991 Parcel reply = Parcel.obtain(); 3992 data.writeInterfaceToken(IActivityManager.descriptor); 3993 data.writeStrongBinder(sender.asBinder()); 3994 mRemote.transact(GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 3995 reply.readException(); 3996 String res = reply.readString(); 3997 data.recycle(); 3998 reply.recycle(); 3999 return res; 4000 } 4001 public int getUidForIntentSender(IIntentSender sender) throws RemoteException { 4002 Parcel data = Parcel.obtain(); 4003 Parcel reply = Parcel.obtain(); 4004 data.writeInterfaceToken(IActivityManager.descriptor); 4005 data.writeStrongBinder(sender.asBinder()); 4006 mRemote.transact(GET_UID_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 4007 reply.readException(); 4008 int res = reply.readInt(); 4009 data.recycle(); 4010 reply.recycle(); 4011 return res; 4012 } 4013 public int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll, 4014 boolean requireFull, String name, String callerPackage) throws RemoteException { 4015 Parcel data = Parcel.obtain(); 4016 Parcel reply = Parcel.obtain(); 4017 data.writeInterfaceToken(IActivityManager.descriptor); 4018 data.writeInt(callingPid); 4019 data.writeInt(callingUid); 4020 data.writeInt(userId); 4021 data.writeInt(allowAll ? 1 : 0); 4022 data.writeInt(requireFull ? 1 : 0); 4023 data.writeString(name); 4024 data.writeString(callerPackage); 4025 mRemote.transact(HANDLE_INCOMING_USER_TRANSACTION, data, reply, 0); 4026 reply.readException(); 4027 int res = reply.readInt(); 4028 data.recycle(); 4029 reply.recycle(); 4030 return res; 4031 } 4032 public void setProcessLimit(int max) throws RemoteException 4033 { 4034 Parcel data = Parcel.obtain(); 4035 Parcel reply = Parcel.obtain(); 4036 data.writeInterfaceToken(IActivityManager.descriptor); 4037 data.writeInt(max); 4038 mRemote.transact(SET_PROCESS_LIMIT_TRANSACTION, data, reply, 0); 4039 reply.readException(); 4040 data.recycle(); 4041 reply.recycle(); 4042 } 4043 public int getProcessLimit() throws RemoteException 4044 { 4045 Parcel data = Parcel.obtain(); 4046 Parcel reply = Parcel.obtain(); 4047 data.writeInterfaceToken(IActivityManager.descriptor); 4048 mRemote.transact(GET_PROCESS_LIMIT_TRANSACTION, data, reply, 0); 4049 reply.readException(); 4050 int res = reply.readInt(); 4051 data.recycle(); 4052 reply.recycle(); 4053 return res; 4054 } 4055 public void setProcessForeground(IBinder token, int pid, 4056 boolean isForeground) throws RemoteException { 4057 Parcel data = Parcel.obtain(); 4058 Parcel reply = Parcel.obtain(); 4059 data.writeInterfaceToken(IActivityManager.descriptor); 4060 data.writeStrongBinder(token); 4061 data.writeInt(pid); 4062 data.writeInt(isForeground ? 1 : 0); 4063 mRemote.transact(SET_PROCESS_FOREGROUND_TRANSACTION, data, reply, 0); 4064 reply.readException(); 4065 data.recycle(); 4066 reply.recycle(); 4067 } 4068 public int checkPermission(String permission, int pid, int uid) 4069 throws RemoteException { 4070 Parcel data = Parcel.obtain(); 4071 Parcel reply = Parcel.obtain(); 4072 data.writeInterfaceToken(IActivityManager.descriptor); 4073 data.writeString(permission); 4074 data.writeInt(pid); 4075 data.writeInt(uid); 4076 mRemote.transact(CHECK_PERMISSION_TRANSACTION, data, reply, 0); 4077 reply.readException(); 4078 int res = reply.readInt(); 4079 data.recycle(); 4080 reply.recycle(); 4081 return res; 4082 } 4083 public int checkPermissionWithToken(String permission, int pid, int uid, IBinder callerToken) 4084 throws RemoteException { 4085 Parcel data = Parcel.obtain(); 4086 Parcel reply = Parcel.obtain(); 4087 data.writeInterfaceToken(IActivityManager.descriptor); 4088 data.writeString(permission); 4089 data.writeInt(pid); 4090 data.writeInt(uid); 4091 data.writeStrongBinder(callerToken); 4092 mRemote.transact(CHECK_PERMISSION_WITH_TOKEN_TRANSACTION, data, reply, 0); 4093 reply.readException(); 4094 int res = reply.readInt(); 4095 data.recycle(); 4096 reply.recycle(); 4097 return res; 4098 } 4099 public boolean clearApplicationUserData(final String packageName, 4100 final IPackageDataObserver observer, final int userId) throws RemoteException { 4101 Parcel data = Parcel.obtain(); 4102 Parcel reply = Parcel.obtain(); 4103 data.writeInterfaceToken(IActivityManager.descriptor); 4104 data.writeString(packageName); 4105 data.writeStrongBinder((observer != null) ? observer.asBinder() : null); 4106 data.writeInt(userId); 4107 mRemote.transact(CLEAR_APP_DATA_TRANSACTION, data, reply, 0); 4108 reply.readException(); 4109 boolean res = reply.readInt() != 0; 4110 data.recycle(); 4111 reply.recycle(); 4112 return res; 4113 } 4114 public int checkUriPermission(Uri uri, int pid, int uid, int mode, int userId, 4115 IBinder callerToken) throws RemoteException { 4116 Parcel data = Parcel.obtain(); 4117 Parcel reply = Parcel.obtain(); 4118 data.writeInterfaceToken(IActivityManager.descriptor); 4119 uri.writeToParcel(data, 0); 4120 data.writeInt(pid); 4121 data.writeInt(uid); 4122 data.writeInt(mode); 4123 data.writeInt(userId); 4124 data.writeStrongBinder(callerToken); 4125 mRemote.transact(CHECK_URI_PERMISSION_TRANSACTION, data, reply, 0); 4126 reply.readException(); 4127 int res = reply.readInt(); 4128 data.recycle(); 4129 reply.recycle(); 4130 return res; 4131 } 4132 public void grantUriPermission(IApplicationThread caller, String targetPkg, 4133 Uri uri, int mode, int userId) throws RemoteException { 4134 Parcel data = Parcel.obtain(); 4135 Parcel reply = Parcel.obtain(); 4136 data.writeInterfaceToken(IActivityManager.descriptor); 4137 data.writeStrongBinder(caller.asBinder()); 4138 data.writeString(targetPkg); 4139 uri.writeToParcel(data, 0); 4140 data.writeInt(mode); 4141 data.writeInt(userId); 4142 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 4143 reply.readException(); 4144 data.recycle(); 4145 reply.recycle(); 4146 } 4147 public void revokeUriPermission(IApplicationThread caller, Uri uri, 4148 int mode, int userId) throws RemoteException { 4149 Parcel data = Parcel.obtain(); 4150 Parcel reply = Parcel.obtain(); 4151 data.writeInterfaceToken(IActivityManager.descriptor); 4152 data.writeStrongBinder(caller.asBinder()); 4153 uri.writeToParcel(data, 0); 4154 data.writeInt(mode); 4155 data.writeInt(userId); 4156 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0); 4157 reply.readException(); 4158 data.recycle(); 4159 reply.recycle(); 4160 } 4161 4162 @Override 4163 public void takePersistableUriPermission(Uri uri, int mode, int userId) 4164 throws RemoteException { 4165 Parcel data = Parcel.obtain(); 4166 Parcel reply = Parcel.obtain(); 4167 data.writeInterfaceToken(IActivityManager.descriptor); 4168 uri.writeToParcel(data, 0); 4169 data.writeInt(mode); 4170 data.writeInt(userId); 4171 mRemote.transact(TAKE_PERSISTABLE_URI_PERMISSION_TRANSACTION, data, reply, 0); 4172 reply.readException(); 4173 data.recycle(); 4174 reply.recycle(); 4175 } 4176 4177 @Override 4178 public void releasePersistableUriPermission(Uri uri, int mode, int userId) 4179 throws RemoteException { 4180 Parcel data = Parcel.obtain(); 4181 Parcel reply = Parcel.obtain(); 4182 data.writeInterfaceToken(IActivityManager.descriptor); 4183 uri.writeToParcel(data, 0); 4184 data.writeInt(mode); 4185 data.writeInt(userId); 4186 mRemote.transact(RELEASE_PERSISTABLE_URI_PERMISSION_TRANSACTION, data, reply, 0); 4187 reply.readException(); 4188 data.recycle(); 4189 reply.recycle(); 4190 } 4191 4192 @Override 4193 public ParceledListSlice<UriPermission> getPersistedUriPermissions( 4194 String packageName, boolean incoming) throws RemoteException { 4195 Parcel data = Parcel.obtain(); 4196 Parcel reply = Parcel.obtain(); 4197 data.writeInterfaceToken(IActivityManager.descriptor); 4198 data.writeString(packageName); 4199 data.writeInt(incoming ? 1 : 0); 4200 mRemote.transact(GET_PERSISTED_URI_PERMISSIONS_TRANSACTION, data, reply, 0); 4201 reply.readException(); 4202 final ParceledListSlice<UriPermission> perms = ParceledListSlice.CREATOR.createFromParcel( 4203 reply); 4204 data.recycle(); 4205 reply.recycle(); 4206 return perms; 4207 } 4208 4209 public void showWaitingForDebugger(IApplicationThread who, boolean waiting) 4210 throws RemoteException { 4211 Parcel data = Parcel.obtain(); 4212 Parcel reply = Parcel.obtain(); 4213 data.writeInterfaceToken(IActivityManager.descriptor); 4214 data.writeStrongBinder(who.asBinder()); 4215 data.writeInt(waiting ? 1 : 0); 4216 mRemote.transact(SHOW_WAITING_FOR_DEBUGGER_TRANSACTION, data, reply, 0); 4217 reply.readException(); 4218 data.recycle(); 4219 reply.recycle(); 4220 } 4221 public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) throws RemoteException { 4222 Parcel data = Parcel.obtain(); 4223 Parcel reply = Parcel.obtain(); 4224 data.writeInterfaceToken(IActivityManager.descriptor); 4225 mRemote.transact(GET_MEMORY_INFO_TRANSACTION, data, reply, 0); 4226 reply.readException(); 4227 outInfo.readFromParcel(reply); 4228 data.recycle(); 4229 reply.recycle(); 4230 } 4231 public void unhandledBack() throws RemoteException 4232 { 4233 Parcel data = Parcel.obtain(); 4234 Parcel reply = Parcel.obtain(); 4235 data.writeInterfaceToken(IActivityManager.descriptor); 4236 mRemote.transact(UNHANDLED_BACK_TRANSACTION, data, reply, 0); 4237 reply.readException(); 4238 data.recycle(); 4239 reply.recycle(); 4240 } 4241 public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException 4242 { 4243 Parcel data = Parcel.obtain(); 4244 Parcel reply = Parcel.obtain(); 4245 data.writeInterfaceToken(IActivityManager.descriptor); 4246 mRemote.transact(OPEN_CONTENT_URI_TRANSACTION, data, reply, 0); 4247 reply.readException(); 4248 ParcelFileDescriptor pfd = null; 4249 if (reply.readInt() != 0) { 4250 pfd = ParcelFileDescriptor.CREATOR.createFromParcel(reply); 4251 } 4252 data.recycle(); 4253 reply.recycle(); 4254 return pfd; 4255 } 4256 public void setLockScreenShown(boolean shown) throws RemoteException 4257 { 4258 Parcel data = Parcel.obtain(); 4259 Parcel reply = Parcel.obtain(); 4260 data.writeInterfaceToken(IActivityManager.descriptor); 4261 data.writeInt(shown ? 1 : 0); 4262 mRemote.transact(SET_LOCK_SCREEN_SHOWN_TRANSACTION, data, reply, 0); 4263 reply.readException(); 4264 data.recycle(); 4265 reply.recycle(); 4266 } 4267 public void setDebugApp( 4268 String packageName, boolean waitForDebugger, boolean persistent) 4269 throws RemoteException 4270 { 4271 Parcel data = Parcel.obtain(); 4272 Parcel reply = Parcel.obtain(); 4273 data.writeInterfaceToken(IActivityManager.descriptor); 4274 data.writeString(packageName); 4275 data.writeInt(waitForDebugger ? 1 : 0); 4276 data.writeInt(persistent ? 1 : 0); 4277 mRemote.transact(SET_DEBUG_APP_TRANSACTION, data, reply, 0); 4278 reply.readException(); 4279 data.recycle(); 4280 reply.recycle(); 4281 } 4282 public void setAlwaysFinish(boolean enabled) throws RemoteException 4283 { 4284 Parcel data = Parcel.obtain(); 4285 Parcel reply = Parcel.obtain(); 4286 data.writeInterfaceToken(IActivityManager.descriptor); 4287 data.writeInt(enabled ? 1 : 0); 4288 mRemote.transact(SET_ALWAYS_FINISH_TRANSACTION, data, reply, 0); 4289 reply.readException(); 4290 data.recycle(); 4291 reply.recycle(); 4292 } 4293 public void setActivityController(IActivityController watcher) throws RemoteException 4294 { 4295 Parcel data = Parcel.obtain(); 4296 Parcel reply = Parcel.obtain(); 4297 data.writeInterfaceToken(IActivityManager.descriptor); 4298 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null); 4299 mRemote.transact(SET_ACTIVITY_CONTROLLER_TRANSACTION, data, reply, 0); 4300 reply.readException(); 4301 data.recycle(); 4302 reply.recycle(); 4303 } 4304 public void enterSafeMode() throws RemoteException { 4305 Parcel data = Parcel.obtain(); 4306 data.writeInterfaceToken(IActivityManager.descriptor); 4307 mRemote.transact(ENTER_SAFE_MODE_TRANSACTION, data, null, 0); 4308 data.recycle(); 4309 } 4310 public void noteWakeupAlarm(IIntentSender sender, int sourceUid, String sourcePkg, String tag) 4311 throws RemoteException { 4312 Parcel data = Parcel.obtain(); 4313 data.writeInterfaceToken(IActivityManager.descriptor); 4314 data.writeStrongBinder(sender.asBinder()); 4315 data.writeInt(sourceUid); 4316 data.writeString(sourcePkg); 4317 data.writeString(tag); 4318 mRemote.transact(NOTE_WAKEUP_ALARM_TRANSACTION, data, null, 0); 4319 data.recycle(); 4320 } 4321 public void noteAlarmStart(IIntentSender sender, int sourceUid, String tag) 4322 throws RemoteException { 4323 Parcel data = Parcel.obtain(); 4324 data.writeInterfaceToken(IActivityManager.descriptor); 4325 data.writeStrongBinder(sender.asBinder()); 4326 data.writeInt(sourceUid); 4327 data.writeString(tag); 4328 mRemote.transact(NOTE_ALARM_START_TRANSACTION, data, null, 0); 4329 data.recycle(); 4330 } 4331 public void noteAlarmFinish(IIntentSender sender, int sourceUid, String tag) 4332 throws RemoteException { 4333 Parcel data = Parcel.obtain(); 4334 data.writeInterfaceToken(IActivityManager.descriptor); 4335 data.writeStrongBinder(sender.asBinder()); 4336 data.writeInt(sourceUid); 4337 data.writeString(tag); 4338 mRemote.transact(NOTE_ALARM_FINISH_TRANSACTION, data, null, 0); 4339 data.recycle(); 4340 } 4341 public boolean killPids(int[] pids, String reason, boolean secure) throws RemoteException { 4342 Parcel data = Parcel.obtain(); 4343 Parcel reply = Parcel.obtain(); 4344 data.writeInterfaceToken(IActivityManager.descriptor); 4345 data.writeIntArray(pids); 4346 data.writeString(reason); 4347 data.writeInt(secure ? 1 : 0); 4348 mRemote.transact(KILL_PIDS_TRANSACTION, data, reply, 0); 4349 reply.readException(); 4350 boolean res = reply.readInt() != 0; 4351 data.recycle(); 4352 reply.recycle(); 4353 return res; 4354 } 4355 @Override 4356 public boolean killProcessesBelowForeground(String reason) throws RemoteException { 4357 Parcel data = Parcel.obtain(); 4358 Parcel reply = Parcel.obtain(); 4359 data.writeInterfaceToken(IActivityManager.descriptor); 4360 data.writeString(reason); 4361 mRemote.transact(KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION, data, reply, 0); 4362 boolean res = reply.readInt() != 0; 4363 data.recycle(); 4364 reply.recycle(); 4365 return res; 4366 } 4367 public boolean testIsSystemReady() 4368 { 4369 /* this base class version is never called */ 4370 return true; 4371 } 4372 public void handleApplicationCrash(IBinder app, 4373 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException 4374 { 4375 Parcel data = Parcel.obtain(); 4376 Parcel reply = Parcel.obtain(); 4377 data.writeInterfaceToken(IActivityManager.descriptor); 4378 data.writeStrongBinder(app); 4379 crashInfo.writeToParcel(data, 0); 4380 mRemote.transact(HANDLE_APPLICATION_CRASH_TRANSACTION, data, reply, 0); 4381 reply.readException(); 4382 reply.recycle(); 4383 data.recycle(); 4384 } 4385 4386 public boolean handleApplicationWtf(IBinder app, String tag, boolean system, 4387 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException 4388 { 4389 Parcel data = Parcel.obtain(); 4390 Parcel reply = Parcel.obtain(); 4391 data.writeInterfaceToken(IActivityManager.descriptor); 4392 data.writeStrongBinder(app); 4393 data.writeString(tag); 4394 data.writeInt(system ? 1 : 0); 4395 crashInfo.writeToParcel(data, 0); 4396 mRemote.transact(HANDLE_APPLICATION_WTF_TRANSACTION, data, reply, 0); 4397 reply.readException(); 4398 boolean res = reply.readInt() != 0; 4399 reply.recycle(); 4400 data.recycle(); 4401 return res; 4402 } 4403 4404 public void handleApplicationStrictModeViolation(IBinder app, 4405 int violationMask, 4406 StrictMode.ViolationInfo info) throws RemoteException 4407 { 4408 Parcel data = Parcel.obtain(); 4409 Parcel reply = Parcel.obtain(); 4410 data.writeInterfaceToken(IActivityManager.descriptor); 4411 data.writeStrongBinder(app); 4412 data.writeInt(violationMask); 4413 info.writeToParcel(data, 0); 4414 mRemote.transact(HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION, data, reply, 0); 4415 reply.readException(); 4416 reply.recycle(); 4417 data.recycle(); 4418 } 4419 4420 public void signalPersistentProcesses(int sig) throws RemoteException { 4421 Parcel data = Parcel.obtain(); 4422 Parcel reply = Parcel.obtain(); 4423 data.writeInterfaceToken(IActivityManager.descriptor); 4424 data.writeInt(sig); 4425 mRemote.transact(SIGNAL_PERSISTENT_PROCESSES_TRANSACTION, data, reply, 0); 4426 reply.readException(); 4427 data.recycle(); 4428 reply.recycle(); 4429 } 4430 4431 public void killBackgroundProcesses(String packageName, int userId) throws RemoteException { 4432 Parcel data = Parcel.obtain(); 4433 Parcel reply = Parcel.obtain(); 4434 data.writeInterfaceToken(IActivityManager.descriptor); 4435 data.writeString(packageName); 4436 data.writeInt(userId); 4437 mRemote.transact(KILL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0); 4438 reply.readException(); 4439 data.recycle(); 4440 reply.recycle(); 4441 } 4442 4443 public void killAllBackgroundProcesses() throws RemoteException { 4444 Parcel data = Parcel.obtain(); 4445 Parcel reply = Parcel.obtain(); 4446 data.writeInterfaceToken(IActivityManager.descriptor); 4447 mRemote.transact(KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0); 4448 reply.readException(); 4449 data.recycle(); 4450 reply.recycle(); 4451 } 4452 4453 public void forceStopPackage(String packageName, int userId) throws RemoteException { 4454 Parcel data = Parcel.obtain(); 4455 Parcel reply = Parcel.obtain(); 4456 data.writeInterfaceToken(IActivityManager.descriptor); 4457 data.writeString(packageName); 4458 data.writeInt(userId); 4459 mRemote.transact(FORCE_STOP_PACKAGE_TRANSACTION, data, reply, 0); 4460 reply.readException(); 4461 data.recycle(); 4462 reply.recycle(); 4463 } 4464 4465 public void getMyMemoryState(ActivityManager.RunningAppProcessInfo outInfo) 4466 throws RemoteException 4467 { 4468 Parcel data = Parcel.obtain(); 4469 Parcel reply = Parcel.obtain(); 4470 data.writeInterfaceToken(IActivityManager.descriptor); 4471 mRemote.transact(GET_MY_MEMORY_STATE_TRANSACTION, data, reply, 0); 4472 reply.readException(); 4473 outInfo.readFromParcel(reply); 4474 reply.recycle(); 4475 data.recycle(); 4476 } 4477 4478 public ConfigurationInfo getDeviceConfigurationInfo() throws RemoteException 4479 { 4480 Parcel data = Parcel.obtain(); 4481 Parcel reply = Parcel.obtain(); 4482 data.writeInterfaceToken(IActivityManager.descriptor); 4483 mRemote.transact(GET_DEVICE_CONFIGURATION_TRANSACTION, data, reply, 0); 4484 reply.readException(); 4485 ConfigurationInfo res = ConfigurationInfo.CREATOR.createFromParcel(reply); 4486 reply.recycle(); 4487 data.recycle(); 4488 return res; 4489 } 4490 4491 public boolean profileControl(String process, int userId, boolean start, 4492 ProfilerInfo profilerInfo, int profileType) throws RemoteException 4493 { 4494 Parcel data = Parcel.obtain(); 4495 Parcel reply = Parcel.obtain(); 4496 data.writeInterfaceToken(IActivityManager.descriptor); 4497 data.writeString(process); 4498 data.writeInt(userId); 4499 data.writeInt(start ? 1 : 0); 4500 data.writeInt(profileType); 4501 if (profilerInfo != null) { 4502 data.writeInt(1); 4503 profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 4504 } else { 4505 data.writeInt(0); 4506 } 4507 mRemote.transact(PROFILE_CONTROL_TRANSACTION, data, reply, 0); 4508 reply.readException(); 4509 boolean res = reply.readInt() != 0; 4510 reply.recycle(); 4511 data.recycle(); 4512 return res; 4513 } 4514 4515 public boolean shutdown(int timeout) throws RemoteException 4516 { 4517 Parcel data = Parcel.obtain(); 4518 Parcel reply = Parcel.obtain(); 4519 data.writeInterfaceToken(IActivityManager.descriptor); 4520 data.writeInt(timeout); 4521 mRemote.transact(SHUTDOWN_TRANSACTION, data, reply, 0); 4522 reply.readException(); 4523 boolean res = reply.readInt() != 0; 4524 reply.recycle(); 4525 data.recycle(); 4526 return res; 4527 } 4528 4529 public void stopAppSwitches() throws RemoteException { 4530 Parcel data = Parcel.obtain(); 4531 Parcel reply = Parcel.obtain(); 4532 data.writeInterfaceToken(IActivityManager.descriptor); 4533 mRemote.transact(STOP_APP_SWITCHES_TRANSACTION, data, reply, 0); 4534 reply.readException(); 4535 reply.recycle(); 4536 data.recycle(); 4537 } 4538 4539 public void resumeAppSwitches() throws RemoteException { 4540 Parcel data = Parcel.obtain(); 4541 Parcel reply = Parcel.obtain(); 4542 data.writeInterfaceToken(IActivityManager.descriptor); 4543 mRemote.transact(RESUME_APP_SWITCHES_TRANSACTION, data, reply, 0); 4544 reply.readException(); 4545 reply.recycle(); 4546 data.recycle(); 4547 } 4548 4549 public void addPackageDependency(String packageName) throws RemoteException { 4550 Parcel data = Parcel.obtain(); 4551 Parcel reply = Parcel.obtain(); 4552 data.writeInterfaceToken(IActivityManager.descriptor); 4553 data.writeString(packageName); 4554 mRemote.transact(ADD_PACKAGE_DEPENDENCY_TRANSACTION, data, reply, 0); 4555 reply.readException(); 4556 data.recycle(); 4557 reply.recycle(); 4558 } 4559 4560 public void killApplicationWithAppId(String pkg, int appid, String reason) 4561 throws RemoteException { 4562 Parcel data = Parcel.obtain(); 4563 Parcel reply = Parcel.obtain(); 4564 data.writeInterfaceToken(IActivityManager.descriptor); 4565 data.writeString(pkg); 4566 data.writeInt(appid); 4567 data.writeString(reason); 4568 mRemote.transact(KILL_APPLICATION_WITH_APPID_TRANSACTION, data, reply, 0); 4569 reply.readException(); 4570 data.recycle(); 4571 reply.recycle(); 4572 } 4573 4574 public void closeSystemDialogs(String reason) throws RemoteException { 4575 Parcel data = Parcel.obtain(); 4576 Parcel reply = Parcel.obtain(); 4577 data.writeInterfaceToken(IActivityManager.descriptor); 4578 data.writeString(reason); 4579 mRemote.transact(CLOSE_SYSTEM_DIALOGS_TRANSACTION, data, reply, 0); 4580 reply.readException(); 4581 data.recycle(); 4582 reply.recycle(); 4583 } 4584 4585 public Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids) 4586 throws RemoteException { 4587 Parcel data = Parcel.obtain(); 4588 Parcel reply = Parcel.obtain(); 4589 data.writeInterfaceToken(IActivityManager.descriptor); 4590 data.writeIntArray(pids); 4591 mRemote.transact(GET_PROCESS_MEMORY_INFO_TRANSACTION, data, reply, 0); 4592 reply.readException(); 4593 Debug.MemoryInfo[] res = reply.createTypedArray(Debug.MemoryInfo.CREATOR); 4594 data.recycle(); 4595 reply.recycle(); 4596 return res; 4597 } 4598 4599 public void killApplicationProcess(String processName, int uid) throws RemoteException { 4600 Parcel data = Parcel.obtain(); 4601 Parcel reply = Parcel.obtain(); 4602 data.writeInterfaceToken(IActivityManager.descriptor); 4603 data.writeString(processName); 4604 data.writeInt(uid); 4605 mRemote.transact(KILL_APPLICATION_PROCESS_TRANSACTION, data, reply, 0); 4606 reply.readException(); 4607 data.recycle(); 4608 reply.recycle(); 4609 } 4610 4611 public void overridePendingTransition(IBinder token, String packageName, 4612 int enterAnim, int exitAnim) throws RemoteException { 4613 Parcel data = Parcel.obtain(); 4614 Parcel reply = Parcel.obtain(); 4615 data.writeInterfaceToken(IActivityManager.descriptor); 4616 data.writeStrongBinder(token); 4617 data.writeString(packageName); 4618 data.writeInt(enterAnim); 4619 data.writeInt(exitAnim); 4620 mRemote.transact(OVERRIDE_PENDING_TRANSITION_TRANSACTION, data, reply, 0); 4621 reply.readException(); 4622 data.recycle(); 4623 reply.recycle(); 4624 } 4625 4626 public boolean isUserAMonkey() throws RemoteException { 4627 Parcel data = Parcel.obtain(); 4628 Parcel reply = Parcel.obtain(); 4629 data.writeInterfaceToken(IActivityManager.descriptor); 4630 mRemote.transact(IS_USER_A_MONKEY_TRANSACTION, data, reply, 0); 4631 reply.readException(); 4632 boolean res = reply.readInt() != 0; 4633 data.recycle(); 4634 reply.recycle(); 4635 return res; 4636 } 4637 4638 public void setUserIsMonkey(boolean monkey) throws RemoteException { 4639 Parcel data = Parcel.obtain(); 4640 Parcel reply = Parcel.obtain(); 4641 data.writeInterfaceToken(IActivityManager.descriptor); 4642 data.writeInt(monkey ? 1 : 0); 4643 mRemote.transact(SET_USER_IS_MONKEY_TRANSACTION, data, reply, 0); 4644 reply.readException(); 4645 data.recycle(); 4646 reply.recycle(); 4647 } 4648 4649 public void finishHeavyWeightApp() throws RemoteException { 4650 Parcel data = Parcel.obtain(); 4651 Parcel reply = Parcel.obtain(); 4652 data.writeInterfaceToken(IActivityManager.descriptor); 4653 mRemote.transact(FINISH_HEAVY_WEIGHT_APP_TRANSACTION, data, reply, 0); 4654 reply.readException(); 4655 data.recycle(); 4656 reply.recycle(); 4657 } 4658 4659 public boolean convertFromTranslucent(IBinder token) 4660 throws RemoteException { 4661 Parcel data = Parcel.obtain(); 4662 Parcel reply = Parcel.obtain(); 4663 data.writeInterfaceToken(IActivityManager.descriptor); 4664 data.writeStrongBinder(token); 4665 mRemote.transact(CONVERT_FROM_TRANSLUCENT_TRANSACTION, data, reply, 0); 4666 reply.readException(); 4667 boolean res = reply.readInt() != 0; 4668 data.recycle(); 4669 reply.recycle(); 4670 return res; 4671 } 4672 4673 public boolean convertToTranslucent(IBinder token, ActivityOptions options) 4674 throws RemoteException { 4675 Parcel data = Parcel.obtain(); 4676 Parcel reply = Parcel.obtain(); 4677 data.writeInterfaceToken(IActivityManager.descriptor); 4678 data.writeStrongBinder(token); 4679 if (options == null) { 4680 data.writeInt(0); 4681 } else { 4682 data.writeInt(1); 4683 data.writeBundle(options.toBundle()); 4684 } 4685 mRemote.transact(CONVERT_TO_TRANSLUCENT_TRANSACTION, data, reply, 0); 4686 reply.readException(); 4687 boolean res = reply.readInt() != 0; 4688 data.recycle(); 4689 reply.recycle(); 4690 return res; 4691 } 4692 4693 public ActivityOptions getActivityOptions(IBinder token) throws RemoteException { 4694 Parcel data = Parcel.obtain(); 4695 Parcel reply = Parcel.obtain(); 4696 data.writeInterfaceToken(IActivityManager.descriptor); 4697 data.writeStrongBinder(token); 4698 mRemote.transact(GET_ACTIVITY_OPTIONS_TRANSACTION, data, reply, 0); 4699 reply.readException(); 4700 Bundle bundle = reply.readBundle(); 4701 ActivityOptions options = bundle == null ? null : new ActivityOptions(bundle); 4702 data.recycle(); 4703 reply.recycle(); 4704 return options; 4705 } 4706 4707 public void setImmersive(IBinder token, boolean immersive) 4708 throws RemoteException { 4709 Parcel data = Parcel.obtain(); 4710 Parcel reply = Parcel.obtain(); 4711 data.writeInterfaceToken(IActivityManager.descriptor); 4712 data.writeStrongBinder(token); 4713 data.writeInt(immersive ? 1 : 0); 4714 mRemote.transact(SET_IMMERSIVE_TRANSACTION, data, reply, 0); 4715 reply.readException(); 4716 data.recycle(); 4717 reply.recycle(); 4718 } 4719 4720 public boolean isImmersive(IBinder token) 4721 throws RemoteException { 4722 Parcel data = Parcel.obtain(); 4723 Parcel reply = Parcel.obtain(); 4724 data.writeInterfaceToken(IActivityManager.descriptor); 4725 data.writeStrongBinder(token); 4726 mRemote.transact(IS_IMMERSIVE_TRANSACTION, data, reply, 0); 4727 reply.readException(); 4728 boolean res = reply.readInt() == 1; 4729 data.recycle(); 4730 reply.recycle(); 4731 return res; 4732 } 4733 4734 public boolean isTopOfTask(IBinder token) throws RemoteException { 4735 Parcel data = Parcel.obtain(); 4736 Parcel reply = Parcel.obtain(); 4737 data.writeInterfaceToken(IActivityManager.descriptor); 4738 data.writeStrongBinder(token); 4739 mRemote.transact(IS_TOP_OF_TASK_TRANSACTION, data, reply, 0); 4740 reply.readException(); 4741 boolean res = reply.readInt() == 1; 4742 data.recycle(); 4743 reply.recycle(); 4744 return res; 4745 } 4746 4747 public boolean isTopActivityImmersive() 4748 throws RemoteException { 4749 Parcel data = Parcel.obtain(); 4750 Parcel reply = Parcel.obtain(); 4751 data.writeInterfaceToken(IActivityManager.descriptor); 4752 mRemote.transact(IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION, data, reply, 0); 4753 reply.readException(); 4754 boolean res = reply.readInt() == 1; 4755 data.recycle(); 4756 reply.recycle(); 4757 return res; 4758 } 4759 4760 public void crashApplication(int uid, int initialPid, String packageName, 4761 String message) throws RemoteException { 4762 Parcel data = Parcel.obtain(); 4763 Parcel reply = Parcel.obtain(); 4764 data.writeInterfaceToken(IActivityManager.descriptor); 4765 data.writeInt(uid); 4766 data.writeInt(initialPid); 4767 data.writeString(packageName); 4768 data.writeString(message); 4769 mRemote.transact(CRASH_APPLICATION_TRANSACTION, data, reply, 0); 4770 reply.readException(); 4771 data.recycle(); 4772 reply.recycle(); 4773 } 4774 4775 public String getProviderMimeType(Uri uri, int userId) throws RemoteException { 4776 Parcel data = Parcel.obtain(); 4777 Parcel reply = Parcel.obtain(); 4778 data.writeInterfaceToken(IActivityManager.descriptor); 4779 uri.writeToParcel(data, 0); 4780 data.writeInt(userId); 4781 mRemote.transact(GET_PROVIDER_MIME_TYPE_TRANSACTION, data, reply, 0); 4782 reply.readException(); 4783 String res = reply.readString(); 4784 data.recycle(); 4785 reply.recycle(); 4786 return res; 4787 } 4788 4789 public IBinder newUriPermissionOwner(String name) 4790 throws RemoteException { 4791 Parcel data = Parcel.obtain(); 4792 Parcel reply = Parcel.obtain(); 4793 data.writeInterfaceToken(IActivityManager.descriptor); 4794 data.writeString(name); 4795 mRemote.transact(NEW_URI_PERMISSION_OWNER_TRANSACTION, data, reply, 0); 4796 reply.readException(); 4797 IBinder res = reply.readStrongBinder(); 4798 data.recycle(); 4799 reply.recycle(); 4800 return res; 4801 } 4802 4803 public void grantUriPermissionFromOwner(IBinder owner, int fromUid, String targetPkg, 4804 Uri uri, int mode, int sourceUserId, int targetUserId) throws RemoteException { 4805 Parcel data = Parcel.obtain(); 4806 Parcel reply = Parcel.obtain(); 4807 data.writeInterfaceToken(IActivityManager.descriptor); 4808 data.writeStrongBinder(owner); 4809 data.writeInt(fromUid); 4810 data.writeString(targetPkg); 4811 uri.writeToParcel(data, 0); 4812 data.writeInt(mode); 4813 data.writeInt(sourceUserId); 4814 data.writeInt(targetUserId); 4815 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 4816 reply.readException(); 4817 data.recycle(); 4818 reply.recycle(); 4819 } 4820 4821 public void revokeUriPermissionFromOwner(IBinder owner, Uri uri, 4822 int mode, int userId) throws RemoteException { 4823 Parcel data = Parcel.obtain(); 4824 Parcel reply = Parcel.obtain(); 4825 data.writeInterfaceToken(IActivityManager.descriptor); 4826 data.writeStrongBinder(owner); 4827 if (uri != null) { 4828 data.writeInt(1); 4829 uri.writeToParcel(data, 0); 4830 } else { 4831 data.writeInt(0); 4832 } 4833 data.writeInt(mode); 4834 data.writeInt(userId); 4835 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0); 4836 reply.readException(); 4837 data.recycle(); 4838 reply.recycle(); 4839 } 4840 4841 public int checkGrantUriPermission(int callingUid, String targetPkg, 4842 Uri uri, int modeFlags, int userId) throws RemoteException { 4843 Parcel data = Parcel.obtain(); 4844 Parcel reply = Parcel.obtain(); 4845 data.writeInterfaceToken(IActivityManager.descriptor); 4846 data.writeInt(callingUid); 4847 data.writeString(targetPkg); 4848 uri.writeToParcel(data, 0); 4849 data.writeInt(modeFlags); 4850 data.writeInt(userId); 4851 mRemote.transact(CHECK_GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 4852 reply.readException(); 4853 int res = reply.readInt(); 4854 data.recycle(); 4855 reply.recycle(); 4856 return res; 4857 } 4858 4859 public boolean dumpHeap(String process, int userId, boolean managed, 4860 String path, ParcelFileDescriptor fd) throws RemoteException { 4861 Parcel data = Parcel.obtain(); 4862 Parcel reply = Parcel.obtain(); 4863 data.writeInterfaceToken(IActivityManager.descriptor); 4864 data.writeString(process); 4865 data.writeInt(userId); 4866 data.writeInt(managed ? 1 : 0); 4867 data.writeString(path); 4868 if (fd != null) { 4869 data.writeInt(1); 4870 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 4871 } else { 4872 data.writeInt(0); 4873 } 4874 mRemote.transact(DUMP_HEAP_TRANSACTION, data, reply, 0); 4875 reply.readException(); 4876 boolean res = reply.readInt() != 0; 4877 reply.recycle(); 4878 data.recycle(); 4879 return res; 4880 } 4881 4882 public int startActivities(IApplicationThread caller, String callingPackage, 4883 Intent[] intents, String[] resolvedTypes, IBinder resultTo, 4884 Bundle options, int userId) throws RemoteException { 4885 Parcel data = Parcel.obtain(); 4886 Parcel reply = Parcel.obtain(); 4887 data.writeInterfaceToken(IActivityManager.descriptor); 4888 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 4889 data.writeString(callingPackage); 4890 data.writeTypedArray(intents, 0); 4891 data.writeStringArray(resolvedTypes); 4892 data.writeStrongBinder(resultTo); 4893 if (options != null) { 4894 data.writeInt(1); 4895 options.writeToParcel(data, 0); 4896 } else { 4897 data.writeInt(0); 4898 } 4899 data.writeInt(userId); 4900 mRemote.transact(START_ACTIVITIES_TRANSACTION, data, reply, 0); 4901 reply.readException(); 4902 int result = reply.readInt(); 4903 reply.recycle(); 4904 data.recycle(); 4905 return result; 4906 } 4907 4908 public int getFrontActivityScreenCompatMode() throws RemoteException { 4909 Parcel data = Parcel.obtain(); 4910 Parcel reply = Parcel.obtain(); 4911 data.writeInterfaceToken(IActivityManager.descriptor); 4912 mRemote.transact(GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4913 reply.readException(); 4914 int mode = reply.readInt(); 4915 reply.recycle(); 4916 data.recycle(); 4917 return mode; 4918 } 4919 4920 public void setFrontActivityScreenCompatMode(int mode) throws RemoteException { 4921 Parcel data = Parcel.obtain(); 4922 Parcel reply = Parcel.obtain(); 4923 data.writeInterfaceToken(IActivityManager.descriptor); 4924 data.writeInt(mode); 4925 mRemote.transact(SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4926 reply.readException(); 4927 reply.recycle(); 4928 data.recycle(); 4929 } 4930 4931 public int getPackageScreenCompatMode(String packageName) throws RemoteException { 4932 Parcel data = Parcel.obtain(); 4933 Parcel reply = Parcel.obtain(); 4934 data.writeInterfaceToken(IActivityManager.descriptor); 4935 data.writeString(packageName); 4936 mRemote.transact(GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4937 reply.readException(); 4938 int mode = reply.readInt(); 4939 reply.recycle(); 4940 data.recycle(); 4941 return mode; 4942 } 4943 4944 public void setPackageScreenCompatMode(String packageName, int mode) 4945 throws RemoteException { 4946 Parcel data = Parcel.obtain(); 4947 Parcel reply = Parcel.obtain(); 4948 data.writeInterfaceToken(IActivityManager.descriptor); 4949 data.writeString(packageName); 4950 data.writeInt(mode); 4951 mRemote.transact(SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 4952 reply.readException(); 4953 reply.recycle(); 4954 data.recycle(); 4955 } 4956 4957 public boolean getPackageAskScreenCompat(String packageName) throws RemoteException { 4958 Parcel data = Parcel.obtain(); 4959 Parcel reply = Parcel.obtain(); 4960 data.writeInterfaceToken(IActivityManager.descriptor); 4961 data.writeString(packageName); 4962 mRemote.transact(GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0); 4963 reply.readException(); 4964 boolean ask = reply.readInt() != 0; 4965 reply.recycle(); 4966 data.recycle(); 4967 return ask; 4968 } 4969 4970 public void setPackageAskScreenCompat(String packageName, boolean ask) 4971 throws RemoteException { 4972 Parcel data = Parcel.obtain(); 4973 Parcel reply = Parcel.obtain(); 4974 data.writeInterfaceToken(IActivityManager.descriptor); 4975 data.writeString(packageName); 4976 data.writeInt(ask ? 1 : 0); 4977 mRemote.transact(SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0); 4978 reply.readException(); 4979 reply.recycle(); 4980 data.recycle(); 4981 } 4982 4983 public boolean switchUser(int userid) throws RemoteException { 4984 Parcel data = Parcel.obtain(); 4985 Parcel reply = Parcel.obtain(); 4986 data.writeInterfaceToken(IActivityManager.descriptor); 4987 data.writeInt(userid); 4988 mRemote.transact(SWITCH_USER_TRANSACTION, data, reply, 0); 4989 reply.readException(); 4990 boolean result = reply.readInt() != 0; 4991 reply.recycle(); 4992 data.recycle(); 4993 return result; 4994 } 4995 4996 public boolean startUserInBackground(int userid) throws RemoteException { 4997 Parcel data = Parcel.obtain(); 4998 Parcel reply = Parcel.obtain(); 4999 data.writeInterfaceToken(IActivityManager.descriptor); 5000 data.writeInt(userid); 5001 mRemote.transact(START_USER_IN_BACKGROUND_TRANSACTION, data, reply, 0); 5002 reply.readException(); 5003 boolean result = reply.readInt() != 0; 5004 reply.recycle(); 5005 data.recycle(); 5006 return result; 5007 } 5008 5009 public int stopUser(int userid, IStopUserCallback callback) throws RemoteException { 5010 Parcel data = Parcel.obtain(); 5011 Parcel reply = Parcel.obtain(); 5012 data.writeInterfaceToken(IActivityManager.descriptor); 5013 data.writeInt(userid); 5014 data.writeStrongInterface(callback); 5015 mRemote.transact(STOP_USER_TRANSACTION, data, reply, 0); 5016 reply.readException(); 5017 int result = reply.readInt(); 5018 reply.recycle(); 5019 data.recycle(); 5020 return result; 5021 } 5022 5023 public UserInfo getCurrentUser() throws RemoteException { 5024 Parcel data = Parcel.obtain(); 5025 Parcel reply = Parcel.obtain(); 5026 data.writeInterfaceToken(IActivityManager.descriptor); 5027 mRemote.transact(GET_CURRENT_USER_TRANSACTION, data, reply, 0); 5028 reply.readException(); 5029 UserInfo userInfo = UserInfo.CREATOR.createFromParcel(reply); 5030 reply.recycle(); 5031 data.recycle(); 5032 return userInfo; 5033 } 5034 5035 public boolean isUserRunning(int userid, boolean orStopping) throws RemoteException { 5036 Parcel data = Parcel.obtain(); 5037 Parcel reply = Parcel.obtain(); 5038 data.writeInterfaceToken(IActivityManager.descriptor); 5039 data.writeInt(userid); 5040 data.writeInt(orStopping ? 1 : 0); 5041 mRemote.transact(IS_USER_RUNNING_TRANSACTION, data, reply, 0); 5042 reply.readException(); 5043 boolean result = reply.readInt() != 0; 5044 reply.recycle(); 5045 data.recycle(); 5046 return result; 5047 } 5048 5049 public int[] getRunningUserIds() throws RemoteException { 5050 Parcel data = Parcel.obtain(); 5051 Parcel reply = Parcel.obtain(); 5052 data.writeInterfaceToken(IActivityManager.descriptor); 5053 mRemote.transact(GET_RUNNING_USER_IDS_TRANSACTION, data, reply, 0); 5054 reply.readException(); 5055 int[] result = reply.createIntArray(); 5056 reply.recycle(); 5057 data.recycle(); 5058 return result; 5059 } 5060 5061 public boolean removeTask(int taskId) throws RemoteException { 5062 Parcel data = Parcel.obtain(); 5063 Parcel reply = Parcel.obtain(); 5064 data.writeInterfaceToken(IActivityManager.descriptor); 5065 data.writeInt(taskId); 5066 mRemote.transact(REMOVE_TASK_TRANSACTION, data, reply, 0); 5067 reply.readException(); 5068 boolean result = reply.readInt() != 0; 5069 reply.recycle(); 5070 data.recycle(); 5071 return result; 5072 } 5073 5074 public void registerProcessObserver(IProcessObserver observer) throws RemoteException { 5075 Parcel data = Parcel.obtain(); 5076 Parcel reply = Parcel.obtain(); 5077 data.writeInterfaceToken(IActivityManager.descriptor); 5078 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 5079 mRemote.transact(REGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0); 5080 reply.readException(); 5081 data.recycle(); 5082 reply.recycle(); 5083 } 5084 5085 public void unregisterProcessObserver(IProcessObserver observer) throws RemoteException { 5086 Parcel data = Parcel.obtain(); 5087 Parcel reply = Parcel.obtain(); 5088 data.writeInterfaceToken(IActivityManager.descriptor); 5089 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 5090 mRemote.transact(UNREGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0); 5091 reply.readException(); 5092 data.recycle(); 5093 reply.recycle(); 5094 } 5095 5096 public void registerUidObserver(IUidObserver observer) throws RemoteException { 5097 Parcel data = Parcel.obtain(); 5098 Parcel reply = Parcel.obtain(); 5099 data.writeInterfaceToken(IActivityManager.descriptor); 5100 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 5101 mRemote.transact(REGISTER_UID_OBSERVER_TRANSACTION, data, reply, 0); 5102 reply.readException(); 5103 data.recycle(); 5104 reply.recycle(); 5105 } 5106 5107 public void unregisterUidObserver(IUidObserver observer) throws RemoteException { 5108 Parcel data = Parcel.obtain(); 5109 Parcel reply = Parcel.obtain(); 5110 data.writeInterfaceToken(IActivityManager.descriptor); 5111 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 5112 mRemote.transact(UNREGISTER_UID_OBSERVER_TRANSACTION, data, reply, 0); 5113 reply.readException(); 5114 data.recycle(); 5115 reply.recycle(); 5116 } 5117 5118 public boolean isIntentSenderTargetedToPackage(IIntentSender sender) throws RemoteException { 5119 Parcel data = Parcel.obtain(); 5120 Parcel reply = Parcel.obtain(); 5121 data.writeInterfaceToken(IActivityManager.descriptor); 5122 data.writeStrongBinder(sender.asBinder()); 5123 mRemote.transact(IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION, data, reply, 0); 5124 reply.readException(); 5125 boolean res = reply.readInt() != 0; 5126 data.recycle(); 5127 reply.recycle(); 5128 return res; 5129 } 5130 5131 public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException { 5132 Parcel data = Parcel.obtain(); 5133 Parcel reply = Parcel.obtain(); 5134 data.writeInterfaceToken(IActivityManager.descriptor); 5135 data.writeStrongBinder(sender.asBinder()); 5136 mRemote.transact(IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION, data, reply, 0); 5137 reply.readException(); 5138 boolean res = reply.readInt() != 0; 5139 data.recycle(); 5140 reply.recycle(); 5141 return res; 5142 } 5143 5144 public Intent getIntentForIntentSender(IIntentSender sender) throws RemoteException { 5145 Parcel data = Parcel.obtain(); 5146 Parcel reply = Parcel.obtain(); 5147 data.writeInterfaceToken(IActivityManager.descriptor); 5148 data.writeStrongBinder(sender.asBinder()); 5149 mRemote.transact(GET_INTENT_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 5150 reply.readException(); 5151 Intent res = reply.readInt() != 0 5152 ? Intent.CREATOR.createFromParcel(reply) : null; 5153 data.recycle(); 5154 reply.recycle(); 5155 return res; 5156 } 5157 5158 public String getTagForIntentSender(IIntentSender sender, String prefix) 5159 throws RemoteException { 5160 Parcel data = Parcel.obtain(); 5161 Parcel reply = Parcel.obtain(); 5162 data.writeInterfaceToken(IActivityManager.descriptor); 5163 data.writeStrongBinder(sender.asBinder()); 5164 data.writeString(prefix); 5165 mRemote.transact(GET_TAG_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 5166 reply.readException(); 5167 String res = reply.readString(); 5168 data.recycle(); 5169 reply.recycle(); 5170 return res; 5171 } 5172 5173 public void updatePersistentConfiguration(Configuration values) throws RemoteException 5174 { 5175 Parcel data = Parcel.obtain(); 5176 Parcel reply = Parcel.obtain(); 5177 data.writeInterfaceToken(IActivityManager.descriptor); 5178 values.writeToParcel(data, 0); 5179 mRemote.transact(UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION, data, reply, 0); 5180 reply.readException(); 5181 data.recycle(); 5182 reply.recycle(); 5183 } 5184 5185 public long[] getProcessPss(int[] pids) throws RemoteException { 5186 Parcel data = Parcel.obtain(); 5187 Parcel reply = Parcel.obtain(); 5188 data.writeInterfaceToken(IActivityManager.descriptor); 5189 data.writeIntArray(pids); 5190 mRemote.transact(GET_PROCESS_PSS_TRANSACTION, data, reply, 0); 5191 reply.readException(); 5192 long[] res = reply.createLongArray(); 5193 data.recycle(); 5194 reply.recycle(); 5195 return res; 5196 } 5197 5198 public void showBootMessage(CharSequence msg, boolean always) throws RemoteException { 5199 Parcel data = Parcel.obtain(); 5200 Parcel reply = Parcel.obtain(); 5201 data.writeInterfaceToken(IActivityManager.descriptor); 5202 TextUtils.writeToParcel(msg, data, 0); 5203 data.writeInt(always ? 1 : 0); 5204 mRemote.transact(SHOW_BOOT_MESSAGE_TRANSACTION, data, reply, 0); 5205 reply.readException(); 5206 data.recycle(); 5207 reply.recycle(); 5208 } 5209 5210 public void keyguardWaitingForActivityDrawn() throws RemoteException { 5211 Parcel data = Parcel.obtain(); 5212 Parcel reply = Parcel.obtain(); 5213 data.writeInterfaceToken(IActivityManager.descriptor); 5214 mRemote.transact(KEYGUARD_WAITING_FOR_ACTIVITY_DRAWN_TRANSACTION, data, reply, 0); 5215 reply.readException(); 5216 data.recycle(); 5217 reply.recycle(); 5218 } 5219 5220 public void keyguardGoingAway(boolean disableWindowAnimations, 5221 boolean keyguardGoingToNotificationShade) throws RemoteException { 5222 Parcel data = Parcel.obtain(); 5223 Parcel reply = Parcel.obtain(); 5224 data.writeInterfaceToken(IActivityManager.descriptor); 5225 data.writeInt(disableWindowAnimations ? 1 : 0); 5226 data.writeInt(keyguardGoingToNotificationShade ? 1 : 0); 5227 mRemote.transact(KEYGUARD_GOING_AWAY_TRANSACTION, data, reply, 0); 5228 reply.readException(); 5229 data.recycle(); 5230 reply.recycle(); 5231 } 5232 5233 public boolean shouldUpRecreateTask(IBinder token, String destAffinity) 5234 throws RemoteException { 5235 Parcel data = Parcel.obtain(); 5236 Parcel reply = Parcel.obtain(); 5237 data.writeInterfaceToken(IActivityManager.descriptor); 5238 data.writeStrongBinder(token); 5239 data.writeString(destAffinity); 5240 mRemote.transact(SHOULD_UP_RECREATE_TASK_TRANSACTION, data, reply, 0); 5241 reply.readException(); 5242 boolean result = reply.readInt() != 0; 5243 data.recycle(); 5244 reply.recycle(); 5245 return result; 5246 } 5247 5248 public boolean navigateUpTo(IBinder token, Intent target, int resultCode, Intent resultData) 5249 throws RemoteException { 5250 Parcel data = Parcel.obtain(); 5251 Parcel reply = Parcel.obtain(); 5252 data.writeInterfaceToken(IActivityManager.descriptor); 5253 data.writeStrongBinder(token); 5254 target.writeToParcel(data, 0); 5255 data.writeInt(resultCode); 5256 if (resultData != null) { 5257 data.writeInt(1); 5258 resultData.writeToParcel(data, 0); 5259 } else { 5260 data.writeInt(0); 5261 } 5262 mRemote.transact(NAVIGATE_UP_TO_TRANSACTION, data, reply, 0); 5263 reply.readException(); 5264 boolean result = reply.readInt() != 0; 5265 data.recycle(); 5266 reply.recycle(); 5267 return result; 5268 } 5269 5270 public int getLaunchedFromUid(IBinder activityToken) throws RemoteException { 5271 Parcel data = Parcel.obtain(); 5272 Parcel reply = Parcel.obtain(); 5273 data.writeInterfaceToken(IActivityManager.descriptor); 5274 data.writeStrongBinder(activityToken); 5275 mRemote.transact(GET_LAUNCHED_FROM_UID_TRANSACTION, data, reply, 0); 5276 reply.readException(); 5277 int result = reply.readInt(); 5278 data.recycle(); 5279 reply.recycle(); 5280 return result; 5281 } 5282 5283 public String getLaunchedFromPackage(IBinder activityToken) throws RemoteException { 5284 Parcel data = Parcel.obtain(); 5285 Parcel reply = Parcel.obtain(); 5286 data.writeInterfaceToken(IActivityManager.descriptor); 5287 data.writeStrongBinder(activityToken); 5288 mRemote.transact(GET_LAUNCHED_FROM_PACKAGE_TRANSACTION, data, reply, 0); 5289 reply.readException(); 5290 String result = reply.readString(); 5291 data.recycle(); 5292 reply.recycle(); 5293 return result; 5294 } 5295 5296 public void registerUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException { 5297 Parcel data = Parcel.obtain(); 5298 Parcel reply = Parcel.obtain(); 5299 data.writeInterfaceToken(IActivityManager.descriptor); 5300 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 5301 mRemote.transact(REGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0); 5302 reply.readException(); 5303 data.recycle(); 5304 reply.recycle(); 5305 } 5306 5307 public void unregisterUserSwitchObserver(IUserSwitchObserver observer) throws RemoteException { 5308 Parcel data = Parcel.obtain(); 5309 Parcel reply = Parcel.obtain(); 5310 data.writeInterfaceToken(IActivityManager.descriptor); 5311 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 5312 mRemote.transact(UNREGISTER_USER_SWITCH_OBSERVER_TRANSACTION, data, reply, 0); 5313 reply.readException(); 5314 data.recycle(); 5315 reply.recycle(); 5316 } 5317 5318 public void requestBugReport() throws RemoteException { 5319 Parcel data = Parcel.obtain(); 5320 Parcel reply = Parcel.obtain(); 5321 data.writeInterfaceToken(IActivityManager.descriptor); 5322 mRemote.transact(REQUEST_BUG_REPORT_TRANSACTION, data, reply, 0); 5323 reply.readException(); 5324 data.recycle(); 5325 reply.recycle(); 5326 } 5327 5328 public long inputDispatchingTimedOut(int pid, boolean aboveSystem, String reason) 5329 throws RemoteException { 5330 Parcel data = Parcel.obtain(); 5331 Parcel reply = Parcel.obtain(); 5332 data.writeInterfaceToken(IActivityManager.descriptor); 5333 data.writeInt(pid); 5334 data.writeInt(aboveSystem ? 1 : 0); 5335 data.writeString(reason); 5336 mRemote.transact(INPUT_DISPATCHING_TIMED_OUT_TRANSACTION, data, reply, 0); 5337 reply.readException(); 5338 long res = reply.readInt(); 5339 data.recycle(); 5340 reply.recycle(); 5341 return res; 5342 } 5343 5344 public Bundle getAssistContextExtras(int requestType) throws RemoteException { 5345 Parcel data = Parcel.obtain(); 5346 Parcel reply = Parcel.obtain(); 5347 data.writeInterfaceToken(IActivityManager.descriptor); 5348 data.writeInt(requestType); 5349 mRemote.transact(GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0); 5350 reply.readException(); 5351 Bundle res = reply.readBundle(); 5352 data.recycle(); 5353 reply.recycle(); 5354 return res; 5355 } 5356 5357 public void requestAssistContextExtras(int requestType, IResultReceiver receiver) 5358 throws RemoteException { 5359 Parcel data = Parcel.obtain(); 5360 Parcel reply = Parcel.obtain(); 5361 data.writeInterfaceToken(IActivityManager.descriptor); 5362 data.writeInt(requestType); 5363 data.writeStrongBinder(receiver.asBinder()); 5364 mRemote.transact(REQUEST_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0); 5365 reply.readException(); 5366 data.recycle(); 5367 reply.recycle(); 5368 } 5369 5370 public void reportAssistContextExtras(IBinder token, Bundle extras) 5371 throws RemoteException { 5372 Parcel data = Parcel.obtain(); 5373 Parcel reply = Parcel.obtain(); 5374 data.writeInterfaceToken(IActivityManager.descriptor); 5375 data.writeStrongBinder(token); 5376 data.writeBundle(extras); 5377 mRemote.transact(REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0); 5378 reply.readException(); 5379 data.recycle(); 5380 reply.recycle(); 5381 } 5382 5383 public boolean launchAssistIntent(Intent intent, int requestType, String hint, int userHandle) 5384 throws RemoteException { 5385 Parcel data = Parcel.obtain(); 5386 Parcel reply = Parcel.obtain(); 5387 data.writeInterfaceToken(IActivityManager.descriptor); 5388 intent.writeToParcel(data, 0); 5389 data.writeInt(requestType); 5390 data.writeString(hint); 5391 data.writeInt(userHandle); 5392 mRemote.transact(LAUNCH_ASSIST_INTENT_TRANSACTION, data, reply, 0); 5393 reply.readException(); 5394 boolean res = reply.readInt() != 0; 5395 data.recycle(); 5396 reply.recycle(); 5397 return res; 5398 } 5399 5400 public void killUid(int uid, String reason) throws RemoteException { 5401 Parcel data = Parcel.obtain(); 5402 Parcel reply = Parcel.obtain(); 5403 data.writeInterfaceToken(IActivityManager.descriptor); 5404 data.writeInt(uid); 5405 data.writeString(reason); 5406 mRemote.transact(KILL_UID_TRANSACTION, data, reply, 0); 5407 reply.readException(); 5408 data.recycle(); 5409 reply.recycle(); 5410 } 5411 5412 public void hang(IBinder who, boolean allowRestart) throws RemoteException { 5413 Parcel data = Parcel.obtain(); 5414 Parcel reply = Parcel.obtain(); 5415 data.writeInterfaceToken(IActivityManager.descriptor); 5416 data.writeStrongBinder(who); 5417 data.writeInt(allowRestart ? 1 : 0); 5418 mRemote.transact(HANG_TRANSACTION, data, reply, 0); 5419 reply.readException(); 5420 data.recycle(); 5421 reply.recycle(); 5422 } 5423 5424 public void reportActivityFullyDrawn(IBinder token) throws RemoteException { 5425 Parcel data = Parcel.obtain(); 5426 Parcel reply = Parcel.obtain(); 5427 data.writeInterfaceToken(IActivityManager.descriptor); 5428 data.writeStrongBinder(token); 5429 mRemote.transact(REPORT_ACTIVITY_FULLY_DRAWN_TRANSACTION, data, reply, 0); 5430 reply.readException(); 5431 data.recycle(); 5432 reply.recycle(); 5433 } 5434 5435 public void notifyActivityDrawn(IBinder token) throws RemoteException { 5436 Parcel data = Parcel.obtain(); 5437 Parcel reply = Parcel.obtain(); 5438 data.writeInterfaceToken(IActivityManager.descriptor); 5439 data.writeStrongBinder(token); 5440 mRemote.transact(NOTIFY_ACTIVITY_DRAWN_TRANSACTION, data, reply, 0); 5441 reply.readException(); 5442 data.recycle(); 5443 reply.recycle(); 5444 } 5445 5446 public void restart() throws RemoteException { 5447 Parcel data = Parcel.obtain(); 5448 Parcel reply = Parcel.obtain(); 5449 data.writeInterfaceToken(IActivityManager.descriptor); 5450 mRemote.transact(RESTART_TRANSACTION, data, reply, 0); 5451 reply.readException(); 5452 data.recycle(); 5453 reply.recycle(); 5454 } 5455 5456 public void performIdleMaintenance() throws RemoteException { 5457 Parcel data = Parcel.obtain(); 5458 Parcel reply = Parcel.obtain(); 5459 data.writeInterfaceToken(IActivityManager.descriptor); 5460 mRemote.transact(PERFORM_IDLE_MAINTENANCE_TRANSACTION, data, reply, 0); 5461 reply.readException(); 5462 data.recycle(); 5463 reply.recycle(); 5464 } 5465 5466 public IActivityContainer createVirtualActivityContainer(IBinder parentActivityToken, 5467 IActivityContainerCallback callback) throws RemoteException { 5468 Parcel data = Parcel.obtain(); 5469 Parcel reply = Parcel.obtain(); 5470 data.writeInterfaceToken(IActivityManager.descriptor); 5471 data.writeStrongBinder(parentActivityToken); 5472 data.writeStrongBinder(callback == null ? null : callback.asBinder()); 5473 mRemote.transact(CREATE_VIRTUAL_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); 5474 reply.readException(); 5475 final int result = reply.readInt(); 5476 final IActivityContainer res; 5477 if (result == 1) { 5478 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder()); 5479 } else { 5480 res = null; 5481 } 5482 data.recycle(); 5483 reply.recycle(); 5484 return res; 5485 } 5486 5487 public void deleteActivityContainer(IActivityContainer activityContainer) 5488 throws RemoteException { 5489 Parcel data = Parcel.obtain(); 5490 Parcel reply = Parcel.obtain(); 5491 data.writeInterfaceToken(IActivityManager.descriptor); 5492 data.writeStrongBinder(activityContainer.asBinder()); 5493 mRemote.transact(DELETE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); 5494 reply.readException(); 5495 data.recycle(); 5496 reply.recycle(); 5497 } 5498 5499 @Override 5500 public IActivityContainer createStackOnDisplay(int displayId) throws RemoteException { 5501 Parcel data = Parcel.obtain(); 5502 Parcel reply = Parcel.obtain(); 5503 data.writeInterfaceToken(IActivityManager.descriptor); 5504 data.writeInt(displayId); 5505 mRemote.transact(CREATE_STACK_ON_DISPLAY, data, reply, 0); 5506 reply.readException(); 5507 final int result = reply.readInt(); 5508 final IActivityContainer res; 5509 if (result == 1) { 5510 res = IActivityContainer.Stub.asInterface(reply.readStrongBinder()); 5511 } else { 5512 res = null; 5513 } 5514 data.recycle(); 5515 reply.recycle(); 5516 return res; 5517 } 5518 5519 @Override 5520 public int getActivityDisplayId(IBinder activityToken) 5521 throws RemoteException { 5522 Parcel data = Parcel.obtain(); 5523 Parcel reply = Parcel.obtain(); 5524 data.writeInterfaceToken(IActivityManager.descriptor); 5525 data.writeStrongBinder(activityToken); 5526 mRemote.transact(GET_ACTIVITY_DISPLAY_ID_TRANSACTION, data, reply, 0); 5527 reply.readException(); 5528 final int displayId = reply.readInt(); 5529 data.recycle(); 5530 reply.recycle(); 5531 return displayId; 5532 } 5533 5534 @Override 5535 public IBinder getHomeActivityToken() throws RemoteException { 5536 Parcel data = Parcel.obtain(); 5537 Parcel reply = Parcel.obtain(); 5538 data.writeInterfaceToken(IActivityManager.descriptor); 5539 mRemote.transact(GET_HOME_ACTIVITY_TOKEN_TRANSACTION, data, reply, 0); 5540 reply.readException(); 5541 IBinder res = reply.readStrongBinder(); 5542 data.recycle(); 5543 reply.recycle(); 5544 return res; 5545 } 5546 5547 @Override 5548 public void startLockTaskMode(int taskId) throws RemoteException { 5549 Parcel data = Parcel.obtain(); 5550 Parcel reply = Parcel.obtain(); 5551 data.writeInterfaceToken(IActivityManager.descriptor); 5552 data.writeInt(taskId); 5553 mRemote.transact(START_LOCK_TASK_BY_TASK_ID_TRANSACTION, data, reply, 0); 5554 reply.readException(); 5555 data.recycle(); 5556 reply.recycle(); 5557 } 5558 5559 @Override 5560 public void startLockTaskMode(IBinder token) throws RemoteException { 5561 Parcel data = Parcel.obtain(); 5562 Parcel reply = Parcel.obtain(); 5563 data.writeInterfaceToken(IActivityManager.descriptor); 5564 data.writeStrongBinder(token); 5565 mRemote.transact(START_LOCK_TASK_BY_TOKEN_TRANSACTION, data, reply, 0); 5566 reply.readException(); 5567 data.recycle(); 5568 reply.recycle(); 5569 } 5570 5571 @Override 5572 public void startLockTaskModeOnCurrent() throws RemoteException { 5573 Parcel data = Parcel.obtain(); 5574 Parcel reply = Parcel.obtain(); 5575 data.writeInterfaceToken(IActivityManager.descriptor); 5576 mRemote.transact(START_LOCK_TASK_BY_CURRENT_TRANSACTION, data, reply, 0); 5577 reply.readException(); 5578 data.recycle(); 5579 reply.recycle(); 5580 } 5581 5582 @Override 5583 public void stopLockTaskMode() throws RemoteException { 5584 Parcel data = Parcel.obtain(); 5585 Parcel reply = Parcel.obtain(); 5586 data.writeInterfaceToken(IActivityManager.descriptor); 5587 mRemote.transact(STOP_LOCK_TASK_MODE_TRANSACTION, data, reply, 0); 5588 reply.readException(); 5589 data.recycle(); 5590 reply.recycle(); 5591 } 5592 5593 @Override 5594 public void stopLockTaskModeOnCurrent() throws RemoteException { 5595 Parcel data = Parcel.obtain(); 5596 Parcel reply = Parcel.obtain(); 5597 data.writeInterfaceToken(IActivityManager.descriptor); 5598 mRemote.transact(STOP_LOCK_TASK_BY_CURRENT_TRANSACTION, data, reply, 0); 5599 reply.readException(); 5600 data.recycle(); 5601 reply.recycle(); 5602 } 5603 5604 @Override 5605 public boolean isInLockTaskMode() throws RemoteException { 5606 Parcel data = Parcel.obtain(); 5607 Parcel reply = Parcel.obtain(); 5608 data.writeInterfaceToken(IActivityManager.descriptor); 5609 mRemote.transact(IS_IN_LOCK_TASK_MODE_TRANSACTION, data, reply, 0); 5610 reply.readException(); 5611 boolean isInLockTaskMode = reply.readInt() == 1; 5612 data.recycle(); 5613 reply.recycle(); 5614 return isInLockTaskMode; 5615 } 5616 5617 @Override 5618 public int getLockTaskModeState() throws RemoteException { 5619 Parcel data = Parcel.obtain(); 5620 Parcel reply = Parcel.obtain(); 5621 data.writeInterfaceToken(IActivityManager.descriptor); 5622 mRemote.transact(GET_LOCK_TASK_MODE_STATE_TRANSACTION, data, reply, 0); 5623 reply.readException(); 5624 int lockTaskModeState = reply.readInt(); 5625 data.recycle(); 5626 reply.recycle(); 5627 return lockTaskModeState; 5628 } 5629 5630 @Override 5631 public void showLockTaskEscapeMessage(IBinder token) throws RemoteException { 5632 Parcel data = Parcel.obtain(); 5633 Parcel reply = Parcel.obtain(); 5634 data.writeInterfaceToken(IActivityManager.descriptor); 5635 data.writeStrongBinder(token); 5636 mRemote.transact(SHOW_LOCK_TASK_ESCAPE_MESSAGE_TRANSACTION, data, reply, 5637 IBinder.FLAG_ONEWAY); 5638 reply.readException(); 5639 data.recycle(); 5640 reply.recycle(); 5641 } 5642 5643 @Override 5644 public void setTaskDescription(IBinder token, ActivityManager.TaskDescription values) 5645 throws RemoteException { 5646 Parcel data = Parcel.obtain(); 5647 Parcel reply = Parcel.obtain(); 5648 data.writeInterfaceToken(IActivityManager.descriptor); 5649 data.writeStrongBinder(token); 5650 values.writeToParcel(data, 0); 5651 mRemote.transact(SET_TASK_DESCRIPTION_TRANSACTION, data, reply, 0); 5652 reply.readException(); 5653 data.recycle(); 5654 reply.recycle(); 5655 } 5656 5657 @Override 5658 public void setTaskResizeable(int taskId, boolean resizeable) throws RemoteException { 5659 Parcel data = Parcel.obtain(); 5660 Parcel reply = Parcel.obtain(); 5661 data.writeInterfaceToken(IActivityManager.descriptor); 5662 data.writeInt(taskId); 5663 data.writeInt(resizeable ? 1 : 0); 5664 mRemote.transact(SET_TASK_RESIZEABLE_TRANSACTION, data, reply, 0); 5665 reply.readException(); 5666 data.recycle(); 5667 reply.recycle(); 5668 } 5669 5670 @Override 5671 public void resizeTask(int taskId, Rect r) throws RemoteException 5672 { 5673 Parcel data = Parcel.obtain(); 5674 Parcel reply = Parcel.obtain(); 5675 data.writeInterfaceToken(IActivityManager.descriptor); 5676 data.writeInt(taskId); 5677 r.writeToParcel(data, 0); 5678 mRemote.transact(RESIZE_TASK_TRANSACTION, data, reply, 0); 5679 reply.readException(); 5680 data.recycle(); 5681 reply.recycle(); 5682 } 5683 5684 @Override 5685 public Bitmap getTaskDescriptionIcon(String filename) throws RemoteException { 5686 Parcel data = Parcel.obtain(); 5687 Parcel reply = Parcel.obtain(); 5688 data.writeInterfaceToken(IActivityManager.descriptor); 5689 data.writeString(filename); 5690 mRemote.transact(GET_TASK_DESCRIPTION_ICON_TRANSACTION, data, reply, 0); 5691 reply.readException(); 5692 final Bitmap icon = reply.readInt() == 0 ? null : Bitmap.CREATOR.createFromParcel(reply); 5693 data.recycle(); 5694 reply.recycle(); 5695 return icon; 5696 } 5697 5698 @Override 5699 public void startInPlaceAnimationOnFrontMostApplication(ActivityOptions options) 5700 throws RemoteException { 5701 Parcel data = Parcel.obtain(); 5702 Parcel reply = Parcel.obtain(); 5703 data.writeInterfaceToken(IActivityManager.descriptor); 5704 if (options == null) { 5705 data.writeInt(0); 5706 } else { 5707 data.writeInt(1); 5708 data.writeBundle(options.toBundle()); 5709 } 5710 mRemote.transact(START_IN_PLACE_ANIMATION_TRANSACTION, data, reply, 0); 5711 reply.readException(); 5712 data.recycle(); 5713 reply.recycle(); 5714 } 5715 5716 @Override 5717 public boolean requestVisibleBehind(IBinder token, boolean visible) throws RemoteException { 5718 Parcel data = Parcel.obtain(); 5719 Parcel reply = Parcel.obtain(); 5720 data.writeInterfaceToken(IActivityManager.descriptor); 5721 data.writeStrongBinder(token); 5722 data.writeInt(visible ? 1 : 0); 5723 mRemote.transact(REQUEST_VISIBLE_BEHIND_TRANSACTION, data, reply, 0); 5724 reply.readException(); 5725 boolean success = reply.readInt() > 0; 5726 data.recycle(); 5727 reply.recycle(); 5728 return success; 5729 } 5730 5731 @Override 5732 public boolean isBackgroundVisibleBehind(IBinder token) throws RemoteException { 5733 Parcel data = Parcel.obtain(); 5734 Parcel reply = Parcel.obtain(); 5735 data.writeInterfaceToken(IActivityManager.descriptor); 5736 data.writeStrongBinder(token); 5737 mRemote.transact(IS_BACKGROUND_VISIBLE_BEHIND_TRANSACTION, data, reply, 0); 5738 reply.readException(); 5739 final boolean visible = reply.readInt() > 0; 5740 data.recycle(); 5741 reply.recycle(); 5742 return visible; 5743 } 5744 5745 @Override 5746 public void backgroundResourcesReleased(IBinder token) throws RemoteException { 5747 Parcel data = Parcel.obtain(); 5748 Parcel reply = Parcel.obtain(); 5749 data.writeInterfaceToken(IActivityManager.descriptor); 5750 data.writeStrongBinder(token); 5751 mRemote.transact(BACKGROUND_RESOURCES_RELEASED_TRANSACTION, data, reply, 0); 5752 reply.readException(); 5753 data.recycle(); 5754 reply.recycle(); 5755 } 5756 5757 @Override 5758 public void notifyLaunchTaskBehindComplete(IBinder token) throws RemoteException { 5759 Parcel data = Parcel.obtain(); 5760 Parcel reply = Parcel.obtain(); 5761 data.writeInterfaceToken(IActivityManager.descriptor); 5762 data.writeStrongBinder(token); 5763 mRemote.transact(NOTIFY_LAUNCH_TASK_BEHIND_COMPLETE_TRANSACTION, data, reply, 0); 5764 reply.readException(); 5765 data.recycle(); 5766 reply.recycle(); 5767 } 5768 5769 @Override 5770 public void notifyEnterAnimationComplete(IBinder token) throws RemoteException { 5771 Parcel data = Parcel.obtain(); 5772 Parcel reply = Parcel.obtain(); 5773 data.writeInterfaceToken(IActivityManager.descriptor); 5774 data.writeStrongBinder(token); 5775 mRemote.transact(NOTIFY_ENTER_ANIMATION_COMPLETE_TRANSACTION, data, reply, 0); 5776 reply.readException(); 5777 data.recycle(); 5778 reply.recycle(); 5779 } 5780 5781 @Override 5782 public void bootAnimationComplete() throws RemoteException { 5783 Parcel data = Parcel.obtain(); 5784 Parcel reply = Parcel.obtain(); 5785 data.writeInterfaceToken(IActivityManager.descriptor); 5786 mRemote.transact(BOOT_ANIMATION_COMPLETE_TRANSACTION, data, reply, 0); 5787 reply.readException(); 5788 data.recycle(); 5789 reply.recycle(); 5790 } 5791 5792 @Override 5793 public void notifyCleartextNetwork(int uid, byte[] firstPacket) throws RemoteException { 5794 Parcel data = Parcel.obtain(); 5795 Parcel reply = Parcel.obtain(); 5796 data.writeInterfaceToken(IActivityManager.descriptor); 5797 data.writeInt(uid); 5798 data.writeByteArray(firstPacket); 5799 mRemote.transact(NOTIFY_CLEARTEXT_NETWORK_TRANSACTION, data, reply, 0); 5800 reply.readException(); 5801 data.recycle(); 5802 reply.recycle(); 5803 } 5804 5805 @Override 5806 public void setDumpHeapDebugLimit(String processName, int uid, long maxMemSize, 5807 String reportPackage) throws RemoteException { 5808 Parcel data = Parcel.obtain(); 5809 Parcel reply = Parcel.obtain(); 5810 data.writeInterfaceToken(IActivityManager.descriptor); 5811 data.writeString(processName); 5812 data.writeInt(uid); 5813 data.writeLong(maxMemSize); 5814 data.writeString(reportPackage); 5815 mRemote.transact(SET_DUMP_HEAP_DEBUG_LIMIT_TRANSACTION, data, reply, 0); 5816 reply.readException(); 5817 data.recycle(); 5818 reply.recycle(); 5819 } 5820 5821 @Override 5822 public void dumpHeapFinished(String path) throws RemoteException { 5823 Parcel data = Parcel.obtain(); 5824 Parcel reply = Parcel.obtain(); 5825 data.writeInterfaceToken(IActivityManager.descriptor); 5826 data.writeString(path); 5827 mRemote.transact(DUMP_HEAP_FINISHED_TRANSACTION, data, reply, 0); 5828 reply.readException(); 5829 data.recycle(); 5830 reply.recycle(); 5831 } 5832 5833 @Override 5834 public void setVoiceKeepAwake(IVoiceInteractionSession session, boolean keepAwake) 5835 throws RemoteException { 5836 Parcel data = Parcel.obtain(); 5837 Parcel reply = Parcel.obtain(); 5838 data.writeInterfaceToken(IActivityManager.descriptor); 5839 data.writeStrongBinder(session.asBinder()); 5840 data.writeInt(keepAwake ? 1 : 0); 5841 mRemote.transact(SET_VOICE_KEEP_AWAKE_TRANSACTION, data, reply, 0); 5842 reply.readException(); 5843 data.recycle(); 5844 reply.recycle(); 5845 } 5846 5847 @Override 5848 public void updateLockTaskPackages(int userId, String[] packages) throws RemoteException { 5849 Parcel data = Parcel.obtain(); 5850 Parcel reply = Parcel.obtain(); 5851 data.writeInterfaceToken(IActivityManager.descriptor); 5852 data.writeInt(userId); 5853 data.writeStringArray(packages); 5854 mRemote.transact(UPDATE_LOCK_TASK_PACKAGES_TRANSACTION, data, reply, 0); 5855 reply.readException(); 5856 data.recycle(); 5857 reply.recycle(); 5858 } 5859 5860 @Override 5861 public void updateDeviceOwner(String packageName) throws RemoteException { 5862 Parcel data = Parcel.obtain(); 5863 Parcel reply = Parcel.obtain(); 5864 data.writeInterfaceToken(IActivityManager.descriptor); 5865 data.writeString(packageName); 5866 mRemote.transact(UPDATE_DEVICE_OWNER_TRANSACTION, data, reply, 0); 5867 reply.readException(); 5868 data.recycle(); 5869 reply.recycle(); 5870 } 5871 5872 @Override 5873 public void updatePreferredSetupActivity(ComponentName preferredActivity, int userId) 5874 throws RemoteException { 5875 Parcel data = Parcel.obtain(); 5876 Parcel reply = Parcel.obtain(); 5877 data.writeInterfaceToken(IActivityManager.descriptor); 5878 ComponentName.writeToParcel(preferredActivity, data); 5879 data.writeInt(userId); 5880 mRemote.transact(UPDATE_PREFERRED_SETUP_ACTIVITY_TRANSACTION, data, reply, 0); 5881 reply.readException(); 5882 data.recycle(); 5883 reply.recycle(); 5884 } 5885 5886 @Override 5887 public int getPackageProcessState(String packageName) throws RemoteException { 5888 Parcel data = Parcel.obtain(); 5889 Parcel reply = Parcel.obtain(); 5890 data.writeInterfaceToken(IActivityManager.descriptor); 5891 data.writeString(packageName); 5892 mRemote.transact(GET_PACKAGE_PROCESS_STATE_TRANSACTION, data, reply, 0); 5893 reply.readException(); 5894 int res = reply.readInt(); 5895 data.recycle(); 5896 reply.recycle(); 5897 return res; 5898 } 5899 5900 private IBinder mRemote; 5901} 5902