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