ActivityManagerNative.java revision 5e03e2ca7d25b899b129baad2dd5eca6bf99d88a
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.content.ComponentName; 20import android.content.IIntentReceiver; 21import android.content.IIntentSender; 22import android.content.Intent; 23import android.content.IntentFilter; 24import android.content.IntentSender; 25import android.content.pm.ApplicationInfo; 26import android.content.pm.ConfigurationInfo; 27import android.content.pm.IPackageDataObserver; 28import android.content.pm.UserInfo; 29import android.content.res.Configuration; 30import android.graphics.Bitmap; 31import android.net.Uri; 32import android.os.Binder; 33import android.os.Bundle; 34import android.os.Debug; 35import android.os.IBinder; 36import android.os.Parcel; 37import android.os.ParcelFileDescriptor; 38import android.os.Parcelable; 39import android.os.RemoteException; 40import android.os.ServiceManager; 41import android.os.StrictMode; 42import android.os.UserHandle; 43import android.text.TextUtils; 44import android.util.Log; 45import android.util.Singleton; 46 47import java.util.ArrayList; 48import java.util.List; 49 50/** {@hide} */ 51public abstract class ActivityManagerNative extends Binder implements IActivityManager 52{ 53 /** 54 * Cast a Binder object into an activity manager interface, generating 55 * a proxy if needed. 56 */ 57 static public IActivityManager asInterface(IBinder obj) { 58 if (obj == null) { 59 return null; 60 } 61 IActivityManager in = 62 (IActivityManager)obj.queryLocalInterface(descriptor); 63 if (in != null) { 64 return in; 65 } 66 67 return new ActivityManagerProxy(obj); 68 } 69 70 /** 71 * Retrieve the system's default/global activity manager. 72 */ 73 static public IActivityManager getDefault() { 74 return gDefault.get(); 75 } 76 77 /** 78 * Convenience for checking whether the system is ready. For internal use only. 79 */ 80 static public boolean isSystemReady() { 81 if (!sSystemReady) { 82 sSystemReady = getDefault().testIsSystemReady(); 83 } 84 return sSystemReady; 85 } 86 static boolean sSystemReady = false; 87 88 /** 89 * Convenience for sending a sticky broadcast. For internal use only. 90 * If you don't care about permission, use null. 91 */ 92 static public void broadcastStickyIntent(Intent intent, String permission, int userId) { 93 try { 94 getDefault().broadcastIntent( 95 null, intent, null, null, Activity.RESULT_OK, null, null, 96 null /*permission*/, false, true, userId); 97 } catch (RemoteException ex) { 98 } 99 } 100 101 static public void noteWakeupAlarm(PendingIntent ps) { 102 try { 103 getDefault().noteWakeupAlarm(ps.getTarget()); 104 } catch (RemoteException ex) { 105 } 106 } 107 108 public ActivityManagerNative() { 109 attachInterface(this, descriptor); 110 } 111 112 public boolean onTransact(int code, Parcel data, Parcel reply, int flags) 113 throws RemoteException { 114 switch (code) { 115 case START_ACTIVITY_TRANSACTION: 116 { 117 data.enforceInterface(IActivityManager.descriptor); 118 IBinder b = data.readStrongBinder(); 119 IApplicationThread app = ApplicationThreadNative.asInterface(b); 120 Intent intent = Intent.CREATOR.createFromParcel(data); 121 String resolvedType = data.readString(); 122 IBinder resultTo = data.readStrongBinder(); 123 String resultWho = data.readString(); 124 int requestCode = data.readInt(); 125 int startFlags = data.readInt(); 126 String profileFile = data.readString(); 127 ParcelFileDescriptor profileFd = data.readInt() != 0 128 ? data.readFileDescriptor() : null; 129 Bundle options = data.readInt() != 0 130 ? Bundle.CREATOR.createFromParcel(data) : null; 131 int result = startActivity(app, intent, resolvedType, 132 resultTo, resultWho, requestCode, startFlags, 133 profileFile, profileFd, options); 134 reply.writeNoException(); 135 reply.writeInt(result); 136 return true; 137 } 138 139 case START_ACTIVITY_AS_USER_TRANSACTION: 140 { 141 data.enforceInterface(IActivityManager.descriptor); 142 IBinder b = data.readStrongBinder(); 143 IApplicationThread app = ApplicationThreadNative.asInterface(b); 144 Intent intent = Intent.CREATOR.createFromParcel(data); 145 String resolvedType = data.readString(); 146 IBinder resultTo = data.readStrongBinder(); 147 String resultWho = data.readString(); 148 int requestCode = data.readInt(); 149 int startFlags = data.readInt(); 150 String profileFile = data.readString(); 151 ParcelFileDescriptor profileFd = data.readInt() != 0 152 ? data.readFileDescriptor() : null; 153 Bundle options = data.readInt() != 0 154 ? Bundle.CREATOR.createFromParcel(data) : null; 155 int userId = data.readInt(); 156 int result = startActivityAsUser(app, intent, resolvedType, 157 resultTo, resultWho, requestCode, startFlags, 158 profileFile, profileFd, options, userId); 159 reply.writeNoException(); 160 reply.writeInt(result); 161 return true; 162 } 163 164 case START_ACTIVITY_AND_WAIT_TRANSACTION: 165 { 166 data.enforceInterface(IActivityManager.descriptor); 167 IBinder b = data.readStrongBinder(); 168 IApplicationThread app = ApplicationThreadNative.asInterface(b); 169 Intent intent = Intent.CREATOR.createFromParcel(data); 170 String resolvedType = data.readString(); 171 IBinder resultTo = data.readStrongBinder(); 172 String resultWho = data.readString(); 173 int requestCode = data.readInt(); 174 int startFlags = data.readInt(); 175 String profileFile = data.readString(); 176 ParcelFileDescriptor profileFd = data.readInt() != 0 177 ? data.readFileDescriptor() : null; 178 Bundle options = data.readInt() != 0 179 ? Bundle.CREATOR.createFromParcel(data) : null; 180 int userId = data.readInt(); 181 WaitResult result = startActivityAndWait(app, intent, resolvedType, 182 resultTo, resultWho, requestCode, startFlags, 183 profileFile, profileFd, options, userId); 184 reply.writeNoException(); 185 result.writeToParcel(reply, 0); 186 return true; 187 } 188 189 case START_ACTIVITY_WITH_CONFIG_TRANSACTION: 190 { 191 data.enforceInterface(IActivityManager.descriptor); 192 IBinder b = data.readStrongBinder(); 193 IApplicationThread app = ApplicationThreadNative.asInterface(b); 194 Intent intent = Intent.CREATOR.createFromParcel(data); 195 String resolvedType = data.readString(); 196 IBinder resultTo = data.readStrongBinder(); 197 String resultWho = data.readString(); 198 int requestCode = data.readInt(); 199 int startFlags = data.readInt(); 200 Configuration config = Configuration.CREATOR.createFromParcel(data); 201 Bundle options = data.readInt() != 0 202 ? Bundle.CREATOR.createFromParcel(data) : null; 203 int userId = data.readInt(); 204 int result = startActivityWithConfig(app, intent, resolvedType, 205 resultTo, resultWho, requestCode, startFlags, config, options, userId); 206 reply.writeNoException(); 207 reply.writeInt(result); 208 return true; 209 } 210 211 case START_ACTIVITY_INTENT_SENDER_TRANSACTION: 212 { 213 data.enforceInterface(IActivityManager.descriptor); 214 IBinder b = data.readStrongBinder(); 215 IApplicationThread app = ApplicationThreadNative.asInterface(b); 216 IntentSender intent = IntentSender.CREATOR.createFromParcel(data); 217 Intent fillInIntent = null; 218 if (data.readInt() != 0) { 219 fillInIntent = Intent.CREATOR.createFromParcel(data); 220 } 221 String resolvedType = data.readString(); 222 IBinder resultTo = data.readStrongBinder(); 223 String resultWho = data.readString(); 224 int requestCode = data.readInt(); 225 int flagsMask = data.readInt(); 226 int flagsValues = data.readInt(); 227 Bundle options = data.readInt() != 0 228 ? Bundle.CREATOR.createFromParcel(data) : null; 229 int result = startActivityIntentSender(app, intent, 230 fillInIntent, resolvedType, resultTo, resultWho, 231 requestCode, flagsMask, flagsValues, options); 232 reply.writeNoException(); 233 reply.writeInt(result); 234 return true; 235 } 236 237 case START_NEXT_MATCHING_ACTIVITY_TRANSACTION: 238 { 239 data.enforceInterface(IActivityManager.descriptor); 240 IBinder callingActivity = data.readStrongBinder(); 241 Intent intent = Intent.CREATOR.createFromParcel(data); 242 Bundle options = data.readInt() != 0 243 ? Bundle.CREATOR.createFromParcel(data) : null; 244 boolean result = startNextMatchingActivity(callingActivity, intent, options); 245 reply.writeNoException(); 246 reply.writeInt(result ? 1 : 0); 247 return true; 248 } 249 250 case FINISH_ACTIVITY_TRANSACTION: { 251 data.enforceInterface(IActivityManager.descriptor); 252 IBinder token = data.readStrongBinder(); 253 Intent resultData = null; 254 int resultCode = data.readInt(); 255 if (data.readInt() != 0) { 256 resultData = Intent.CREATOR.createFromParcel(data); 257 } 258 boolean res = finishActivity(token, resultCode, resultData); 259 reply.writeNoException(); 260 reply.writeInt(res ? 1 : 0); 261 return true; 262 } 263 264 case FINISH_SUB_ACTIVITY_TRANSACTION: { 265 data.enforceInterface(IActivityManager.descriptor); 266 IBinder token = data.readStrongBinder(); 267 String resultWho = data.readString(); 268 int requestCode = data.readInt(); 269 finishSubActivity(token, resultWho, requestCode); 270 reply.writeNoException(); 271 return true; 272 } 273 274 case FINISH_ACTIVITY_AFFINITY_TRANSACTION: { 275 data.enforceInterface(IActivityManager.descriptor); 276 IBinder token = data.readStrongBinder(); 277 boolean res = finishActivityAffinity(token); 278 reply.writeNoException(); 279 reply.writeInt(res ? 1 : 0); 280 return true; 281 } 282 283 case WILL_ACTIVITY_BE_VISIBLE_TRANSACTION: { 284 data.enforceInterface(IActivityManager.descriptor); 285 IBinder token = data.readStrongBinder(); 286 boolean res = willActivityBeVisible(token); 287 reply.writeNoException(); 288 reply.writeInt(res ? 1 : 0); 289 return true; 290 } 291 292 case REGISTER_RECEIVER_TRANSACTION: 293 { 294 data.enforceInterface(IActivityManager.descriptor); 295 IBinder b = data.readStrongBinder(); 296 IApplicationThread app = 297 b != null ? ApplicationThreadNative.asInterface(b) : null; 298 String packageName = data.readString(); 299 b = data.readStrongBinder(); 300 IIntentReceiver rec 301 = b != null ? IIntentReceiver.Stub.asInterface(b) : null; 302 IntentFilter filter = IntentFilter.CREATOR.createFromParcel(data); 303 String perm = data.readString(); 304 int userId = data.readInt(); 305 Intent intent = registerReceiver(app, packageName, rec, filter, perm, userId); 306 reply.writeNoException(); 307 if (intent != null) { 308 reply.writeInt(1); 309 intent.writeToParcel(reply, 0); 310 } else { 311 reply.writeInt(0); 312 } 313 return true; 314 } 315 316 case UNREGISTER_RECEIVER_TRANSACTION: 317 { 318 data.enforceInterface(IActivityManager.descriptor); 319 IBinder b = data.readStrongBinder(); 320 if (b == null) { 321 return true; 322 } 323 IIntentReceiver rec = IIntentReceiver.Stub.asInterface(b); 324 unregisterReceiver(rec); 325 reply.writeNoException(); 326 return true; 327 } 328 329 case BROADCAST_INTENT_TRANSACTION: 330 { 331 data.enforceInterface(IActivityManager.descriptor); 332 IBinder b = data.readStrongBinder(); 333 IApplicationThread app = 334 b != null ? ApplicationThreadNative.asInterface(b) : null; 335 Intent intent = Intent.CREATOR.createFromParcel(data); 336 String resolvedType = data.readString(); 337 b = data.readStrongBinder(); 338 IIntentReceiver resultTo = 339 b != null ? IIntentReceiver.Stub.asInterface(b) : null; 340 int resultCode = data.readInt(); 341 String resultData = data.readString(); 342 Bundle resultExtras = data.readBundle(); 343 String perm = data.readString(); 344 boolean serialized = data.readInt() != 0; 345 boolean sticky = data.readInt() != 0; 346 int userId = data.readInt(); 347 int res = broadcastIntent(app, intent, resolvedType, resultTo, 348 resultCode, resultData, resultExtras, perm, 349 serialized, sticky, userId); 350 reply.writeNoException(); 351 reply.writeInt(res); 352 return true; 353 } 354 355 case UNBROADCAST_INTENT_TRANSACTION: 356 { 357 data.enforceInterface(IActivityManager.descriptor); 358 IBinder b = data.readStrongBinder(); 359 IApplicationThread app = b != null ? ApplicationThreadNative.asInterface(b) : null; 360 Intent intent = Intent.CREATOR.createFromParcel(data); 361 int userId = data.readInt(); 362 unbroadcastIntent(app, intent, userId); 363 reply.writeNoException(); 364 return true; 365 } 366 367 case FINISH_RECEIVER_TRANSACTION: { 368 data.enforceInterface(IActivityManager.descriptor); 369 IBinder who = data.readStrongBinder(); 370 int resultCode = data.readInt(); 371 String resultData = data.readString(); 372 Bundle resultExtras = data.readBundle(); 373 boolean resultAbort = data.readInt() != 0; 374 if (who != null) { 375 finishReceiver(who, resultCode, resultData, resultExtras, resultAbort); 376 } 377 reply.writeNoException(); 378 return true; 379 } 380 381 case ATTACH_APPLICATION_TRANSACTION: { 382 data.enforceInterface(IActivityManager.descriptor); 383 IApplicationThread app = ApplicationThreadNative.asInterface( 384 data.readStrongBinder()); 385 if (app != null) { 386 attachApplication(app); 387 } 388 reply.writeNoException(); 389 return true; 390 } 391 392 case ACTIVITY_IDLE_TRANSACTION: { 393 data.enforceInterface(IActivityManager.descriptor); 394 IBinder token = data.readStrongBinder(); 395 Configuration config = null; 396 if (data.readInt() != 0) { 397 config = Configuration.CREATOR.createFromParcel(data); 398 } 399 boolean stopProfiling = data.readInt() != 0; 400 if (token != null) { 401 activityIdle(token, config, stopProfiling); 402 } 403 reply.writeNoException(); 404 return true; 405 } 406 407 case ACTIVITY_PAUSED_TRANSACTION: { 408 data.enforceInterface(IActivityManager.descriptor); 409 IBinder token = data.readStrongBinder(); 410 activityPaused(token); 411 reply.writeNoException(); 412 return true; 413 } 414 415 case ACTIVITY_STOPPED_TRANSACTION: { 416 data.enforceInterface(IActivityManager.descriptor); 417 IBinder token = data.readStrongBinder(); 418 Bundle map = data.readBundle(); 419 Bitmap thumbnail = data.readInt() != 0 420 ? Bitmap.CREATOR.createFromParcel(data) : null; 421 CharSequence description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data); 422 activityStopped(token, map, thumbnail, description); 423 reply.writeNoException(); 424 return true; 425 } 426 427 case ACTIVITY_SLEPT_TRANSACTION: { 428 data.enforceInterface(IActivityManager.descriptor); 429 IBinder token = data.readStrongBinder(); 430 activitySlept(token); 431 reply.writeNoException(); 432 return true; 433 } 434 435 case ACTIVITY_DESTROYED_TRANSACTION: { 436 data.enforceInterface(IActivityManager.descriptor); 437 IBinder token = data.readStrongBinder(); 438 activityDestroyed(token); 439 reply.writeNoException(); 440 return true; 441 } 442 443 case GET_CALLING_PACKAGE_TRANSACTION: { 444 data.enforceInterface(IActivityManager.descriptor); 445 IBinder token = data.readStrongBinder(); 446 String res = token != null ? getCallingPackage(token) : null; 447 reply.writeNoException(); 448 reply.writeString(res); 449 return true; 450 } 451 452 case GET_CALLING_ACTIVITY_TRANSACTION: { 453 data.enforceInterface(IActivityManager.descriptor); 454 IBinder token = data.readStrongBinder(); 455 ComponentName cn = getCallingActivity(token); 456 reply.writeNoException(); 457 ComponentName.writeToParcel(cn, reply); 458 return true; 459 } 460 461 case GET_TASKS_TRANSACTION: { 462 data.enforceInterface(IActivityManager.descriptor); 463 int maxNum = data.readInt(); 464 int fl = data.readInt(); 465 IBinder receiverBinder = data.readStrongBinder(); 466 IThumbnailReceiver receiver = receiverBinder != null 467 ? IThumbnailReceiver.Stub.asInterface(receiverBinder) 468 : null; 469 List list = getTasks(maxNum, fl, receiver); 470 reply.writeNoException(); 471 int N = list != null ? list.size() : -1; 472 reply.writeInt(N); 473 int i; 474 for (i=0; i<N; i++) { 475 ActivityManager.RunningTaskInfo info = 476 (ActivityManager.RunningTaskInfo)list.get(i); 477 info.writeToParcel(reply, 0); 478 } 479 return true; 480 } 481 482 case GET_RECENT_TASKS_TRANSACTION: { 483 data.enforceInterface(IActivityManager.descriptor); 484 int maxNum = data.readInt(); 485 int fl = data.readInt(); 486 int userId = data.readInt(); 487 List<ActivityManager.RecentTaskInfo> list = getRecentTasks(maxNum, 488 fl, userId); 489 reply.writeNoException(); 490 reply.writeTypedList(list); 491 return true; 492 } 493 494 case GET_TASK_THUMBNAILS_TRANSACTION: { 495 data.enforceInterface(IActivityManager.descriptor); 496 int id = data.readInt(); 497 ActivityManager.TaskThumbnails bm = getTaskThumbnails(id); 498 reply.writeNoException(); 499 if (bm != null) { 500 reply.writeInt(1); 501 bm.writeToParcel(reply, 0); 502 } else { 503 reply.writeInt(0); 504 } 505 return true; 506 } 507 508 case GET_SERVICES_TRANSACTION: { 509 data.enforceInterface(IActivityManager.descriptor); 510 int maxNum = data.readInt(); 511 int fl = data.readInt(); 512 List list = getServices(maxNum, fl); 513 reply.writeNoException(); 514 int N = list != null ? list.size() : -1; 515 reply.writeInt(N); 516 int i; 517 for (i=0; i<N; i++) { 518 ActivityManager.RunningServiceInfo info = 519 (ActivityManager.RunningServiceInfo)list.get(i); 520 info.writeToParcel(reply, 0); 521 } 522 return true; 523 } 524 525 case GET_PROCESSES_IN_ERROR_STATE_TRANSACTION: { 526 data.enforceInterface(IActivityManager.descriptor); 527 List<ActivityManager.ProcessErrorStateInfo> list = getProcessesInErrorState(); 528 reply.writeNoException(); 529 reply.writeTypedList(list); 530 return true; 531 } 532 533 case GET_RUNNING_APP_PROCESSES_TRANSACTION: { 534 data.enforceInterface(IActivityManager.descriptor); 535 List<ActivityManager.RunningAppProcessInfo> list = getRunningAppProcesses(); 536 reply.writeNoException(); 537 reply.writeTypedList(list); 538 return true; 539 } 540 541 case GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION: { 542 data.enforceInterface(IActivityManager.descriptor); 543 List<ApplicationInfo> list = getRunningExternalApplications(); 544 reply.writeNoException(); 545 reply.writeTypedList(list); 546 return true; 547 } 548 549 case MOVE_TASK_TO_FRONT_TRANSACTION: { 550 data.enforceInterface(IActivityManager.descriptor); 551 int task = data.readInt(); 552 int fl = data.readInt(); 553 Bundle options = data.readInt() != 0 554 ? Bundle.CREATOR.createFromParcel(data) : null; 555 moveTaskToFront(task, fl, options); 556 reply.writeNoException(); 557 return true; 558 } 559 560 case MOVE_TASK_TO_BACK_TRANSACTION: { 561 data.enforceInterface(IActivityManager.descriptor); 562 int task = data.readInt(); 563 moveTaskToBack(task); 564 reply.writeNoException(); 565 return true; 566 } 567 568 case MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION: { 569 data.enforceInterface(IActivityManager.descriptor); 570 IBinder token = data.readStrongBinder(); 571 boolean nonRoot = data.readInt() != 0; 572 boolean res = moveActivityTaskToBack(token, nonRoot); 573 reply.writeNoException(); 574 reply.writeInt(res ? 1 : 0); 575 return true; 576 } 577 578 case MOVE_TASK_BACKWARDS_TRANSACTION: { 579 data.enforceInterface(IActivityManager.descriptor); 580 int task = data.readInt(); 581 moveTaskBackwards(task); 582 reply.writeNoException(); 583 return true; 584 } 585 586 case GET_TASK_FOR_ACTIVITY_TRANSACTION: { 587 data.enforceInterface(IActivityManager.descriptor); 588 IBinder token = data.readStrongBinder(); 589 boolean onlyRoot = data.readInt() != 0; 590 int res = token != null 591 ? getTaskForActivity(token, onlyRoot) : -1; 592 reply.writeNoException(); 593 reply.writeInt(res); 594 return true; 595 } 596 597 case REPORT_THUMBNAIL_TRANSACTION: { 598 data.enforceInterface(IActivityManager.descriptor); 599 IBinder token = data.readStrongBinder(); 600 Bitmap thumbnail = data.readInt() != 0 601 ? Bitmap.CREATOR.createFromParcel(data) : null; 602 CharSequence description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data); 603 reportThumbnail(token, thumbnail, description); 604 reply.writeNoException(); 605 return true; 606 } 607 608 case GET_CONTENT_PROVIDER_TRANSACTION: { 609 data.enforceInterface(IActivityManager.descriptor); 610 IBinder b = data.readStrongBinder(); 611 IApplicationThread app = ApplicationThreadNative.asInterface(b); 612 String name = data.readString(); 613 boolean stable = data.readInt() != 0; 614 ContentProviderHolder cph = getContentProvider(app, name, stable); 615 reply.writeNoException(); 616 if (cph != null) { 617 reply.writeInt(1); 618 cph.writeToParcel(reply, 0); 619 } else { 620 reply.writeInt(0); 621 } 622 return true; 623 } 624 625 case GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION: { 626 data.enforceInterface(IActivityManager.descriptor); 627 String name = data.readString(); 628 IBinder token = data.readStrongBinder(); 629 ContentProviderHolder cph = getContentProviderExternal(name, token); 630 reply.writeNoException(); 631 if (cph != null) { 632 reply.writeInt(1); 633 cph.writeToParcel(reply, 0); 634 } else { 635 reply.writeInt(0); 636 } 637 return true; 638 } 639 640 case PUBLISH_CONTENT_PROVIDERS_TRANSACTION: { 641 data.enforceInterface(IActivityManager.descriptor); 642 IBinder b = data.readStrongBinder(); 643 IApplicationThread app = ApplicationThreadNative.asInterface(b); 644 ArrayList<ContentProviderHolder> providers = 645 data.createTypedArrayList(ContentProviderHolder.CREATOR); 646 publishContentProviders(app, providers); 647 reply.writeNoException(); 648 return true; 649 } 650 651 case REF_CONTENT_PROVIDER_TRANSACTION: { 652 data.enforceInterface(IActivityManager.descriptor); 653 IBinder b = data.readStrongBinder(); 654 int stable = data.readInt(); 655 int unstable = data.readInt(); 656 boolean res = refContentProvider(b, stable, unstable); 657 reply.writeNoException(); 658 reply.writeInt(res ? 1 : 0); 659 return true; 660 } 661 662 case UNSTABLE_PROVIDER_DIED_TRANSACTION: { 663 data.enforceInterface(IActivityManager.descriptor); 664 IBinder b = data.readStrongBinder(); 665 unstableProviderDied(b); 666 reply.writeNoException(); 667 return true; 668 } 669 670 case REMOVE_CONTENT_PROVIDER_TRANSACTION: { 671 data.enforceInterface(IActivityManager.descriptor); 672 IBinder b = data.readStrongBinder(); 673 boolean stable = data.readInt() != 0; 674 removeContentProvider(b, stable); 675 reply.writeNoException(); 676 return true; 677 } 678 679 case REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION: { 680 data.enforceInterface(IActivityManager.descriptor); 681 String name = data.readString(); 682 IBinder token = data.readStrongBinder(); 683 removeContentProviderExternal(name, token); 684 reply.writeNoException(); 685 return true; 686 } 687 688 case GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION: { 689 data.enforceInterface(IActivityManager.descriptor); 690 ComponentName comp = ComponentName.CREATOR.createFromParcel(data); 691 PendingIntent pi = getRunningServiceControlPanel(comp); 692 reply.writeNoException(); 693 PendingIntent.writePendingIntentOrNullToParcel(pi, reply); 694 return true; 695 } 696 697 case START_SERVICE_TRANSACTION: { 698 data.enforceInterface(IActivityManager.descriptor); 699 IBinder b = data.readStrongBinder(); 700 IApplicationThread app = ApplicationThreadNative.asInterface(b); 701 Intent service = Intent.CREATOR.createFromParcel(data); 702 String resolvedType = data.readString(); 703 int userId = data.readInt(); 704 ComponentName cn = startService(app, service, resolvedType, userId); 705 reply.writeNoException(); 706 ComponentName.writeToParcel(cn, reply); 707 return true; 708 } 709 710 case STOP_SERVICE_TRANSACTION: { 711 data.enforceInterface(IActivityManager.descriptor); 712 IBinder b = data.readStrongBinder(); 713 IApplicationThread app = ApplicationThreadNative.asInterface(b); 714 Intent service = Intent.CREATOR.createFromParcel(data); 715 String resolvedType = data.readString(); 716 int userId = data.readInt(); 717 int res = stopService(app, service, resolvedType, userId); 718 reply.writeNoException(); 719 reply.writeInt(res); 720 return true; 721 } 722 723 case STOP_SERVICE_TOKEN_TRANSACTION: { 724 data.enforceInterface(IActivityManager.descriptor); 725 ComponentName className = ComponentName.readFromParcel(data); 726 IBinder token = data.readStrongBinder(); 727 int startId = data.readInt(); 728 boolean res = stopServiceToken(className, token, startId); 729 reply.writeNoException(); 730 reply.writeInt(res ? 1 : 0); 731 return true; 732 } 733 734 case SET_SERVICE_FOREGROUND_TRANSACTION: { 735 data.enforceInterface(IActivityManager.descriptor); 736 ComponentName className = ComponentName.readFromParcel(data); 737 IBinder token = data.readStrongBinder(); 738 int id = data.readInt(); 739 Notification notification = null; 740 if (data.readInt() != 0) { 741 notification = Notification.CREATOR.createFromParcel(data); 742 } 743 boolean removeNotification = data.readInt() != 0; 744 setServiceForeground(className, token, id, notification, removeNotification); 745 reply.writeNoException(); 746 return true; 747 } 748 749 case BIND_SERVICE_TRANSACTION: { 750 data.enforceInterface(IActivityManager.descriptor); 751 IBinder b = data.readStrongBinder(); 752 IApplicationThread app = ApplicationThreadNative.asInterface(b); 753 IBinder token = data.readStrongBinder(); 754 Intent service = Intent.CREATOR.createFromParcel(data); 755 String resolvedType = data.readString(); 756 b = data.readStrongBinder(); 757 int fl = data.readInt(); 758 int userId = data.readInt(); 759 IServiceConnection conn = IServiceConnection.Stub.asInterface(b); 760 int res = bindService(app, token, service, resolvedType, conn, fl, userId); 761 reply.writeNoException(); 762 reply.writeInt(res); 763 return true; 764 } 765 766 case UNBIND_SERVICE_TRANSACTION: { 767 data.enforceInterface(IActivityManager.descriptor); 768 IBinder b = data.readStrongBinder(); 769 IServiceConnection conn = IServiceConnection.Stub.asInterface(b); 770 boolean res = unbindService(conn); 771 reply.writeNoException(); 772 reply.writeInt(res ? 1 : 0); 773 return true; 774 } 775 776 case PUBLISH_SERVICE_TRANSACTION: { 777 data.enforceInterface(IActivityManager.descriptor); 778 IBinder token = data.readStrongBinder(); 779 Intent intent = Intent.CREATOR.createFromParcel(data); 780 IBinder service = data.readStrongBinder(); 781 publishService(token, intent, service); 782 reply.writeNoException(); 783 return true; 784 } 785 786 case UNBIND_FINISHED_TRANSACTION: { 787 data.enforceInterface(IActivityManager.descriptor); 788 IBinder token = data.readStrongBinder(); 789 Intent intent = Intent.CREATOR.createFromParcel(data); 790 boolean doRebind = data.readInt() != 0; 791 unbindFinished(token, intent, doRebind); 792 reply.writeNoException(); 793 return true; 794 } 795 796 case SERVICE_DONE_EXECUTING_TRANSACTION: { 797 data.enforceInterface(IActivityManager.descriptor); 798 IBinder token = data.readStrongBinder(); 799 int type = data.readInt(); 800 int startId = data.readInt(); 801 int res = data.readInt(); 802 serviceDoneExecuting(token, type, startId, res); 803 reply.writeNoException(); 804 return true; 805 } 806 807 case START_INSTRUMENTATION_TRANSACTION: { 808 data.enforceInterface(IActivityManager.descriptor); 809 ComponentName className = ComponentName.readFromParcel(data); 810 String profileFile = data.readString(); 811 int fl = data.readInt(); 812 Bundle arguments = data.readBundle(); 813 IBinder b = data.readStrongBinder(); 814 IInstrumentationWatcher w = IInstrumentationWatcher.Stub.asInterface(b); 815 int userId = data.readInt(); 816 boolean res = startInstrumentation(className, profileFile, fl, arguments, w, userId); 817 reply.writeNoException(); 818 reply.writeInt(res ? 1 : 0); 819 return true; 820 } 821 822 823 case FINISH_INSTRUMENTATION_TRANSACTION: { 824 data.enforceInterface(IActivityManager.descriptor); 825 IBinder b = data.readStrongBinder(); 826 IApplicationThread app = ApplicationThreadNative.asInterface(b); 827 int resultCode = data.readInt(); 828 Bundle results = data.readBundle(); 829 finishInstrumentation(app, resultCode, results); 830 reply.writeNoException(); 831 return true; 832 } 833 834 case GET_CONFIGURATION_TRANSACTION: { 835 data.enforceInterface(IActivityManager.descriptor); 836 Configuration config = getConfiguration(); 837 reply.writeNoException(); 838 config.writeToParcel(reply, 0); 839 return true; 840 } 841 842 case UPDATE_CONFIGURATION_TRANSACTION: { 843 data.enforceInterface(IActivityManager.descriptor); 844 Configuration config = Configuration.CREATOR.createFromParcel(data); 845 updateConfiguration(config); 846 reply.writeNoException(); 847 return true; 848 } 849 850 case SET_REQUESTED_ORIENTATION_TRANSACTION: { 851 data.enforceInterface(IActivityManager.descriptor); 852 IBinder token = data.readStrongBinder(); 853 int requestedOrientation = data.readInt(); 854 setRequestedOrientation(token, requestedOrientation); 855 reply.writeNoException(); 856 return true; 857 } 858 859 case GET_REQUESTED_ORIENTATION_TRANSACTION: { 860 data.enforceInterface(IActivityManager.descriptor); 861 IBinder token = data.readStrongBinder(); 862 int req = getRequestedOrientation(token); 863 reply.writeNoException(); 864 reply.writeInt(req); 865 return true; 866 } 867 868 case GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION: { 869 data.enforceInterface(IActivityManager.descriptor); 870 IBinder token = data.readStrongBinder(); 871 ComponentName cn = getActivityClassForToken(token); 872 reply.writeNoException(); 873 ComponentName.writeToParcel(cn, reply); 874 return true; 875 } 876 877 case GET_PACKAGE_FOR_TOKEN_TRANSACTION: { 878 data.enforceInterface(IActivityManager.descriptor); 879 IBinder token = data.readStrongBinder(); 880 reply.writeNoException(); 881 reply.writeString(getPackageForToken(token)); 882 return true; 883 } 884 885 case GET_INTENT_SENDER_TRANSACTION: { 886 data.enforceInterface(IActivityManager.descriptor); 887 int type = data.readInt(); 888 String packageName = data.readString(); 889 IBinder token = data.readStrongBinder(); 890 String resultWho = data.readString(); 891 int requestCode = data.readInt(); 892 Intent[] requestIntents; 893 String[] requestResolvedTypes; 894 if (data.readInt() != 0) { 895 requestIntents = data.createTypedArray(Intent.CREATOR); 896 requestResolvedTypes = data.createStringArray(); 897 } else { 898 requestIntents = null; 899 requestResolvedTypes = null; 900 } 901 int fl = data.readInt(); 902 Bundle options = data.readInt() != 0 903 ? Bundle.CREATOR.createFromParcel(data) : null; 904 int userId = data.readInt(); 905 IIntentSender res = getIntentSender(type, packageName, token, 906 resultWho, requestCode, requestIntents, 907 requestResolvedTypes, fl, options, userId); 908 reply.writeNoException(); 909 reply.writeStrongBinder(res != null ? res.asBinder() : null); 910 return true; 911 } 912 913 case CANCEL_INTENT_SENDER_TRANSACTION: { 914 data.enforceInterface(IActivityManager.descriptor); 915 IIntentSender r = IIntentSender.Stub.asInterface( 916 data.readStrongBinder()); 917 cancelIntentSender(r); 918 reply.writeNoException(); 919 return true; 920 } 921 922 case GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION: { 923 data.enforceInterface(IActivityManager.descriptor); 924 IIntentSender r = IIntentSender.Stub.asInterface( 925 data.readStrongBinder()); 926 String res = getPackageForIntentSender(r); 927 reply.writeNoException(); 928 reply.writeString(res); 929 return true; 930 } 931 932 case GET_UID_FOR_INTENT_SENDER_TRANSACTION: { 933 data.enforceInterface(IActivityManager.descriptor); 934 IIntentSender r = IIntentSender.Stub.asInterface( 935 data.readStrongBinder()); 936 int res = getUidForIntentSender(r); 937 reply.writeNoException(); 938 reply.writeInt(res); 939 return true; 940 } 941 942 case HANDLE_INCOMING_USER_TRANSACTION: { 943 data.enforceInterface(IActivityManager.descriptor); 944 int callingPid = data.readInt(); 945 int callingUid = data.readInt(); 946 int userId = data.readInt(); 947 boolean allowAll = data.readInt() != 0 ; 948 boolean requireFull = data.readInt() != 0; 949 String name = data.readString(); 950 String callerPackage = data.readString(); 951 int res = handleIncomingUser(callingPid, callingUid, userId, allowAll, 952 requireFull, name, callerPackage); 953 reply.writeNoException(); 954 reply.writeInt(res); 955 return true; 956 } 957 958 case SET_PROCESS_LIMIT_TRANSACTION: { 959 data.enforceInterface(IActivityManager.descriptor); 960 int max = data.readInt(); 961 setProcessLimit(max); 962 reply.writeNoException(); 963 return true; 964 } 965 966 case GET_PROCESS_LIMIT_TRANSACTION: { 967 data.enforceInterface(IActivityManager.descriptor); 968 int limit = getProcessLimit(); 969 reply.writeNoException(); 970 reply.writeInt(limit); 971 return true; 972 } 973 974 case SET_PROCESS_FOREGROUND_TRANSACTION: { 975 data.enforceInterface(IActivityManager.descriptor); 976 IBinder token = data.readStrongBinder(); 977 int pid = data.readInt(); 978 boolean isForeground = data.readInt() != 0; 979 setProcessForeground(token, pid, isForeground); 980 reply.writeNoException(); 981 return true; 982 } 983 984 case CHECK_PERMISSION_TRANSACTION: { 985 data.enforceInterface(IActivityManager.descriptor); 986 String perm = data.readString(); 987 int pid = data.readInt(); 988 int uid = data.readInt(); 989 int res = checkPermission(perm, pid, uid); 990 reply.writeNoException(); 991 reply.writeInt(res); 992 return true; 993 } 994 995 case CHECK_URI_PERMISSION_TRANSACTION: { 996 data.enforceInterface(IActivityManager.descriptor); 997 Uri uri = Uri.CREATOR.createFromParcel(data); 998 int pid = data.readInt(); 999 int uid = data.readInt(); 1000 int mode = data.readInt(); 1001 int res = checkUriPermission(uri, pid, uid, mode); 1002 reply.writeNoException(); 1003 reply.writeInt(res); 1004 return true; 1005 } 1006 1007 case CLEAR_APP_DATA_TRANSACTION: { 1008 data.enforceInterface(IActivityManager.descriptor); 1009 String packageName = data.readString(); 1010 IPackageDataObserver observer = IPackageDataObserver.Stub.asInterface( 1011 data.readStrongBinder()); 1012 int userId = data.readInt(); 1013 boolean res = clearApplicationUserData(packageName, observer, userId); 1014 reply.writeNoException(); 1015 reply.writeInt(res ? 1 : 0); 1016 return true; 1017 } 1018 1019 case GRANT_URI_PERMISSION_TRANSACTION: { 1020 data.enforceInterface(IActivityManager.descriptor); 1021 IBinder b = data.readStrongBinder(); 1022 IApplicationThread app = ApplicationThreadNative.asInterface(b); 1023 String targetPkg = data.readString(); 1024 Uri uri = Uri.CREATOR.createFromParcel(data); 1025 int mode = data.readInt(); 1026 grantUriPermission(app, targetPkg, uri, mode); 1027 reply.writeNoException(); 1028 return true; 1029 } 1030 1031 case REVOKE_URI_PERMISSION_TRANSACTION: { 1032 data.enforceInterface(IActivityManager.descriptor); 1033 IBinder b = data.readStrongBinder(); 1034 IApplicationThread app = ApplicationThreadNative.asInterface(b); 1035 Uri uri = Uri.CREATOR.createFromParcel(data); 1036 int mode = data.readInt(); 1037 revokeUriPermission(app, uri, mode); 1038 reply.writeNoException(); 1039 return true; 1040 } 1041 1042 case SHOW_WAITING_FOR_DEBUGGER_TRANSACTION: { 1043 data.enforceInterface(IActivityManager.descriptor); 1044 IBinder b = data.readStrongBinder(); 1045 IApplicationThread app = ApplicationThreadNative.asInterface(b); 1046 boolean waiting = data.readInt() != 0; 1047 showWaitingForDebugger(app, waiting); 1048 reply.writeNoException(); 1049 return true; 1050 } 1051 1052 case GET_MEMORY_INFO_TRANSACTION: { 1053 data.enforceInterface(IActivityManager.descriptor); 1054 ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo(); 1055 getMemoryInfo(mi); 1056 reply.writeNoException(); 1057 mi.writeToParcel(reply, 0); 1058 return true; 1059 } 1060 1061 case UNHANDLED_BACK_TRANSACTION: { 1062 data.enforceInterface(IActivityManager.descriptor); 1063 unhandledBack(); 1064 reply.writeNoException(); 1065 return true; 1066 } 1067 1068 case OPEN_CONTENT_URI_TRANSACTION: { 1069 data.enforceInterface(IActivityManager.descriptor); 1070 Uri uri = Uri.parse(data.readString()); 1071 ParcelFileDescriptor pfd = openContentUri(uri); 1072 reply.writeNoException(); 1073 if (pfd != null) { 1074 reply.writeInt(1); 1075 pfd.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1076 } else { 1077 reply.writeInt(0); 1078 } 1079 return true; 1080 } 1081 1082 case GOING_TO_SLEEP_TRANSACTION: { 1083 data.enforceInterface(IActivityManager.descriptor); 1084 goingToSleep(); 1085 reply.writeNoException(); 1086 return true; 1087 } 1088 1089 case WAKING_UP_TRANSACTION: { 1090 data.enforceInterface(IActivityManager.descriptor); 1091 wakingUp(); 1092 reply.writeNoException(); 1093 return true; 1094 } 1095 1096 case SET_LOCK_SCREEN_SHOWN_TRANSACTION: { 1097 data.enforceInterface(IActivityManager.descriptor); 1098 setLockScreenShown(data.readInt() != 0); 1099 reply.writeNoException(); 1100 return true; 1101 } 1102 1103 case SET_DEBUG_APP_TRANSACTION: { 1104 data.enforceInterface(IActivityManager.descriptor); 1105 String pn = data.readString(); 1106 boolean wfd = data.readInt() != 0; 1107 boolean per = data.readInt() != 0; 1108 setDebugApp(pn, wfd, per); 1109 reply.writeNoException(); 1110 return true; 1111 } 1112 1113 case SET_ALWAYS_FINISH_TRANSACTION: { 1114 data.enforceInterface(IActivityManager.descriptor); 1115 boolean enabled = data.readInt() != 0; 1116 setAlwaysFinish(enabled); 1117 reply.writeNoException(); 1118 return true; 1119 } 1120 1121 case SET_ACTIVITY_CONTROLLER_TRANSACTION: { 1122 data.enforceInterface(IActivityManager.descriptor); 1123 IActivityController watcher = IActivityController.Stub.asInterface( 1124 data.readStrongBinder()); 1125 setActivityController(watcher); 1126 return true; 1127 } 1128 1129 case ENTER_SAFE_MODE_TRANSACTION: { 1130 data.enforceInterface(IActivityManager.descriptor); 1131 enterSafeMode(); 1132 reply.writeNoException(); 1133 return true; 1134 } 1135 1136 case NOTE_WAKEUP_ALARM_TRANSACTION: { 1137 data.enforceInterface(IActivityManager.descriptor); 1138 IIntentSender is = IIntentSender.Stub.asInterface( 1139 data.readStrongBinder()); 1140 noteWakeupAlarm(is); 1141 reply.writeNoException(); 1142 return true; 1143 } 1144 1145 case KILL_PIDS_TRANSACTION: { 1146 data.enforceInterface(IActivityManager.descriptor); 1147 int[] pids = data.createIntArray(); 1148 String reason = data.readString(); 1149 boolean secure = data.readInt() != 0; 1150 boolean res = killPids(pids, reason, secure); 1151 reply.writeNoException(); 1152 reply.writeInt(res ? 1 : 0); 1153 return true; 1154 } 1155 1156 case KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION: { 1157 data.enforceInterface(IActivityManager.descriptor); 1158 String reason = data.readString(); 1159 boolean res = killProcessesBelowForeground(reason); 1160 reply.writeNoException(); 1161 reply.writeInt(res ? 1 : 0); 1162 return true; 1163 } 1164 1165 case START_RUNNING_TRANSACTION: { 1166 data.enforceInterface(IActivityManager.descriptor); 1167 String pkg = data.readString(); 1168 String cls = data.readString(); 1169 String action = data.readString(); 1170 String indata = data.readString(); 1171 startRunning(pkg, cls, action, indata); 1172 reply.writeNoException(); 1173 return true; 1174 } 1175 1176 case HANDLE_APPLICATION_CRASH_TRANSACTION: { 1177 data.enforceInterface(IActivityManager.descriptor); 1178 IBinder app = data.readStrongBinder(); 1179 ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data); 1180 handleApplicationCrash(app, ci); 1181 reply.writeNoException(); 1182 return true; 1183 } 1184 1185 case HANDLE_APPLICATION_WTF_TRANSACTION: { 1186 data.enforceInterface(IActivityManager.descriptor); 1187 IBinder app = data.readStrongBinder(); 1188 String tag = data.readString(); 1189 ApplicationErrorReport.CrashInfo ci = new ApplicationErrorReport.CrashInfo(data); 1190 boolean res = handleApplicationWtf(app, tag, ci); 1191 reply.writeNoException(); 1192 reply.writeInt(res ? 1 : 0); 1193 return true; 1194 } 1195 1196 case HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION: { 1197 data.enforceInterface(IActivityManager.descriptor); 1198 IBinder app = data.readStrongBinder(); 1199 int violationMask = data.readInt(); 1200 StrictMode.ViolationInfo info = new StrictMode.ViolationInfo(data); 1201 handleApplicationStrictModeViolation(app, violationMask, info); 1202 reply.writeNoException(); 1203 return true; 1204 } 1205 1206 case SIGNAL_PERSISTENT_PROCESSES_TRANSACTION: { 1207 data.enforceInterface(IActivityManager.descriptor); 1208 int sig = data.readInt(); 1209 signalPersistentProcesses(sig); 1210 reply.writeNoException(); 1211 return true; 1212 } 1213 1214 case KILL_BACKGROUND_PROCESSES_TRANSACTION: { 1215 data.enforceInterface(IActivityManager.descriptor); 1216 String packageName = data.readString(); 1217 killBackgroundProcesses(packageName); 1218 reply.writeNoException(); 1219 return true; 1220 } 1221 1222 case KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION: { 1223 data.enforceInterface(IActivityManager.descriptor); 1224 killAllBackgroundProcesses(); 1225 reply.writeNoException(); 1226 return true; 1227 } 1228 1229 case FORCE_STOP_PACKAGE_TRANSACTION: { 1230 data.enforceInterface(IActivityManager.descriptor); 1231 String packageName = data.readString(); 1232 forceStopPackage(packageName); 1233 reply.writeNoException(); 1234 return true; 1235 } 1236 1237 case GET_MY_MEMORY_STATE_TRANSACTION: { 1238 data.enforceInterface(IActivityManager.descriptor); 1239 ActivityManager.RunningAppProcessInfo info = 1240 new ActivityManager.RunningAppProcessInfo(); 1241 getMyMemoryState(info); 1242 reply.writeNoException(); 1243 info.writeToParcel(reply, 0); 1244 return true; 1245 } 1246 1247 case GET_DEVICE_CONFIGURATION_TRANSACTION: { 1248 data.enforceInterface(IActivityManager.descriptor); 1249 ConfigurationInfo config = getDeviceConfigurationInfo(); 1250 reply.writeNoException(); 1251 config.writeToParcel(reply, 0); 1252 return true; 1253 } 1254 1255 case PROFILE_CONTROL_TRANSACTION: { 1256 data.enforceInterface(IActivityManager.descriptor); 1257 String process = data.readString(); 1258 boolean start = data.readInt() != 0; 1259 int profileType = data.readInt(); 1260 String path = data.readString(); 1261 ParcelFileDescriptor fd = data.readInt() != 0 1262 ? data.readFileDescriptor() : null; 1263 boolean res = profileControl(process, start, path, fd, profileType); 1264 reply.writeNoException(); 1265 reply.writeInt(res ? 1 : 0); 1266 return true; 1267 } 1268 1269 case SHUTDOWN_TRANSACTION: { 1270 data.enforceInterface(IActivityManager.descriptor); 1271 boolean res = shutdown(data.readInt()); 1272 reply.writeNoException(); 1273 reply.writeInt(res ? 1 : 0); 1274 return true; 1275 } 1276 1277 case STOP_APP_SWITCHES_TRANSACTION: { 1278 data.enforceInterface(IActivityManager.descriptor); 1279 stopAppSwitches(); 1280 reply.writeNoException(); 1281 return true; 1282 } 1283 1284 case RESUME_APP_SWITCHES_TRANSACTION: { 1285 data.enforceInterface(IActivityManager.descriptor); 1286 resumeAppSwitches(); 1287 reply.writeNoException(); 1288 return true; 1289 } 1290 1291 case PEEK_SERVICE_TRANSACTION: { 1292 data.enforceInterface(IActivityManager.descriptor); 1293 Intent service = Intent.CREATOR.createFromParcel(data); 1294 String resolvedType = data.readString(); 1295 IBinder binder = peekService(service, resolvedType); 1296 reply.writeNoException(); 1297 reply.writeStrongBinder(binder); 1298 return true; 1299 } 1300 1301 case START_BACKUP_AGENT_TRANSACTION: { 1302 data.enforceInterface(IActivityManager.descriptor); 1303 ApplicationInfo info = ApplicationInfo.CREATOR.createFromParcel(data); 1304 int backupRestoreMode = data.readInt(); 1305 boolean success = bindBackupAgent(info, backupRestoreMode); 1306 reply.writeNoException(); 1307 reply.writeInt(success ? 1 : 0); 1308 return true; 1309 } 1310 1311 case BACKUP_AGENT_CREATED_TRANSACTION: { 1312 data.enforceInterface(IActivityManager.descriptor); 1313 String packageName = data.readString(); 1314 IBinder agent = data.readStrongBinder(); 1315 backupAgentCreated(packageName, agent); 1316 reply.writeNoException(); 1317 return true; 1318 } 1319 1320 case UNBIND_BACKUP_AGENT_TRANSACTION: { 1321 data.enforceInterface(IActivityManager.descriptor); 1322 ApplicationInfo info = ApplicationInfo.CREATOR.createFromParcel(data); 1323 unbindBackupAgent(info); 1324 reply.writeNoException(); 1325 return true; 1326 } 1327 1328 case KILL_APPLICATION_WITH_APPID_TRANSACTION: { 1329 data.enforceInterface(IActivityManager.descriptor); 1330 String pkg = data.readString(); 1331 int appid = data.readInt(); 1332 killApplicationWithAppId(pkg, appid); 1333 reply.writeNoException(); 1334 return true; 1335 } 1336 1337 case CLOSE_SYSTEM_DIALOGS_TRANSACTION: { 1338 data.enforceInterface(IActivityManager.descriptor); 1339 String reason = data.readString(); 1340 closeSystemDialogs(reason); 1341 reply.writeNoException(); 1342 return true; 1343 } 1344 1345 case GET_PROCESS_MEMORY_INFO_TRANSACTION: { 1346 data.enforceInterface(IActivityManager.descriptor); 1347 int[] pids = data.createIntArray(); 1348 Debug.MemoryInfo[] res = getProcessMemoryInfo(pids); 1349 reply.writeNoException(); 1350 reply.writeTypedArray(res, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1351 return true; 1352 } 1353 1354 case KILL_APPLICATION_PROCESS_TRANSACTION: { 1355 data.enforceInterface(IActivityManager.descriptor); 1356 String processName = data.readString(); 1357 int uid = data.readInt(); 1358 killApplicationProcess(processName, uid); 1359 reply.writeNoException(); 1360 return true; 1361 } 1362 1363 case OVERRIDE_PENDING_TRANSITION_TRANSACTION: { 1364 data.enforceInterface(IActivityManager.descriptor); 1365 IBinder token = data.readStrongBinder(); 1366 String packageName = data.readString(); 1367 int enterAnim = data.readInt(); 1368 int exitAnim = data.readInt(); 1369 overridePendingTransition(token, packageName, enterAnim, exitAnim); 1370 reply.writeNoException(); 1371 return true; 1372 } 1373 1374 case IS_USER_A_MONKEY_TRANSACTION: { 1375 data.enforceInterface(IActivityManager.descriptor); 1376 boolean areThey = isUserAMonkey(); 1377 reply.writeNoException(); 1378 reply.writeInt(areThey ? 1 : 0); 1379 return true; 1380 } 1381 1382 case FINISH_HEAVY_WEIGHT_APP_TRANSACTION: { 1383 data.enforceInterface(IActivityManager.descriptor); 1384 finishHeavyWeightApp(); 1385 reply.writeNoException(); 1386 return true; 1387 } 1388 1389 case IS_IMMERSIVE_TRANSACTION: { 1390 data.enforceInterface(IActivityManager.descriptor); 1391 IBinder token = data.readStrongBinder(); 1392 boolean isit = isImmersive(token); 1393 reply.writeNoException(); 1394 reply.writeInt(isit ? 1 : 0); 1395 return true; 1396 } 1397 1398 case SET_IMMERSIVE_TRANSACTION: { 1399 data.enforceInterface(IActivityManager.descriptor); 1400 IBinder token = data.readStrongBinder(); 1401 boolean imm = data.readInt() == 1; 1402 setImmersive(token, imm); 1403 reply.writeNoException(); 1404 return true; 1405 } 1406 1407 case IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION: { 1408 data.enforceInterface(IActivityManager.descriptor); 1409 boolean isit = isTopActivityImmersive(); 1410 reply.writeNoException(); 1411 reply.writeInt(isit ? 1 : 0); 1412 return true; 1413 } 1414 1415 case CRASH_APPLICATION_TRANSACTION: { 1416 data.enforceInterface(IActivityManager.descriptor); 1417 int uid = data.readInt(); 1418 int initialPid = data.readInt(); 1419 String packageName = data.readString(); 1420 String message = data.readString(); 1421 crashApplication(uid, initialPid, packageName, message); 1422 reply.writeNoException(); 1423 return true; 1424 } 1425 1426 case GET_PROVIDER_MIME_TYPE_TRANSACTION: { 1427 data.enforceInterface(IActivityManager.descriptor); 1428 Uri uri = Uri.CREATOR.createFromParcel(data); 1429 int userId = data.readInt(); 1430 String type = getProviderMimeType(uri, userId); 1431 reply.writeNoException(); 1432 reply.writeString(type); 1433 return true; 1434 } 1435 1436 case NEW_URI_PERMISSION_OWNER_TRANSACTION: { 1437 data.enforceInterface(IActivityManager.descriptor); 1438 String name = data.readString(); 1439 IBinder perm = newUriPermissionOwner(name); 1440 reply.writeNoException(); 1441 reply.writeStrongBinder(perm); 1442 return true; 1443 } 1444 1445 case GRANT_URI_PERMISSION_FROM_OWNER_TRANSACTION: { 1446 data.enforceInterface(IActivityManager.descriptor); 1447 IBinder owner = data.readStrongBinder(); 1448 int fromUid = data.readInt(); 1449 String targetPkg = data.readString(); 1450 Uri uri = Uri.CREATOR.createFromParcel(data); 1451 int mode = data.readInt(); 1452 grantUriPermissionFromOwner(owner, fromUid, targetPkg, uri, mode); 1453 reply.writeNoException(); 1454 return true; 1455 } 1456 1457 case REVOKE_URI_PERMISSION_FROM_OWNER_TRANSACTION: { 1458 data.enforceInterface(IActivityManager.descriptor); 1459 IBinder owner = data.readStrongBinder(); 1460 Uri uri = null; 1461 if (data.readInt() != 0) { 1462 Uri.CREATOR.createFromParcel(data); 1463 } 1464 int mode = data.readInt(); 1465 revokeUriPermissionFromOwner(owner, uri, mode); 1466 reply.writeNoException(); 1467 return true; 1468 } 1469 1470 case CHECK_GRANT_URI_PERMISSION_TRANSACTION: { 1471 data.enforceInterface(IActivityManager.descriptor); 1472 int callingUid = data.readInt(); 1473 String targetPkg = data.readString(); 1474 Uri uri = Uri.CREATOR.createFromParcel(data); 1475 int modeFlags = data.readInt(); 1476 int res = checkGrantUriPermission(callingUid, targetPkg, uri, modeFlags); 1477 reply.writeNoException(); 1478 reply.writeInt(res); 1479 return true; 1480 } 1481 1482 case DUMP_HEAP_TRANSACTION: { 1483 data.enforceInterface(IActivityManager.descriptor); 1484 String process = data.readString(); 1485 boolean managed = data.readInt() != 0; 1486 String path = data.readString(); 1487 ParcelFileDescriptor fd = data.readInt() != 0 1488 ? data.readFileDescriptor() : null; 1489 boolean res = dumpHeap(process, managed, path, fd); 1490 reply.writeNoException(); 1491 reply.writeInt(res ? 1 : 0); 1492 return true; 1493 } 1494 1495 case START_ACTIVITIES_TRANSACTION: 1496 { 1497 data.enforceInterface(IActivityManager.descriptor); 1498 IBinder b = data.readStrongBinder(); 1499 IApplicationThread app = ApplicationThreadNative.asInterface(b); 1500 Intent[] intents = data.createTypedArray(Intent.CREATOR); 1501 String[] resolvedTypes = data.createStringArray(); 1502 IBinder resultTo = data.readStrongBinder(); 1503 Bundle options = data.readInt() != 0 1504 ? Bundle.CREATOR.createFromParcel(data) : null; 1505 int result = startActivities(app, intents, resolvedTypes, resultTo, 1506 options); 1507 reply.writeNoException(); 1508 reply.writeInt(result); 1509 return true; 1510 } 1511 1512 case GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION: 1513 { 1514 data.enforceInterface(IActivityManager.descriptor); 1515 int mode = getFrontActivityScreenCompatMode(); 1516 reply.writeNoException(); 1517 reply.writeInt(mode); 1518 return true; 1519 } 1520 1521 case SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION: 1522 { 1523 data.enforceInterface(IActivityManager.descriptor); 1524 int mode = data.readInt(); 1525 setFrontActivityScreenCompatMode(mode); 1526 reply.writeNoException(); 1527 reply.writeInt(mode); 1528 return true; 1529 } 1530 1531 case GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION: 1532 { 1533 data.enforceInterface(IActivityManager.descriptor); 1534 String pkg = data.readString(); 1535 int mode = getPackageScreenCompatMode(pkg); 1536 reply.writeNoException(); 1537 reply.writeInt(mode); 1538 return true; 1539 } 1540 1541 case SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION: 1542 { 1543 data.enforceInterface(IActivityManager.descriptor); 1544 String pkg = data.readString(); 1545 int mode = data.readInt(); 1546 setPackageScreenCompatMode(pkg, mode); 1547 reply.writeNoException(); 1548 return true; 1549 } 1550 1551 case SWITCH_USER_TRANSACTION: { 1552 data.enforceInterface(IActivityManager.descriptor); 1553 int userid = data.readInt(); 1554 boolean result = switchUser(userid); 1555 reply.writeNoException(); 1556 reply.writeInt(result ? 1 : 0); 1557 return true; 1558 } 1559 1560 case STOP_USER_TRANSACTION: { 1561 data.enforceInterface(IActivityManager.descriptor); 1562 int userid = data.readInt(); 1563 IStopUserCallback callback = IStopUserCallback.Stub.asInterface( 1564 data.readStrongBinder()); 1565 int result = stopUser(userid, callback); 1566 reply.writeNoException(); 1567 reply.writeInt(result); 1568 return true; 1569 } 1570 1571 case GET_CURRENT_USER_TRANSACTION: { 1572 data.enforceInterface(IActivityManager.descriptor); 1573 UserInfo userInfo = getCurrentUser(); 1574 reply.writeNoException(); 1575 userInfo.writeToParcel(reply, 0); 1576 return true; 1577 } 1578 1579 case IS_USER_RUNNING_TRANSACTION: { 1580 data.enforceInterface(IActivityManager.descriptor); 1581 int userid = data.readInt(); 1582 boolean result = isUserRunning(userid); 1583 reply.writeNoException(); 1584 reply.writeInt(result ? 1 : 0); 1585 return true; 1586 } 1587 1588 case REMOVE_SUB_TASK_TRANSACTION: 1589 { 1590 data.enforceInterface(IActivityManager.descriptor); 1591 int taskId = data.readInt(); 1592 int subTaskIndex = data.readInt(); 1593 boolean result = removeSubTask(taskId, subTaskIndex); 1594 reply.writeNoException(); 1595 reply.writeInt(result ? 1 : 0); 1596 return true; 1597 } 1598 1599 case REMOVE_TASK_TRANSACTION: 1600 { 1601 data.enforceInterface(IActivityManager.descriptor); 1602 int taskId = data.readInt(); 1603 int fl = data.readInt(); 1604 boolean result = removeTask(taskId, fl); 1605 reply.writeNoException(); 1606 reply.writeInt(result ? 1 : 0); 1607 return true; 1608 } 1609 1610 case REGISTER_PROCESS_OBSERVER_TRANSACTION: { 1611 data.enforceInterface(IActivityManager.descriptor); 1612 IProcessObserver observer = IProcessObserver.Stub.asInterface( 1613 data.readStrongBinder()); 1614 registerProcessObserver(observer); 1615 return true; 1616 } 1617 1618 case UNREGISTER_PROCESS_OBSERVER_TRANSACTION: { 1619 data.enforceInterface(IActivityManager.descriptor); 1620 IProcessObserver observer = IProcessObserver.Stub.asInterface( 1621 data.readStrongBinder()); 1622 unregisterProcessObserver(observer); 1623 return true; 1624 } 1625 1626 case GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION: 1627 { 1628 data.enforceInterface(IActivityManager.descriptor); 1629 String pkg = data.readString(); 1630 boolean ask = getPackageAskScreenCompat(pkg); 1631 reply.writeNoException(); 1632 reply.writeInt(ask ? 1 : 0); 1633 return true; 1634 } 1635 1636 case SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION: 1637 { 1638 data.enforceInterface(IActivityManager.descriptor); 1639 String pkg = data.readString(); 1640 boolean ask = data.readInt() != 0; 1641 setPackageAskScreenCompat(pkg, ask); 1642 reply.writeNoException(); 1643 return true; 1644 } 1645 1646 case IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION: { 1647 data.enforceInterface(IActivityManager.descriptor); 1648 IIntentSender r = IIntentSender.Stub.asInterface( 1649 data.readStrongBinder()); 1650 boolean res = isIntentSenderTargetedToPackage(r); 1651 reply.writeNoException(); 1652 reply.writeInt(res ? 1 : 0); 1653 return true; 1654 } 1655 1656 case IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION: { 1657 data.enforceInterface(IActivityManager.descriptor); 1658 IIntentSender r = IIntentSender.Stub.asInterface( 1659 data.readStrongBinder()); 1660 boolean res = isIntentSenderAnActivity(r); 1661 reply.writeNoException(); 1662 reply.writeInt(res ? 1 : 0); 1663 return true; 1664 } 1665 1666 case UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION: { 1667 data.enforceInterface(IActivityManager.descriptor); 1668 Configuration config = Configuration.CREATOR.createFromParcel(data); 1669 updatePersistentConfiguration(config); 1670 reply.writeNoException(); 1671 return true; 1672 } 1673 1674 case GET_PROCESS_PSS_TRANSACTION: { 1675 data.enforceInterface(IActivityManager.descriptor); 1676 int[] pids = data.createIntArray(); 1677 long[] pss = getProcessPss(pids); 1678 reply.writeNoException(); 1679 reply.writeLongArray(pss); 1680 return true; 1681 } 1682 1683 case SHOW_BOOT_MESSAGE_TRANSACTION: { 1684 data.enforceInterface(IActivityManager.descriptor); 1685 CharSequence msg = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(data); 1686 boolean always = data.readInt() != 0; 1687 showBootMessage(msg, always); 1688 reply.writeNoException(); 1689 return true; 1690 } 1691 1692 case DISMISS_KEYGUARD_ON_NEXT_ACTIVITY_TRANSACTION: { 1693 data.enforceInterface(IActivityManager.descriptor); 1694 dismissKeyguardOnNextActivity(); 1695 reply.writeNoException(); 1696 return true; 1697 } 1698 1699 case TARGET_TASK_AFFINITY_MATCHES_ACTIVITY_TRANSACTION: { 1700 data.enforceInterface(IActivityManager.descriptor); 1701 IBinder token = data.readStrongBinder(); 1702 String destAffinity = data.readString(); 1703 boolean res = targetTaskAffinityMatchesActivity(token, destAffinity); 1704 reply.writeNoException(); 1705 reply.writeInt(res ? 1 : 0); 1706 return true; 1707 } 1708 1709 case NAVIGATE_UP_TO_TRANSACTION: { 1710 data.enforceInterface(IActivityManager.descriptor); 1711 IBinder token = data.readStrongBinder(); 1712 Intent target = Intent.CREATOR.createFromParcel(data); 1713 int resultCode = data.readInt(); 1714 Intent resultData = null; 1715 if (data.readInt() != 0) { 1716 resultData = Intent.CREATOR.createFromParcel(data); 1717 } 1718 boolean res = navigateUpTo(token, target, resultCode, resultData); 1719 reply.writeNoException(); 1720 reply.writeInt(res ? 1 : 0); 1721 return true; 1722 } 1723 1724 case GET_LAUNCHED_FROM_UID_TRANSACTION: { 1725 data.enforceInterface(IActivityManager.descriptor); 1726 IBinder token = data.readStrongBinder(); 1727 int res = getLaunchedFromUid(token); 1728 reply.writeNoException(); 1729 reply.writeInt(res); 1730 return true; 1731 } 1732 1733 } 1734 1735 return super.onTransact(code, data, reply, flags); 1736 } 1737 1738 public IBinder asBinder() { 1739 return this; 1740 } 1741 1742 private static final Singleton<IActivityManager> gDefault = new Singleton<IActivityManager>() { 1743 protected IActivityManager create() { 1744 IBinder b = ServiceManager.getService("activity"); 1745 if (false) { 1746 Log.v("ActivityManager", "default service binder = " + b); 1747 } 1748 IActivityManager am = asInterface(b); 1749 if (false) { 1750 Log.v("ActivityManager", "default service = " + am); 1751 } 1752 return am; 1753 } 1754 }; 1755} 1756 1757class ActivityManagerProxy implements IActivityManager 1758{ 1759 public ActivityManagerProxy(IBinder remote) 1760 { 1761 mRemote = remote; 1762 } 1763 1764 public IBinder asBinder() 1765 { 1766 return mRemote; 1767 } 1768 1769 public int startActivity(IApplicationThread caller, Intent intent, 1770 String resolvedType, IBinder resultTo, String resultWho, int requestCode, 1771 int startFlags, String profileFile, 1772 ParcelFileDescriptor profileFd, Bundle options) throws RemoteException { 1773 Parcel data = Parcel.obtain(); 1774 Parcel reply = Parcel.obtain(); 1775 data.writeInterfaceToken(IActivityManager.descriptor); 1776 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 1777 intent.writeToParcel(data, 0); 1778 data.writeString(resolvedType); 1779 data.writeStrongBinder(resultTo); 1780 data.writeString(resultWho); 1781 data.writeInt(requestCode); 1782 data.writeInt(startFlags); 1783 data.writeString(profileFile); 1784 if (profileFd != null) { 1785 data.writeInt(1); 1786 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1787 } else { 1788 data.writeInt(0); 1789 } 1790 if (options != null) { 1791 data.writeInt(1); 1792 options.writeToParcel(data, 0); 1793 } else { 1794 data.writeInt(0); 1795 } 1796 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0); 1797 reply.readException(); 1798 int result = reply.readInt(); 1799 reply.recycle(); 1800 data.recycle(); 1801 return result; 1802 } 1803 1804 public int startActivityAsUser(IApplicationThread caller, Intent intent, 1805 String resolvedType, IBinder resultTo, String resultWho, int requestCode, 1806 int startFlags, String profileFile, 1807 ParcelFileDescriptor profileFd, Bundle options, int userId) throws RemoteException { 1808 Parcel data = Parcel.obtain(); 1809 Parcel reply = Parcel.obtain(); 1810 data.writeInterfaceToken(IActivityManager.descriptor); 1811 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 1812 intent.writeToParcel(data, 0); 1813 data.writeString(resolvedType); 1814 data.writeStrongBinder(resultTo); 1815 data.writeString(resultWho); 1816 data.writeInt(requestCode); 1817 data.writeInt(startFlags); 1818 data.writeString(profileFile); 1819 if (profileFd != null) { 1820 data.writeInt(1); 1821 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1822 } else { 1823 data.writeInt(0); 1824 } 1825 if (options != null) { 1826 data.writeInt(1); 1827 options.writeToParcel(data, 0); 1828 } else { 1829 data.writeInt(0); 1830 } 1831 data.writeInt(userId); 1832 mRemote.transact(START_ACTIVITY_AS_USER_TRANSACTION, data, reply, 0); 1833 reply.readException(); 1834 int result = reply.readInt(); 1835 reply.recycle(); 1836 data.recycle(); 1837 return result; 1838 } 1839 public WaitResult startActivityAndWait(IApplicationThread caller, Intent intent, 1840 String resolvedType, IBinder resultTo, String resultWho, 1841 int requestCode, int startFlags, String profileFile, 1842 ParcelFileDescriptor profileFd, Bundle options, int userId) throws RemoteException { 1843 Parcel data = Parcel.obtain(); 1844 Parcel reply = Parcel.obtain(); 1845 data.writeInterfaceToken(IActivityManager.descriptor); 1846 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 1847 intent.writeToParcel(data, 0); 1848 data.writeString(resolvedType); 1849 data.writeStrongBinder(resultTo); 1850 data.writeString(resultWho); 1851 data.writeInt(requestCode); 1852 data.writeInt(startFlags); 1853 data.writeString(profileFile); 1854 if (profileFd != null) { 1855 data.writeInt(1); 1856 profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 1857 } else { 1858 data.writeInt(0); 1859 } 1860 if (options != null) { 1861 data.writeInt(1); 1862 options.writeToParcel(data, 0); 1863 } else { 1864 data.writeInt(0); 1865 } 1866 data.writeInt(userId); 1867 mRemote.transact(START_ACTIVITY_AND_WAIT_TRANSACTION, data, reply, 0); 1868 reply.readException(); 1869 WaitResult result = WaitResult.CREATOR.createFromParcel(reply); 1870 reply.recycle(); 1871 data.recycle(); 1872 return result; 1873 } 1874 public int startActivityWithConfig(IApplicationThread caller, Intent intent, 1875 String resolvedType, IBinder resultTo, String resultWho, 1876 int requestCode, int startFlags, Configuration config, 1877 Bundle options, int userId) throws RemoteException { 1878 Parcel data = Parcel.obtain(); 1879 Parcel reply = Parcel.obtain(); 1880 data.writeInterfaceToken(IActivityManager.descriptor); 1881 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 1882 intent.writeToParcel(data, 0); 1883 data.writeString(resolvedType); 1884 data.writeStrongBinder(resultTo); 1885 data.writeString(resultWho); 1886 data.writeInt(requestCode); 1887 data.writeInt(startFlags); 1888 config.writeToParcel(data, 0); 1889 if (options != null) { 1890 data.writeInt(1); 1891 options.writeToParcel(data, 0); 1892 } else { 1893 data.writeInt(0); 1894 } 1895 data.writeInt(userId); 1896 mRemote.transact(START_ACTIVITY_TRANSACTION, data, reply, 0); 1897 reply.readException(); 1898 int result = reply.readInt(); 1899 reply.recycle(); 1900 data.recycle(); 1901 return result; 1902 } 1903 public int startActivityIntentSender(IApplicationThread caller, 1904 IntentSender intent, Intent fillInIntent, String resolvedType, 1905 IBinder resultTo, String resultWho, int requestCode, 1906 int flagsMask, int flagsValues, Bundle options) throws RemoteException { 1907 Parcel data = Parcel.obtain(); 1908 Parcel reply = Parcel.obtain(); 1909 data.writeInterfaceToken(IActivityManager.descriptor); 1910 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 1911 intent.writeToParcel(data, 0); 1912 if (fillInIntent != null) { 1913 data.writeInt(1); 1914 fillInIntent.writeToParcel(data, 0); 1915 } else { 1916 data.writeInt(0); 1917 } 1918 data.writeString(resolvedType); 1919 data.writeStrongBinder(resultTo); 1920 data.writeString(resultWho); 1921 data.writeInt(requestCode); 1922 data.writeInt(flagsMask); 1923 data.writeInt(flagsValues); 1924 if (options != null) { 1925 data.writeInt(1); 1926 options.writeToParcel(data, 0); 1927 } else { 1928 data.writeInt(0); 1929 } 1930 mRemote.transact(START_ACTIVITY_INTENT_SENDER_TRANSACTION, data, reply, 0); 1931 reply.readException(); 1932 int result = reply.readInt(); 1933 reply.recycle(); 1934 data.recycle(); 1935 return result; 1936 } 1937 public boolean startNextMatchingActivity(IBinder callingActivity, 1938 Intent intent, Bundle options) throws RemoteException { 1939 Parcel data = Parcel.obtain(); 1940 Parcel reply = Parcel.obtain(); 1941 data.writeInterfaceToken(IActivityManager.descriptor); 1942 data.writeStrongBinder(callingActivity); 1943 intent.writeToParcel(data, 0); 1944 if (options != null) { 1945 data.writeInt(1); 1946 options.writeToParcel(data, 0); 1947 } else { 1948 data.writeInt(0); 1949 } 1950 mRemote.transact(START_NEXT_MATCHING_ACTIVITY_TRANSACTION, data, reply, 0); 1951 reply.readException(); 1952 int result = reply.readInt(); 1953 reply.recycle(); 1954 data.recycle(); 1955 return result != 0; 1956 } 1957 public boolean finishActivity(IBinder token, int resultCode, Intent resultData) 1958 throws RemoteException { 1959 Parcel data = Parcel.obtain(); 1960 Parcel reply = Parcel.obtain(); 1961 data.writeInterfaceToken(IActivityManager.descriptor); 1962 data.writeStrongBinder(token); 1963 data.writeInt(resultCode); 1964 if (resultData != null) { 1965 data.writeInt(1); 1966 resultData.writeToParcel(data, 0); 1967 } else { 1968 data.writeInt(0); 1969 } 1970 mRemote.transact(FINISH_ACTIVITY_TRANSACTION, data, reply, 0); 1971 reply.readException(); 1972 boolean res = reply.readInt() != 0; 1973 data.recycle(); 1974 reply.recycle(); 1975 return res; 1976 } 1977 public void finishSubActivity(IBinder token, String resultWho, int requestCode) throws RemoteException 1978 { 1979 Parcel data = Parcel.obtain(); 1980 Parcel reply = Parcel.obtain(); 1981 data.writeInterfaceToken(IActivityManager.descriptor); 1982 data.writeStrongBinder(token); 1983 data.writeString(resultWho); 1984 data.writeInt(requestCode); 1985 mRemote.transact(FINISH_SUB_ACTIVITY_TRANSACTION, data, reply, 0); 1986 reply.readException(); 1987 data.recycle(); 1988 reply.recycle(); 1989 } 1990 public boolean finishActivityAffinity(IBinder token) throws RemoteException { 1991 Parcel data = Parcel.obtain(); 1992 Parcel reply = Parcel.obtain(); 1993 data.writeInterfaceToken(IActivityManager.descriptor); 1994 data.writeStrongBinder(token); 1995 mRemote.transact(FINISH_ACTIVITY_AFFINITY_TRANSACTION, data, reply, 0); 1996 reply.readException(); 1997 boolean res = reply.readInt() != 0; 1998 data.recycle(); 1999 reply.recycle(); 2000 return res; 2001 } 2002 public boolean willActivityBeVisible(IBinder token) throws RemoteException { 2003 Parcel data = Parcel.obtain(); 2004 Parcel reply = Parcel.obtain(); 2005 data.writeInterfaceToken(IActivityManager.descriptor); 2006 data.writeStrongBinder(token); 2007 mRemote.transact(WILL_ACTIVITY_BE_VISIBLE_TRANSACTION, data, reply, 0); 2008 reply.readException(); 2009 boolean res = reply.readInt() != 0; 2010 data.recycle(); 2011 reply.recycle(); 2012 return res; 2013 } 2014 public Intent registerReceiver(IApplicationThread caller, String packageName, 2015 IIntentReceiver receiver, 2016 IntentFilter filter, String perm, int userId) throws RemoteException 2017 { 2018 Parcel data = Parcel.obtain(); 2019 Parcel reply = Parcel.obtain(); 2020 data.writeInterfaceToken(IActivityManager.descriptor); 2021 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2022 data.writeString(packageName); 2023 data.writeStrongBinder(receiver != null ? receiver.asBinder() : null); 2024 filter.writeToParcel(data, 0); 2025 data.writeString(perm); 2026 data.writeInt(userId); 2027 mRemote.transact(REGISTER_RECEIVER_TRANSACTION, data, reply, 0); 2028 reply.readException(); 2029 Intent intent = null; 2030 int haveIntent = reply.readInt(); 2031 if (haveIntent != 0) { 2032 intent = Intent.CREATOR.createFromParcel(reply); 2033 } 2034 reply.recycle(); 2035 data.recycle(); 2036 return intent; 2037 } 2038 public void unregisterReceiver(IIntentReceiver receiver) throws RemoteException 2039 { 2040 Parcel data = Parcel.obtain(); 2041 Parcel reply = Parcel.obtain(); 2042 data.writeInterfaceToken(IActivityManager.descriptor); 2043 data.writeStrongBinder(receiver.asBinder()); 2044 mRemote.transact(UNREGISTER_RECEIVER_TRANSACTION, data, reply, 0); 2045 reply.readException(); 2046 data.recycle(); 2047 reply.recycle(); 2048 } 2049 public int broadcastIntent(IApplicationThread caller, 2050 Intent intent, String resolvedType, IIntentReceiver resultTo, 2051 int resultCode, String resultData, Bundle map, 2052 String requiredPermission, boolean serialized, 2053 boolean sticky, int userId) throws RemoteException 2054 { 2055 Parcel data = Parcel.obtain(); 2056 Parcel reply = Parcel.obtain(); 2057 data.writeInterfaceToken(IActivityManager.descriptor); 2058 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2059 intent.writeToParcel(data, 0); 2060 data.writeString(resolvedType); 2061 data.writeStrongBinder(resultTo != null ? resultTo.asBinder() : null); 2062 data.writeInt(resultCode); 2063 data.writeString(resultData); 2064 data.writeBundle(map); 2065 data.writeString(requiredPermission); 2066 data.writeInt(serialized ? 1 : 0); 2067 data.writeInt(sticky ? 1 : 0); 2068 data.writeInt(userId); 2069 mRemote.transact(BROADCAST_INTENT_TRANSACTION, data, reply, 0); 2070 reply.readException(); 2071 int res = reply.readInt(); 2072 reply.recycle(); 2073 data.recycle(); 2074 return res; 2075 } 2076 public void unbroadcastIntent(IApplicationThread caller, Intent intent, int userId) 2077 throws RemoteException 2078 { 2079 Parcel data = Parcel.obtain(); 2080 Parcel reply = Parcel.obtain(); 2081 data.writeInterfaceToken(IActivityManager.descriptor); 2082 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2083 intent.writeToParcel(data, 0); 2084 data.writeInt(userId); 2085 mRemote.transact(UNBROADCAST_INTENT_TRANSACTION, data, reply, 0); 2086 reply.readException(); 2087 data.recycle(); 2088 reply.recycle(); 2089 } 2090 public void finishReceiver(IBinder who, int resultCode, String resultData, Bundle map, boolean abortBroadcast) throws RemoteException 2091 { 2092 Parcel data = Parcel.obtain(); 2093 Parcel reply = Parcel.obtain(); 2094 data.writeInterfaceToken(IActivityManager.descriptor); 2095 data.writeStrongBinder(who); 2096 data.writeInt(resultCode); 2097 data.writeString(resultData); 2098 data.writeBundle(map); 2099 data.writeInt(abortBroadcast ? 1 : 0); 2100 mRemote.transact(FINISH_RECEIVER_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2101 reply.readException(); 2102 data.recycle(); 2103 reply.recycle(); 2104 } 2105 public void attachApplication(IApplicationThread app) throws RemoteException 2106 { 2107 Parcel data = Parcel.obtain(); 2108 Parcel reply = Parcel.obtain(); 2109 data.writeInterfaceToken(IActivityManager.descriptor); 2110 data.writeStrongBinder(app.asBinder()); 2111 mRemote.transact(ATTACH_APPLICATION_TRANSACTION, data, reply, 0); 2112 reply.readException(); 2113 data.recycle(); 2114 reply.recycle(); 2115 } 2116 public void activityIdle(IBinder token, Configuration config, boolean stopProfiling) 2117 throws RemoteException 2118 { 2119 Parcel data = Parcel.obtain(); 2120 Parcel reply = Parcel.obtain(); 2121 data.writeInterfaceToken(IActivityManager.descriptor); 2122 data.writeStrongBinder(token); 2123 if (config != null) { 2124 data.writeInt(1); 2125 config.writeToParcel(data, 0); 2126 } else { 2127 data.writeInt(0); 2128 } 2129 data.writeInt(stopProfiling ? 1 : 0); 2130 mRemote.transact(ACTIVITY_IDLE_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2131 reply.readException(); 2132 data.recycle(); 2133 reply.recycle(); 2134 } 2135 public void activityPaused(IBinder token) throws RemoteException 2136 { 2137 Parcel data = Parcel.obtain(); 2138 Parcel reply = Parcel.obtain(); 2139 data.writeInterfaceToken(IActivityManager.descriptor); 2140 data.writeStrongBinder(token); 2141 mRemote.transact(ACTIVITY_PAUSED_TRANSACTION, data, reply, 0); 2142 reply.readException(); 2143 data.recycle(); 2144 reply.recycle(); 2145 } 2146 public void activityStopped(IBinder token, Bundle state, 2147 Bitmap thumbnail, CharSequence description) throws RemoteException 2148 { 2149 Parcel data = Parcel.obtain(); 2150 Parcel reply = Parcel.obtain(); 2151 data.writeInterfaceToken(IActivityManager.descriptor); 2152 data.writeStrongBinder(token); 2153 data.writeBundle(state); 2154 if (thumbnail != null) { 2155 data.writeInt(1); 2156 thumbnail.writeToParcel(data, 0); 2157 } else { 2158 data.writeInt(0); 2159 } 2160 TextUtils.writeToParcel(description, data, 0); 2161 mRemote.transact(ACTIVITY_STOPPED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2162 reply.readException(); 2163 data.recycle(); 2164 reply.recycle(); 2165 } 2166 public void activitySlept(IBinder token) throws RemoteException 2167 { 2168 Parcel data = Parcel.obtain(); 2169 Parcel reply = Parcel.obtain(); 2170 data.writeInterfaceToken(IActivityManager.descriptor); 2171 data.writeStrongBinder(token); 2172 mRemote.transact(ACTIVITY_SLEPT_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2173 reply.readException(); 2174 data.recycle(); 2175 reply.recycle(); 2176 } 2177 public void activityDestroyed(IBinder token) throws RemoteException 2178 { 2179 Parcel data = Parcel.obtain(); 2180 Parcel reply = Parcel.obtain(); 2181 data.writeInterfaceToken(IActivityManager.descriptor); 2182 data.writeStrongBinder(token); 2183 mRemote.transact(ACTIVITY_DESTROYED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2184 reply.readException(); 2185 data.recycle(); 2186 reply.recycle(); 2187 } 2188 public String getCallingPackage(IBinder token) throws RemoteException 2189 { 2190 Parcel data = Parcel.obtain(); 2191 Parcel reply = Parcel.obtain(); 2192 data.writeInterfaceToken(IActivityManager.descriptor); 2193 data.writeStrongBinder(token); 2194 mRemote.transact(GET_CALLING_PACKAGE_TRANSACTION, data, reply, 0); 2195 reply.readException(); 2196 String res = reply.readString(); 2197 data.recycle(); 2198 reply.recycle(); 2199 return res; 2200 } 2201 public ComponentName getCallingActivity(IBinder token) 2202 throws RemoteException { 2203 Parcel data = Parcel.obtain(); 2204 Parcel reply = Parcel.obtain(); 2205 data.writeInterfaceToken(IActivityManager.descriptor); 2206 data.writeStrongBinder(token); 2207 mRemote.transact(GET_CALLING_ACTIVITY_TRANSACTION, data, reply, 0); 2208 reply.readException(); 2209 ComponentName res = ComponentName.readFromParcel(reply); 2210 data.recycle(); 2211 reply.recycle(); 2212 return res; 2213 } 2214 public List getTasks(int maxNum, int flags, 2215 IThumbnailReceiver receiver) throws RemoteException { 2216 Parcel data = Parcel.obtain(); 2217 Parcel reply = Parcel.obtain(); 2218 data.writeInterfaceToken(IActivityManager.descriptor); 2219 data.writeInt(maxNum); 2220 data.writeInt(flags); 2221 data.writeStrongBinder(receiver != null ? receiver.asBinder() : null); 2222 mRemote.transact(GET_TASKS_TRANSACTION, data, reply, 0); 2223 reply.readException(); 2224 ArrayList list = null; 2225 int N = reply.readInt(); 2226 if (N >= 0) { 2227 list = new ArrayList(); 2228 while (N > 0) { 2229 ActivityManager.RunningTaskInfo info = 2230 ActivityManager.RunningTaskInfo.CREATOR 2231 .createFromParcel(reply); 2232 list.add(info); 2233 N--; 2234 } 2235 } 2236 data.recycle(); 2237 reply.recycle(); 2238 return list; 2239 } 2240 public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, 2241 int flags, int userId) throws RemoteException { 2242 Parcel data = Parcel.obtain(); 2243 Parcel reply = Parcel.obtain(); 2244 data.writeInterfaceToken(IActivityManager.descriptor); 2245 data.writeInt(maxNum); 2246 data.writeInt(flags); 2247 data.writeInt(userId); 2248 mRemote.transact(GET_RECENT_TASKS_TRANSACTION, data, reply, 0); 2249 reply.readException(); 2250 ArrayList<ActivityManager.RecentTaskInfo> list 2251 = reply.createTypedArrayList(ActivityManager.RecentTaskInfo.CREATOR); 2252 data.recycle(); 2253 reply.recycle(); 2254 return list; 2255 } 2256 public ActivityManager.TaskThumbnails getTaskThumbnails(int id) throws RemoteException { 2257 Parcel data = Parcel.obtain(); 2258 Parcel reply = Parcel.obtain(); 2259 data.writeInterfaceToken(IActivityManager.descriptor); 2260 data.writeInt(id); 2261 mRemote.transact(GET_TASK_THUMBNAILS_TRANSACTION, data, reply, 0); 2262 reply.readException(); 2263 ActivityManager.TaskThumbnails bm = null; 2264 if (reply.readInt() != 0) { 2265 bm = ActivityManager.TaskThumbnails.CREATOR.createFromParcel(reply); 2266 } 2267 data.recycle(); 2268 reply.recycle(); 2269 return bm; 2270 } 2271 public List getServices(int maxNum, int flags) throws RemoteException { 2272 Parcel data = Parcel.obtain(); 2273 Parcel reply = Parcel.obtain(); 2274 data.writeInterfaceToken(IActivityManager.descriptor); 2275 data.writeInt(maxNum); 2276 data.writeInt(flags); 2277 mRemote.transact(GET_SERVICES_TRANSACTION, data, reply, 0); 2278 reply.readException(); 2279 ArrayList list = null; 2280 int N = reply.readInt(); 2281 if (N >= 0) { 2282 list = new ArrayList(); 2283 while (N > 0) { 2284 ActivityManager.RunningServiceInfo info = 2285 ActivityManager.RunningServiceInfo.CREATOR 2286 .createFromParcel(reply); 2287 list.add(info); 2288 N--; 2289 } 2290 } 2291 data.recycle(); 2292 reply.recycle(); 2293 return list; 2294 } 2295 public List<ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState() 2296 throws RemoteException { 2297 Parcel data = Parcel.obtain(); 2298 Parcel reply = Parcel.obtain(); 2299 data.writeInterfaceToken(IActivityManager.descriptor); 2300 mRemote.transact(GET_PROCESSES_IN_ERROR_STATE_TRANSACTION, data, reply, 0); 2301 reply.readException(); 2302 ArrayList<ActivityManager.ProcessErrorStateInfo> list 2303 = reply.createTypedArrayList(ActivityManager.ProcessErrorStateInfo.CREATOR); 2304 data.recycle(); 2305 reply.recycle(); 2306 return list; 2307 } 2308 public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses() 2309 throws RemoteException { 2310 Parcel data = Parcel.obtain(); 2311 Parcel reply = Parcel.obtain(); 2312 data.writeInterfaceToken(IActivityManager.descriptor); 2313 mRemote.transact(GET_RUNNING_APP_PROCESSES_TRANSACTION, data, reply, 0); 2314 reply.readException(); 2315 ArrayList<ActivityManager.RunningAppProcessInfo> list 2316 = reply.createTypedArrayList(ActivityManager.RunningAppProcessInfo.CREATOR); 2317 data.recycle(); 2318 reply.recycle(); 2319 return list; 2320 } 2321 public List<ApplicationInfo> getRunningExternalApplications() 2322 throws RemoteException { 2323 Parcel data = Parcel.obtain(); 2324 Parcel reply = Parcel.obtain(); 2325 data.writeInterfaceToken(IActivityManager.descriptor); 2326 mRemote.transact(GET_RUNNING_EXTERNAL_APPLICATIONS_TRANSACTION, data, reply, 0); 2327 reply.readException(); 2328 ArrayList<ApplicationInfo> list 2329 = reply.createTypedArrayList(ApplicationInfo.CREATOR); 2330 data.recycle(); 2331 reply.recycle(); 2332 return list; 2333 } 2334 public void moveTaskToFront(int task, int flags, Bundle options) throws RemoteException 2335 { 2336 Parcel data = Parcel.obtain(); 2337 Parcel reply = Parcel.obtain(); 2338 data.writeInterfaceToken(IActivityManager.descriptor); 2339 data.writeInt(task); 2340 data.writeInt(flags); 2341 if (options != null) { 2342 data.writeInt(1); 2343 options.writeToParcel(data, 0); 2344 } else { 2345 data.writeInt(0); 2346 } 2347 mRemote.transact(MOVE_TASK_TO_FRONT_TRANSACTION, data, reply, 0); 2348 reply.readException(); 2349 data.recycle(); 2350 reply.recycle(); 2351 } 2352 public void moveTaskToBack(int task) throws RemoteException 2353 { 2354 Parcel data = Parcel.obtain(); 2355 Parcel reply = Parcel.obtain(); 2356 data.writeInterfaceToken(IActivityManager.descriptor); 2357 data.writeInt(task); 2358 mRemote.transact(MOVE_TASK_TO_BACK_TRANSACTION, data, reply, 0); 2359 reply.readException(); 2360 data.recycle(); 2361 reply.recycle(); 2362 } 2363 public boolean moveActivityTaskToBack(IBinder token, boolean nonRoot) 2364 throws RemoteException { 2365 Parcel data = Parcel.obtain(); 2366 Parcel reply = Parcel.obtain(); 2367 data.writeInterfaceToken(IActivityManager.descriptor); 2368 data.writeStrongBinder(token); 2369 data.writeInt(nonRoot ? 1 : 0); 2370 mRemote.transact(MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION, data, reply, 0); 2371 reply.readException(); 2372 boolean res = reply.readInt() != 0; 2373 data.recycle(); 2374 reply.recycle(); 2375 return res; 2376 } 2377 public void moveTaskBackwards(int task) throws RemoteException 2378 { 2379 Parcel data = Parcel.obtain(); 2380 Parcel reply = Parcel.obtain(); 2381 data.writeInterfaceToken(IActivityManager.descriptor); 2382 data.writeInt(task); 2383 mRemote.transact(MOVE_TASK_BACKWARDS_TRANSACTION, data, reply, 0); 2384 reply.readException(); 2385 data.recycle(); 2386 reply.recycle(); 2387 } 2388 public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException 2389 { 2390 Parcel data = Parcel.obtain(); 2391 Parcel reply = Parcel.obtain(); 2392 data.writeInterfaceToken(IActivityManager.descriptor); 2393 data.writeStrongBinder(token); 2394 data.writeInt(onlyRoot ? 1 : 0); 2395 mRemote.transact(GET_TASK_FOR_ACTIVITY_TRANSACTION, data, reply, 0); 2396 reply.readException(); 2397 int res = reply.readInt(); 2398 data.recycle(); 2399 reply.recycle(); 2400 return res; 2401 } 2402 public void reportThumbnail(IBinder token, 2403 Bitmap thumbnail, CharSequence description) throws RemoteException 2404 { 2405 Parcel data = Parcel.obtain(); 2406 Parcel reply = Parcel.obtain(); 2407 data.writeInterfaceToken(IActivityManager.descriptor); 2408 data.writeStrongBinder(token); 2409 if (thumbnail != null) { 2410 data.writeInt(1); 2411 thumbnail.writeToParcel(data, 0); 2412 } else { 2413 data.writeInt(0); 2414 } 2415 TextUtils.writeToParcel(description, data, 0); 2416 mRemote.transact(REPORT_THUMBNAIL_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2417 reply.readException(); 2418 data.recycle(); 2419 reply.recycle(); 2420 } 2421 public ContentProviderHolder getContentProvider(IApplicationThread caller, 2422 String name, boolean stable) throws RemoteException { 2423 Parcel data = Parcel.obtain(); 2424 Parcel reply = Parcel.obtain(); 2425 data.writeInterfaceToken(IActivityManager.descriptor); 2426 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2427 data.writeString(name); 2428 data.writeInt(stable ? 1 : 0); 2429 mRemote.transact(GET_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 2430 reply.readException(); 2431 int res = reply.readInt(); 2432 ContentProviderHolder cph = null; 2433 if (res != 0) { 2434 cph = ContentProviderHolder.CREATOR.createFromParcel(reply); 2435 } 2436 data.recycle(); 2437 reply.recycle(); 2438 return cph; 2439 } 2440 public ContentProviderHolder getContentProviderExternal(String name, IBinder token) 2441 throws RemoteException 2442 { 2443 Parcel data = Parcel.obtain(); 2444 Parcel reply = Parcel.obtain(); 2445 data.writeInterfaceToken(IActivityManager.descriptor); 2446 data.writeString(name); 2447 data.writeStrongBinder(token); 2448 mRemote.transact(GET_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0); 2449 reply.readException(); 2450 int res = reply.readInt(); 2451 ContentProviderHolder cph = null; 2452 if (res != 0) { 2453 cph = ContentProviderHolder.CREATOR.createFromParcel(reply); 2454 } 2455 data.recycle(); 2456 reply.recycle(); 2457 return cph; 2458 } 2459 public void publishContentProviders(IApplicationThread caller, 2460 List<ContentProviderHolder> providers) throws RemoteException 2461 { 2462 Parcel data = Parcel.obtain(); 2463 Parcel reply = Parcel.obtain(); 2464 data.writeInterfaceToken(IActivityManager.descriptor); 2465 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2466 data.writeTypedList(providers); 2467 mRemote.transact(PUBLISH_CONTENT_PROVIDERS_TRANSACTION, data, reply, 0); 2468 reply.readException(); 2469 data.recycle(); 2470 reply.recycle(); 2471 } 2472 public boolean refContentProvider(IBinder connection, int stable, int unstable) 2473 throws RemoteException { 2474 Parcel data = Parcel.obtain(); 2475 Parcel reply = Parcel.obtain(); 2476 data.writeInterfaceToken(IActivityManager.descriptor); 2477 data.writeStrongBinder(connection); 2478 data.writeInt(stable); 2479 data.writeInt(unstable); 2480 mRemote.transact(REF_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 2481 reply.readException(); 2482 boolean res = reply.readInt() != 0; 2483 data.recycle(); 2484 reply.recycle(); 2485 return res; 2486 } 2487 public void unstableProviderDied(IBinder connection) throws RemoteException { 2488 Parcel data = Parcel.obtain(); 2489 Parcel reply = Parcel.obtain(); 2490 data.writeInterfaceToken(IActivityManager.descriptor); 2491 data.writeStrongBinder(connection); 2492 mRemote.transact(UNSTABLE_PROVIDER_DIED_TRANSACTION, data, reply, 0); 2493 reply.readException(); 2494 data.recycle(); 2495 reply.recycle(); 2496 } 2497 2498 public void removeContentProvider(IBinder connection, boolean stable) throws RemoteException { 2499 Parcel data = Parcel.obtain(); 2500 Parcel reply = Parcel.obtain(); 2501 data.writeInterfaceToken(IActivityManager.descriptor); 2502 data.writeStrongBinder(connection); 2503 data.writeInt(stable ? 1 : 0); 2504 mRemote.transact(REMOVE_CONTENT_PROVIDER_TRANSACTION, data, reply, 0); 2505 reply.readException(); 2506 data.recycle(); 2507 reply.recycle(); 2508 } 2509 2510 public void removeContentProviderExternal(String name, IBinder token) throws RemoteException { 2511 Parcel data = Parcel.obtain(); 2512 Parcel reply = Parcel.obtain(); 2513 data.writeInterfaceToken(IActivityManager.descriptor); 2514 data.writeString(name); 2515 data.writeStrongBinder(token); 2516 mRemote.transact(REMOVE_CONTENT_PROVIDER_EXTERNAL_TRANSACTION, data, reply, 0); 2517 reply.readException(); 2518 data.recycle(); 2519 reply.recycle(); 2520 } 2521 2522 public PendingIntent getRunningServiceControlPanel(ComponentName service) 2523 throws RemoteException 2524 { 2525 Parcel data = Parcel.obtain(); 2526 Parcel reply = Parcel.obtain(); 2527 data.writeInterfaceToken(IActivityManager.descriptor); 2528 service.writeToParcel(data, 0); 2529 mRemote.transact(GET_RUNNING_SERVICE_CONTROL_PANEL_TRANSACTION, data, reply, 0); 2530 reply.readException(); 2531 PendingIntent res = PendingIntent.readPendingIntentOrNullFromParcel(reply); 2532 data.recycle(); 2533 reply.recycle(); 2534 return res; 2535 } 2536 2537 public ComponentName startService(IApplicationThread caller, Intent service, 2538 String resolvedType, int userId) throws RemoteException 2539 { 2540 Parcel data = Parcel.obtain(); 2541 Parcel reply = Parcel.obtain(); 2542 data.writeInterfaceToken(IActivityManager.descriptor); 2543 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2544 service.writeToParcel(data, 0); 2545 data.writeString(resolvedType); 2546 data.writeInt(userId); 2547 mRemote.transact(START_SERVICE_TRANSACTION, data, reply, 0); 2548 reply.readException(); 2549 ComponentName res = ComponentName.readFromParcel(reply); 2550 data.recycle(); 2551 reply.recycle(); 2552 return res; 2553 } 2554 public int stopService(IApplicationThread caller, Intent service, 2555 String resolvedType, int userId) throws RemoteException 2556 { 2557 Parcel data = Parcel.obtain(); 2558 Parcel reply = Parcel.obtain(); 2559 data.writeInterfaceToken(IActivityManager.descriptor); 2560 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2561 service.writeToParcel(data, 0); 2562 data.writeString(resolvedType); 2563 data.writeInt(userId); 2564 mRemote.transact(STOP_SERVICE_TRANSACTION, data, reply, 0); 2565 reply.readException(); 2566 int res = reply.readInt(); 2567 reply.recycle(); 2568 data.recycle(); 2569 return res; 2570 } 2571 public boolean stopServiceToken(ComponentName className, IBinder token, 2572 int startId) throws RemoteException { 2573 Parcel data = Parcel.obtain(); 2574 Parcel reply = Parcel.obtain(); 2575 data.writeInterfaceToken(IActivityManager.descriptor); 2576 ComponentName.writeToParcel(className, data); 2577 data.writeStrongBinder(token); 2578 data.writeInt(startId); 2579 mRemote.transact(STOP_SERVICE_TOKEN_TRANSACTION, data, reply, 0); 2580 reply.readException(); 2581 boolean res = reply.readInt() != 0; 2582 data.recycle(); 2583 reply.recycle(); 2584 return res; 2585 } 2586 public void setServiceForeground(ComponentName className, IBinder token, 2587 int id, Notification notification, boolean removeNotification) throws RemoteException { 2588 Parcel data = Parcel.obtain(); 2589 Parcel reply = Parcel.obtain(); 2590 data.writeInterfaceToken(IActivityManager.descriptor); 2591 ComponentName.writeToParcel(className, data); 2592 data.writeStrongBinder(token); 2593 data.writeInt(id); 2594 if (notification != null) { 2595 data.writeInt(1); 2596 notification.writeToParcel(data, 0); 2597 } else { 2598 data.writeInt(0); 2599 } 2600 data.writeInt(removeNotification ? 1 : 0); 2601 mRemote.transact(SET_SERVICE_FOREGROUND_TRANSACTION, data, reply, 0); 2602 reply.readException(); 2603 data.recycle(); 2604 reply.recycle(); 2605 } 2606 public int bindService(IApplicationThread caller, IBinder token, 2607 Intent service, String resolvedType, IServiceConnection connection, 2608 int flags, int userId) throws RemoteException { 2609 Parcel data = Parcel.obtain(); 2610 Parcel reply = Parcel.obtain(); 2611 data.writeInterfaceToken(IActivityManager.descriptor); 2612 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 2613 data.writeStrongBinder(token); 2614 service.writeToParcel(data, 0); 2615 data.writeString(resolvedType); 2616 data.writeStrongBinder(connection.asBinder()); 2617 data.writeInt(flags); 2618 data.writeInt(userId); 2619 mRemote.transact(BIND_SERVICE_TRANSACTION, data, reply, 0); 2620 reply.readException(); 2621 int res = reply.readInt(); 2622 data.recycle(); 2623 reply.recycle(); 2624 return res; 2625 } 2626 public boolean unbindService(IServiceConnection connection) throws RemoteException 2627 { 2628 Parcel data = Parcel.obtain(); 2629 Parcel reply = Parcel.obtain(); 2630 data.writeInterfaceToken(IActivityManager.descriptor); 2631 data.writeStrongBinder(connection.asBinder()); 2632 mRemote.transact(UNBIND_SERVICE_TRANSACTION, data, reply, 0); 2633 reply.readException(); 2634 boolean res = reply.readInt() != 0; 2635 data.recycle(); 2636 reply.recycle(); 2637 return res; 2638 } 2639 2640 public void publishService(IBinder token, 2641 Intent intent, IBinder service) throws RemoteException { 2642 Parcel data = Parcel.obtain(); 2643 Parcel reply = Parcel.obtain(); 2644 data.writeInterfaceToken(IActivityManager.descriptor); 2645 data.writeStrongBinder(token); 2646 intent.writeToParcel(data, 0); 2647 data.writeStrongBinder(service); 2648 mRemote.transact(PUBLISH_SERVICE_TRANSACTION, data, reply, 0); 2649 reply.readException(); 2650 data.recycle(); 2651 reply.recycle(); 2652 } 2653 2654 public void unbindFinished(IBinder token, Intent intent, boolean doRebind) 2655 throws RemoteException { 2656 Parcel data = Parcel.obtain(); 2657 Parcel reply = Parcel.obtain(); 2658 data.writeInterfaceToken(IActivityManager.descriptor); 2659 data.writeStrongBinder(token); 2660 intent.writeToParcel(data, 0); 2661 data.writeInt(doRebind ? 1 : 0); 2662 mRemote.transact(UNBIND_FINISHED_TRANSACTION, data, reply, 0); 2663 reply.readException(); 2664 data.recycle(); 2665 reply.recycle(); 2666 } 2667 2668 public void serviceDoneExecuting(IBinder token, int type, int startId, 2669 int res) throws RemoteException { 2670 Parcel data = Parcel.obtain(); 2671 Parcel reply = Parcel.obtain(); 2672 data.writeInterfaceToken(IActivityManager.descriptor); 2673 data.writeStrongBinder(token); 2674 data.writeInt(type); 2675 data.writeInt(startId); 2676 data.writeInt(res); 2677 mRemote.transact(SERVICE_DONE_EXECUTING_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); 2678 reply.readException(); 2679 data.recycle(); 2680 reply.recycle(); 2681 } 2682 2683 public IBinder peekService(Intent service, String resolvedType) throws RemoteException { 2684 Parcel data = Parcel.obtain(); 2685 Parcel reply = Parcel.obtain(); 2686 data.writeInterfaceToken(IActivityManager.descriptor); 2687 service.writeToParcel(data, 0); 2688 data.writeString(resolvedType); 2689 mRemote.transact(PEEK_SERVICE_TRANSACTION, data, reply, 0); 2690 reply.readException(); 2691 IBinder binder = reply.readStrongBinder(); 2692 reply.recycle(); 2693 data.recycle(); 2694 return binder; 2695 } 2696 2697 public boolean bindBackupAgent(ApplicationInfo app, int backupRestoreMode) 2698 throws RemoteException { 2699 Parcel data = Parcel.obtain(); 2700 Parcel reply = Parcel.obtain(); 2701 data.writeInterfaceToken(IActivityManager.descriptor); 2702 app.writeToParcel(data, 0); 2703 data.writeInt(backupRestoreMode); 2704 mRemote.transact(START_BACKUP_AGENT_TRANSACTION, data, reply, 0); 2705 reply.readException(); 2706 boolean success = reply.readInt() != 0; 2707 reply.recycle(); 2708 data.recycle(); 2709 return success; 2710 } 2711 2712 public void backupAgentCreated(String packageName, IBinder agent) throws RemoteException { 2713 Parcel data = Parcel.obtain(); 2714 Parcel reply = Parcel.obtain(); 2715 data.writeInterfaceToken(IActivityManager.descriptor); 2716 data.writeString(packageName); 2717 data.writeStrongBinder(agent); 2718 mRemote.transact(BACKUP_AGENT_CREATED_TRANSACTION, data, reply, 0); 2719 reply.recycle(); 2720 data.recycle(); 2721 } 2722 2723 public void unbindBackupAgent(ApplicationInfo app) throws RemoteException { 2724 Parcel data = Parcel.obtain(); 2725 Parcel reply = Parcel.obtain(); 2726 data.writeInterfaceToken(IActivityManager.descriptor); 2727 app.writeToParcel(data, 0); 2728 mRemote.transact(UNBIND_BACKUP_AGENT_TRANSACTION, data, reply, 0); 2729 reply.readException(); 2730 reply.recycle(); 2731 data.recycle(); 2732 } 2733 2734 public boolean startInstrumentation(ComponentName className, String profileFile, 2735 int flags, Bundle arguments, IInstrumentationWatcher watcher, int userId) 2736 throws RemoteException { 2737 Parcel data = Parcel.obtain(); 2738 Parcel reply = Parcel.obtain(); 2739 data.writeInterfaceToken(IActivityManager.descriptor); 2740 ComponentName.writeToParcel(className, data); 2741 data.writeString(profileFile); 2742 data.writeInt(flags); 2743 data.writeBundle(arguments); 2744 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null); 2745 data.writeInt(userId); 2746 mRemote.transact(START_INSTRUMENTATION_TRANSACTION, data, reply, 0); 2747 reply.readException(); 2748 boolean res = reply.readInt() != 0; 2749 reply.recycle(); 2750 data.recycle(); 2751 return res; 2752 } 2753 2754 public void finishInstrumentation(IApplicationThread target, 2755 int resultCode, Bundle results) throws RemoteException { 2756 Parcel data = Parcel.obtain(); 2757 Parcel reply = Parcel.obtain(); 2758 data.writeInterfaceToken(IActivityManager.descriptor); 2759 data.writeStrongBinder(target != null ? target.asBinder() : null); 2760 data.writeInt(resultCode); 2761 data.writeBundle(results); 2762 mRemote.transact(FINISH_INSTRUMENTATION_TRANSACTION, data, reply, 0); 2763 reply.readException(); 2764 data.recycle(); 2765 reply.recycle(); 2766 } 2767 public Configuration getConfiguration() throws RemoteException 2768 { 2769 Parcel data = Parcel.obtain(); 2770 Parcel reply = Parcel.obtain(); 2771 data.writeInterfaceToken(IActivityManager.descriptor); 2772 mRemote.transact(GET_CONFIGURATION_TRANSACTION, data, reply, 0); 2773 reply.readException(); 2774 Configuration res = Configuration.CREATOR.createFromParcel(reply); 2775 reply.recycle(); 2776 data.recycle(); 2777 return res; 2778 } 2779 public void updateConfiguration(Configuration values) throws RemoteException 2780 { 2781 Parcel data = Parcel.obtain(); 2782 Parcel reply = Parcel.obtain(); 2783 data.writeInterfaceToken(IActivityManager.descriptor); 2784 values.writeToParcel(data, 0); 2785 mRemote.transact(UPDATE_CONFIGURATION_TRANSACTION, data, reply, 0); 2786 reply.readException(); 2787 data.recycle(); 2788 reply.recycle(); 2789 } 2790 public void setRequestedOrientation(IBinder token, int requestedOrientation) 2791 throws RemoteException { 2792 Parcel data = Parcel.obtain(); 2793 Parcel reply = Parcel.obtain(); 2794 data.writeInterfaceToken(IActivityManager.descriptor); 2795 data.writeStrongBinder(token); 2796 data.writeInt(requestedOrientation); 2797 mRemote.transact(SET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0); 2798 reply.readException(); 2799 data.recycle(); 2800 reply.recycle(); 2801 } 2802 public int getRequestedOrientation(IBinder token) throws RemoteException { 2803 Parcel data = Parcel.obtain(); 2804 Parcel reply = Parcel.obtain(); 2805 data.writeInterfaceToken(IActivityManager.descriptor); 2806 data.writeStrongBinder(token); 2807 mRemote.transact(GET_REQUESTED_ORIENTATION_TRANSACTION, data, reply, 0); 2808 reply.readException(); 2809 int res = reply.readInt(); 2810 data.recycle(); 2811 reply.recycle(); 2812 return res; 2813 } 2814 public ComponentName getActivityClassForToken(IBinder token) 2815 throws RemoteException { 2816 Parcel data = Parcel.obtain(); 2817 Parcel reply = Parcel.obtain(); 2818 data.writeInterfaceToken(IActivityManager.descriptor); 2819 data.writeStrongBinder(token); 2820 mRemote.transact(GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION, data, reply, 0); 2821 reply.readException(); 2822 ComponentName res = ComponentName.readFromParcel(reply); 2823 data.recycle(); 2824 reply.recycle(); 2825 return res; 2826 } 2827 public String getPackageForToken(IBinder token) throws RemoteException 2828 { 2829 Parcel data = Parcel.obtain(); 2830 Parcel reply = Parcel.obtain(); 2831 data.writeInterfaceToken(IActivityManager.descriptor); 2832 data.writeStrongBinder(token); 2833 mRemote.transact(GET_PACKAGE_FOR_TOKEN_TRANSACTION, data, reply, 0); 2834 reply.readException(); 2835 String res = reply.readString(); 2836 data.recycle(); 2837 reply.recycle(); 2838 return res; 2839 } 2840 public IIntentSender getIntentSender(int type, 2841 String packageName, IBinder token, String resultWho, 2842 int requestCode, Intent[] intents, String[] resolvedTypes, int flags, 2843 Bundle options, int userId) throws RemoteException { 2844 Parcel data = Parcel.obtain(); 2845 Parcel reply = Parcel.obtain(); 2846 data.writeInterfaceToken(IActivityManager.descriptor); 2847 data.writeInt(type); 2848 data.writeString(packageName); 2849 data.writeStrongBinder(token); 2850 data.writeString(resultWho); 2851 data.writeInt(requestCode); 2852 if (intents != null) { 2853 data.writeInt(1); 2854 data.writeTypedArray(intents, 0); 2855 data.writeStringArray(resolvedTypes); 2856 } else { 2857 data.writeInt(0); 2858 } 2859 data.writeInt(flags); 2860 if (options != null) { 2861 data.writeInt(1); 2862 options.writeToParcel(data, 0); 2863 } else { 2864 data.writeInt(0); 2865 } 2866 data.writeInt(userId); 2867 mRemote.transact(GET_INTENT_SENDER_TRANSACTION, data, reply, 0); 2868 reply.readException(); 2869 IIntentSender res = IIntentSender.Stub.asInterface( 2870 reply.readStrongBinder()); 2871 data.recycle(); 2872 reply.recycle(); 2873 return res; 2874 } 2875 public void cancelIntentSender(IIntentSender sender) throws RemoteException { 2876 Parcel data = Parcel.obtain(); 2877 Parcel reply = Parcel.obtain(); 2878 data.writeInterfaceToken(IActivityManager.descriptor); 2879 data.writeStrongBinder(sender.asBinder()); 2880 mRemote.transact(CANCEL_INTENT_SENDER_TRANSACTION, data, reply, 0); 2881 reply.readException(); 2882 data.recycle(); 2883 reply.recycle(); 2884 } 2885 public String getPackageForIntentSender(IIntentSender sender) throws RemoteException { 2886 Parcel data = Parcel.obtain(); 2887 Parcel reply = Parcel.obtain(); 2888 data.writeInterfaceToken(IActivityManager.descriptor); 2889 data.writeStrongBinder(sender.asBinder()); 2890 mRemote.transact(GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 2891 reply.readException(); 2892 String res = reply.readString(); 2893 data.recycle(); 2894 reply.recycle(); 2895 return res; 2896 } 2897 public int getUidForIntentSender(IIntentSender sender) throws RemoteException { 2898 Parcel data = Parcel.obtain(); 2899 Parcel reply = Parcel.obtain(); 2900 data.writeInterfaceToken(IActivityManager.descriptor); 2901 data.writeStrongBinder(sender.asBinder()); 2902 mRemote.transact(GET_UID_FOR_INTENT_SENDER_TRANSACTION, data, reply, 0); 2903 reply.readException(); 2904 int res = reply.readInt(); 2905 data.recycle(); 2906 reply.recycle(); 2907 return res; 2908 } 2909 public int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll, 2910 boolean requireFull, String name, String callerPackage) throws RemoteException { 2911 Parcel data = Parcel.obtain(); 2912 Parcel reply = Parcel.obtain(); 2913 data.writeInterfaceToken(IActivityManager.descriptor); 2914 data.writeInt(callingPid); 2915 data.writeInt(callingUid); 2916 data.writeInt(userId); 2917 data.writeInt(allowAll ? 1 : 0); 2918 data.writeInt(requireFull ? 1 : 0); 2919 data.writeString(name); 2920 data.writeString(callerPackage); 2921 mRemote.transact(HANDLE_INCOMING_USER_TRANSACTION, data, reply, 0); 2922 reply.readException(); 2923 int res = reply.readInt(); 2924 data.recycle(); 2925 reply.recycle(); 2926 return res; 2927 } 2928 public void setProcessLimit(int max) throws RemoteException 2929 { 2930 Parcel data = Parcel.obtain(); 2931 Parcel reply = Parcel.obtain(); 2932 data.writeInterfaceToken(IActivityManager.descriptor); 2933 data.writeInt(max); 2934 mRemote.transact(SET_PROCESS_LIMIT_TRANSACTION, data, reply, 0); 2935 reply.readException(); 2936 data.recycle(); 2937 reply.recycle(); 2938 } 2939 public int getProcessLimit() throws RemoteException 2940 { 2941 Parcel data = Parcel.obtain(); 2942 Parcel reply = Parcel.obtain(); 2943 data.writeInterfaceToken(IActivityManager.descriptor); 2944 mRemote.transact(GET_PROCESS_LIMIT_TRANSACTION, data, reply, 0); 2945 reply.readException(); 2946 int res = reply.readInt(); 2947 data.recycle(); 2948 reply.recycle(); 2949 return res; 2950 } 2951 public void setProcessForeground(IBinder token, int pid, 2952 boolean isForeground) throws RemoteException { 2953 Parcel data = Parcel.obtain(); 2954 Parcel reply = Parcel.obtain(); 2955 data.writeInterfaceToken(IActivityManager.descriptor); 2956 data.writeStrongBinder(token); 2957 data.writeInt(pid); 2958 data.writeInt(isForeground ? 1 : 0); 2959 mRemote.transact(SET_PROCESS_FOREGROUND_TRANSACTION, data, reply, 0); 2960 reply.readException(); 2961 data.recycle(); 2962 reply.recycle(); 2963 } 2964 public int checkPermission(String permission, int pid, int uid) 2965 throws RemoteException { 2966 Parcel data = Parcel.obtain(); 2967 Parcel reply = Parcel.obtain(); 2968 data.writeInterfaceToken(IActivityManager.descriptor); 2969 data.writeString(permission); 2970 data.writeInt(pid); 2971 data.writeInt(uid); 2972 mRemote.transact(CHECK_PERMISSION_TRANSACTION, data, reply, 0); 2973 reply.readException(); 2974 int res = reply.readInt(); 2975 data.recycle(); 2976 reply.recycle(); 2977 return res; 2978 } 2979 public boolean clearApplicationUserData(final String packageName, 2980 final IPackageDataObserver observer, final int userId) throws RemoteException { 2981 Parcel data = Parcel.obtain(); 2982 Parcel reply = Parcel.obtain(); 2983 data.writeInterfaceToken(IActivityManager.descriptor); 2984 data.writeString(packageName); 2985 data.writeStrongBinder(observer.asBinder()); 2986 data.writeInt(userId); 2987 mRemote.transact(CLEAR_APP_DATA_TRANSACTION, data, reply, 0); 2988 reply.readException(); 2989 boolean res = reply.readInt() != 0; 2990 data.recycle(); 2991 reply.recycle(); 2992 return res; 2993 } 2994 public int checkUriPermission(Uri uri, int pid, int uid, int mode) 2995 throws RemoteException { 2996 Parcel data = Parcel.obtain(); 2997 Parcel reply = Parcel.obtain(); 2998 data.writeInterfaceToken(IActivityManager.descriptor); 2999 uri.writeToParcel(data, 0); 3000 data.writeInt(pid); 3001 data.writeInt(uid); 3002 data.writeInt(mode); 3003 mRemote.transact(CHECK_URI_PERMISSION_TRANSACTION, data, reply, 0); 3004 reply.readException(); 3005 int res = reply.readInt(); 3006 data.recycle(); 3007 reply.recycle(); 3008 return res; 3009 } 3010 public void grantUriPermission(IApplicationThread caller, String targetPkg, 3011 Uri uri, int mode) throws RemoteException { 3012 Parcel data = Parcel.obtain(); 3013 Parcel reply = Parcel.obtain(); 3014 data.writeInterfaceToken(IActivityManager.descriptor); 3015 data.writeStrongBinder(caller.asBinder()); 3016 data.writeString(targetPkg); 3017 uri.writeToParcel(data, 0); 3018 data.writeInt(mode); 3019 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 3020 reply.readException(); 3021 data.recycle(); 3022 reply.recycle(); 3023 } 3024 public void revokeUriPermission(IApplicationThread caller, Uri uri, 3025 int mode) throws RemoteException { 3026 Parcel data = Parcel.obtain(); 3027 Parcel reply = Parcel.obtain(); 3028 data.writeInterfaceToken(IActivityManager.descriptor); 3029 data.writeStrongBinder(caller.asBinder()); 3030 uri.writeToParcel(data, 0); 3031 data.writeInt(mode); 3032 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0); 3033 reply.readException(); 3034 data.recycle(); 3035 reply.recycle(); 3036 } 3037 public void showWaitingForDebugger(IApplicationThread who, boolean waiting) 3038 throws RemoteException { 3039 Parcel data = Parcel.obtain(); 3040 Parcel reply = Parcel.obtain(); 3041 data.writeInterfaceToken(IActivityManager.descriptor); 3042 data.writeStrongBinder(who.asBinder()); 3043 data.writeInt(waiting ? 1 : 0); 3044 mRemote.transact(SHOW_WAITING_FOR_DEBUGGER_TRANSACTION, data, reply, 0); 3045 reply.readException(); 3046 data.recycle(); 3047 reply.recycle(); 3048 } 3049 public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) throws RemoteException { 3050 Parcel data = Parcel.obtain(); 3051 Parcel reply = Parcel.obtain(); 3052 data.writeInterfaceToken(IActivityManager.descriptor); 3053 mRemote.transact(GET_MEMORY_INFO_TRANSACTION, data, reply, 0); 3054 reply.readException(); 3055 outInfo.readFromParcel(reply); 3056 data.recycle(); 3057 reply.recycle(); 3058 } 3059 public void unhandledBack() throws RemoteException 3060 { 3061 Parcel data = Parcel.obtain(); 3062 Parcel reply = Parcel.obtain(); 3063 data.writeInterfaceToken(IActivityManager.descriptor); 3064 mRemote.transact(UNHANDLED_BACK_TRANSACTION, data, reply, 0); 3065 reply.readException(); 3066 data.recycle(); 3067 reply.recycle(); 3068 } 3069 public ParcelFileDescriptor openContentUri(Uri uri) throws RemoteException 3070 { 3071 Parcel data = Parcel.obtain(); 3072 Parcel reply = Parcel.obtain(); 3073 data.writeInterfaceToken(IActivityManager.descriptor); 3074 mRemote.transact(OPEN_CONTENT_URI_TRANSACTION, data, reply, 0); 3075 reply.readException(); 3076 ParcelFileDescriptor pfd = null; 3077 if (reply.readInt() != 0) { 3078 pfd = ParcelFileDescriptor.CREATOR.createFromParcel(reply); 3079 } 3080 data.recycle(); 3081 reply.recycle(); 3082 return pfd; 3083 } 3084 public void goingToSleep() throws RemoteException 3085 { 3086 Parcel data = Parcel.obtain(); 3087 Parcel reply = Parcel.obtain(); 3088 data.writeInterfaceToken(IActivityManager.descriptor); 3089 mRemote.transact(GOING_TO_SLEEP_TRANSACTION, data, reply, 0); 3090 reply.readException(); 3091 data.recycle(); 3092 reply.recycle(); 3093 } 3094 public void wakingUp() throws RemoteException 3095 { 3096 Parcel data = Parcel.obtain(); 3097 Parcel reply = Parcel.obtain(); 3098 data.writeInterfaceToken(IActivityManager.descriptor); 3099 mRemote.transact(WAKING_UP_TRANSACTION, data, reply, 0); 3100 reply.readException(); 3101 data.recycle(); 3102 reply.recycle(); 3103 } 3104 public void setLockScreenShown(boolean shown) throws RemoteException 3105 { 3106 Parcel data = Parcel.obtain(); 3107 Parcel reply = Parcel.obtain(); 3108 data.writeInterfaceToken(IActivityManager.descriptor); 3109 data.writeInt(shown ? 1 : 0); 3110 mRemote.transact(SET_LOCK_SCREEN_SHOWN_TRANSACTION, data, reply, 0); 3111 reply.readException(); 3112 data.recycle(); 3113 reply.recycle(); 3114 } 3115 public void setDebugApp( 3116 String packageName, boolean waitForDebugger, boolean persistent) 3117 throws RemoteException 3118 { 3119 Parcel data = Parcel.obtain(); 3120 Parcel reply = Parcel.obtain(); 3121 data.writeInterfaceToken(IActivityManager.descriptor); 3122 data.writeString(packageName); 3123 data.writeInt(waitForDebugger ? 1 : 0); 3124 data.writeInt(persistent ? 1 : 0); 3125 mRemote.transact(SET_DEBUG_APP_TRANSACTION, data, reply, 0); 3126 reply.readException(); 3127 data.recycle(); 3128 reply.recycle(); 3129 } 3130 public void setAlwaysFinish(boolean enabled) throws RemoteException 3131 { 3132 Parcel data = Parcel.obtain(); 3133 Parcel reply = Parcel.obtain(); 3134 data.writeInterfaceToken(IActivityManager.descriptor); 3135 data.writeInt(enabled ? 1 : 0); 3136 mRemote.transact(SET_ALWAYS_FINISH_TRANSACTION, data, reply, 0); 3137 reply.readException(); 3138 data.recycle(); 3139 reply.recycle(); 3140 } 3141 public void setActivityController(IActivityController watcher) throws RemoteException 3142 { 3143 Parcel data = Parcel.obtain(); 3144 Parcel reply = Parcel.obtain(); 3145 data.writeInterfaceToken(IActivityManager.descriptor); 3146 data.writeStrongBinder(watcher != null ? watcher.asBinder() : null); 3147 mRemote.transact(SET_ACTIVITY_CONTROLLER_TRANSACTION, data, reply, 0); 3148 reply.readException(); 3149 data.recycle(); 3150 reply.recycle(); 3151 } 3152 public void enterSafeMode() throws RemoteException { 3153 Parcel data = Parcel.obtain(); 3154 data.writeInterfaceToken(IActivityManager.descriptor); 3155 mRemote.transact(ENTER_SAFE_MODE_TRANSACTION, data, null, 0); 3156 data.recycle(); 3157 } 3158 public void noteWakeupAlarm(IIntentSender sender) throws RemoteException { 3159 Parcel data = Parcel.obtain(); 3160 data.writeStrongBinder(sender.asBinder()); 3161 data.writeInterfaceToken(IActivityManager.descriptor); 3162 mRemote.transact(NOTE_WAKEUP_ALARM_TRANSACTION, data, null, 0); 3163 data.recycle(); 3164 } 3165 public boolean killPids(int[] pids, String reason, boolean secure) throws RemoteException { 3166 Parcel data = Parcel.obtain(); 3167 Parcel reply = Parcel.obtain(); 3168 data.writeInterfaceToken(IActivityManager.descriptor); 3169 data.writeIntArray(pids); 3170 data.writeString(reason); 3171 data.writeInt(secure ? 1 : 0); 3172 mRemote.transact(KILL_PIDS_TRANSACTION, data, reply, 0); 3173 boolean res = reply.readInt() != 0; 3174 data.recycle(); 3175 reply.recycle(); 3176 return res; 3177 } 3178 @Override 3179 public boolean killProcessesBelowForeground(String reason) throws RemoteException { 3180 Parcel data = Parcel.obtain(); 3181 Parcel reply = Parcel.obtain(); 3182 data.writeInterfaceToken(IActivityManager.descriptor); 3183 data.writeString(reason); 3184 mRemote.transact(KILL_PROCESSES_BELOW_FOREGROUND_TRANSACTION, data, reply, 0); 3185 boolean res = reply.readInt() != 0; 3186 data.recycle(); 3187 reply.recycle(); 3188 return res; 3189 } 3190 public void startRunning(String pkg, String cls, String action, 3191 String indata) throws RemoteException { 3192 Parcel data = Parcel.obtain(); 3193 Parcel reply = Parcel.obtain(); 3194 data.writeInterfaceToken(IActivityManager.descriptor); 3195 data.writeString(pkg); 3196 data.writeString(cls); 3197 data.writeString(action); 3198 data.writeString(indata); 3199 mRemote.transact(START_RUNNING_TRANSACTION, data, reply, 0); 3200 reply.readException(); 3201 data.recycle(); 3202 reply.recycle(); 3203 } 3204 public boolean testIsSystemReady() 3205 { 3206 /* this base class version is never called */ 3207 return true; 3208 } 3209 public void handleApplicationCrash(IBinder app, 3210 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException 3211 { 3212 Parcel data = Parcel.obtain(); 3213 Parcel reply = Parcel.obtain(); 3214 data.writeInterfaceToken(IActivityManager.descriptor); 3215 data.writeStrongBinder(app); 3216 crashInfo.writeToParcel(data, 0); 3217 mRemote.transact(HANDLE_APPLICATION_CRASH_TRANSACTION, data, reply, 0); 3218 reply.readException(); 3219 reply.recycle(); 3220 data.recycle(); 3221 } 3222 3223 public boolean handleApplicationWtf(IBinder app, String tag, 3224 ApplicationErrorReport.CrashInfo crashInfo) throws RemoteException 3225 { 3226 Parcel data = Parcel.obtain(); 3227 Parcel reply = Parcel.obtain(); 3228 data.writeInterfaceToken(IActivityManager.descriptor); 3229 data.writeStrongBinder(app); 3230 data.writeString(tag); 3231 crashInfo.writeToParcel(data, 0); 3232 mRemote.transact(HANDLE_APPLICATION_WTF_TRANSACTION, data, reply, 0); 3233 reply.readException(); 3234 boolean res = reply.readInt() != 0; 3235 reply.recycle(); 3236 data.recycle(); 3237 return res; 3238 } 3239 3240 public void handleApplicationStrictModeViolation(IBinder app, 3241 int violationMask, 3242 StrictMode.ViolationInfo info) throws RemoteException 3243 { 3244 Parcel data = Parcel.obtain(); 3245 Parcel reply = Parcel.obtain(); 3246 data.writeInterfaceToken(IActivityManager.descriptor); 3247 data.writeStrongBinder(app); 3248 data.writeInt(violationMask); 3249 info.writeToParcel(data, 0); 3250 mRemote.transact(HANDLE_APPLICATION_STRICT_MODE_VIOLATION_TRANSACTION, data, reply, 0); 3251 reply.readException(); 3252 reply.recycle(); 3253 data.recycle(); 3254 } 3255 3256 public void signalPersistentProcesses(int sig) throws RemoteException { 3257 Parcel data = Parcel.obtain(); 3258 Parcel reply = Parcel.obtain(); 3259 data.writeInterfaceToken(IActivityManager.descriptor); 3260 data.writeInt(sig); 3261 mRemote.transact(SIGNAL_PERSISTENT_PROCESSES_TRANSACTION, data, reply, 0); 3262 reply.readException(); 3263 data.recycle(); 3264 reply.recycle(); 3265 } 3266 3267 public void killBackgroundProcesses(String packageName) throws RemoteException { 3268 Parcel data = Parcel.obtain(); 3269 Parcel reply = Parcel.obtain(); 3270 data.writeInterfaceToken(IActivityManager.descriptor); 3271 data.writeString(packageName); 3272 mRemote.transact(KILL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0); 3273 reply.readException(); 3274 data.recycle(); 3275 reply.recycle(); 3276 } 3277 3278 public void killAllBackgroundProcesses() throws RemoteException { 3279 Parcel data = Parcel.obtain(); 3280 Parcel reply = Parcel.obtain(); 3281 data.writeInterfaceToken(IActivityManager.descriptor); 3282 mRemote.transact(KILL_ALL_BACKGROUND_PROCESSES_TRANSACTION, data, reply, 0); 3283 reply.readException(); 3284 data.recycle(); 3285 reply.recycle(); 3286 } 3287 3288 public void forceStopPackage(String packageName) throws RemoteException { 3289 Parcel data = Parcel.obtain(); 3290 Parcel reply = Parcel.obtain(); 3291 data.writeInterfaceToken(IActivityManager.descriptor); 3292 data.writeString(packageName); 3293 mRemote.transact(FORCE_STOP_PACKAGE_TRANSACTION, data, reply, 0); 3294 reply.readException(); 3295 data.recycle(); 3296 reply.recycle(); 3297 } 3298 3299 public void getMyMemoryState(ActivityManager.RunningAppProcessInfo outInfo) 3300 throws RemoteException 3301 { 3302 Parcel data = Parcel.obtain(); 3303 Parcel reply = Parcel.obtain(); 3304 data.writeInterfaceToken(IActivityManager.descriptor); 3305 mRemote.transact(GET_MY_MEMORY_STATE_TRANSACTION, data, reply, 0); 3306 reply.readException(); 3307 outInfo.readFromParcel(reply); 3308 reply.recycle(); 3309 data.recycle(); 3310 } 3311 3312 public ConfigurationInfo getDeviceConfigurationInfo() throws RemoteException 3313 { 3314 Parcel data = Parcel.obtain(); 3315 Parcel reply = Parcel.obtain(); 3316 data.writeInterfaceToken(IActivityManager.descriptor); 3317 mRemote.transact(GET_DEVICE_CONFIGURATION_TRANSACTION, data, reply, 0); 3318 reply.readException(); 3319 ConfigurationInfo res = ConfigurationInfo.CREATOR.createFromParcel(reply); 3320 reply.recycle(); 3321 data.recycle(); 3322 return res; 3323 } 3324 3325 public boolean profileControl(String process, boolean start, 3326 String path, ParcelFileDescriptor fd, int profileType) throws RemoteException 3327 { 3328 Parcel data = Parcel.obtain(); 3329 Parcel reply = Parcel.obtain(); 3330 data.writeInterfaceToken(IActivityManager.descriptor); 3331 data.writeString(process); 3332 data.writeInt(start ? 1 : 0); 3333 data.writeInt(profileType); 3334 data.writeString(path); 3335 if (fd != null) { 3336 data.writeInt(1); 3337 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 3338 } else { 3339 data.writeInt(0); 3340 } 3341 mRemote.transact(PROFILE_CONTROL_TRANSACTION, data, reply, 0); 3342 reply.readException(); 3343 boolean res = reply.readInt() != 0; 3344 reply.recycle(); 3345 data.recycle(); 3346 return res; 3347 } 3348 3349 public boolean shutdown(int timeout) throws RemoteException 3350 { 3351 Parcel data = Parcel.obtain(); 3352 Parcel reply = Parcel.obtain(); 3353 data.writeInterfaceToken(IActivityManager.descriptor); 3354 data.writeInt(timeout); 3355 mRemote.transact(SHUTDOWN_TRANSACTION, data, reply, 0); 3356 reply.readException(); 3357 boolean res = reply.readInt() != 0; 3358 reply.recycle(); 3359 data.recycle(); 3360 return res; 3361 } 3362 3363 public void stopAppSwitches() throws RemoteException { 3364 Parcel data = Parcel.obtain(); 3365 Parcel reply = Parcel.obtain(); 3366 data.writeInterfaceToken(IActivityManager.descriptor); 3367 mRemote.transact(STOP_APP_SWITCHES_TRANSACTION, data, reply, 0); 3368 reply.readException(); 3369 reply.recycle(); 3370 data.recycle(); 3371 } 3372 3373 public void resumeAppSwitches() throws RemoteException { 3374 Parcel data = Parcel.obtain(); 3375 Parcel reply = Parcel.obtain(); 3376 data.writeInterfaceToken(IActivityManager.descriptor); 3377 mRemote.transact(RESUME_APP_SWITCHES_TRANSACTION, data, reply, 0); 3378 reply.readException(); 3379 reply.recycle(); 3380 data.recycle(); 3381 } 3382 3383 public void killApplicationWithAppId(String pkg, int appid) throws RemoteException { 3384 Parcel data = Parcel.obtain(); 3385 Parcel reply = Parcel.obtain(); 3386 data.writeInterfaceToken(IActivityManager.descriptor); 3387 data.writeString(pkg); 3388 data.writeInt(appid); 3389 mRemote.transact(KILL_APPLICATION_WITH_APPID_TRANSACTION, data, reply, 0); 3390 reply.readException(); 3391 data.recycle(); 3392 reply.recycle(); 3393 } 3394 3395 public void closeSystemDialogs(String reason) throws RemoteException { 3396 Parcel data = Parcel.obtain(); 3397 Parcel reply = Parcel.obtain(); 3398 data.writeInterfaceToken(IActivityManager.descriptor); 3399 data.writeString(reason); 3400 mRemote.transact(CLOSE_SYSTEM_DIALOGS_TRANSACTION, data, reply, 0); 3401 reply.readException(); 3402 data.recycle(); 3403 reply.recycle(); 3404 } 3405 3406 public Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids) 3407 throws RemoteException { 3408 Parcel data = Parcel.obtain(); 3409 Parcel reply = Parcel.obtain(); 3410 data.writeInterfaceToken(IActivityManager.descriptor); 3411 data.writeIntArray(pids); 3412 mRemote.transact(GET_PROCESS_MEMORY_INFO_TRANSACTION, data, reply, 0); 3413 reply.readException(); 3414 Debug.MemoryInfo[] res = reply.createTypedArray(Debug.MemoryInfo.CREATOR); 3415 data.recycle(); 3416 reply.recycle(); 3417 return res; 3418 } 3419 3420 public void killApplicationProcess(String processName, int uid) throws RemoteException { 3421 Parcel data = Parcel.obtain(); 3422 Parcel reply = Parcel.obtain(); 3423 data.writeInterfaceToken(IActivityManager.descriptor); 3424 data.writeString(processName); 3425 data.writeInt(uid); 3426 mRemote.transact(KILL_APPLICATION_PROCESS_TRANSACTION, data, reply, 0); 3427 reply.readException(); 3428 data.recycle(); 3429 reply.recycle(); 3430 } 3431 3432 public void overridePendingTransition(IBinder token, String packageName, 3433 int enterAnim, int exitAnim) throws RemoteException { 3434 Parcel data = Parcel.obtain(); 3435 Parcel reply = Parcel.obtain(); 3436 data.writeInterfaceToken(IActivityManager.descriptor); 3437 data.writeStrongBinder(token); 3438 data.writeString(packageName); 3439 data.writeInt(enterAnim); 3440 data.writeInt(exitAnim); 3441 mRemote.transact(OVERRIDE_PENDING_TRANSITION_TRANSACTION, data, reply, 0); 3442 reply.readException(); 3443 data.recycle(); 3444 reply.recycle(); 3445 } 3446 3447 public boolean isUserAMonkey() throws RemoteException { 3448 Parcel data = Parcel.obtain(); 3449 Parcel reply = Parcel.obtain(); 3450 data.writeInterfaceToken(IActivityManager.descriptor); 3451 mRemote.transact(IS_USER_A_MONKEY_TRANSACTION, data, reply, 0); 3452 reply.readException(); 3453 boolean res = reply.readInt() != 0; 3454 data.recycle(); 3455 reply.recycle(); 3456 return res; 3457 } 3458 3459 public void finishHeavyWeightApp() throws RemoteException { 3460 Parcel data = Parcel.obtain(); 3461 Parcel reply = Parcel.obtain(); 3462 data.writeInterfaceToken(IActivityManager.descriptor); 3463 mRemote.transact(FINISH_HEAVY_WEIGHT_APP_TRANSACTION, data, reply, 0); 3464 reply.readException(); 3465 data.recycle(); 3466 reply.recycle(); 3467 } 3468 3469 public void setImmersive(IBinder token, boolean immersive) 3470 throws RemoteException { 3471 Parcel data = Parcel.obtain(); 3472 Parcel reply = Parcel.obtain(); 3473 data.writeInterfaceToken(IActivityManager.descriptor); 3474 data.writeStrongBinder(token); 3475 data.writeInt(immersive ? 1 : 0); 3476 mRemote.transact(SET_IMMERSIVE_TRANSACTION, data, reply, 0); 3477 reply.readException(); 3478 data.recycle(); 3479 reply.recycle(); 3480 } 3481 3482 public boolean isImmersive(IBinder token) 3483 throws RemoteException { 3484 Parcel data = Parcel.obtain(); 3485 Parcel reply = Parcel.obtain(); 3486 data.writeInterfaceToken(IActivityManager.descriptor); 3487 data.writeStrongBinder(token); 3488 mRemote.transact(IS_IMMERSIVE_TRANSACTION, data, reply, 0); 3489 reply.readException(); 3490 boolean res = reply.readInt() == 1; 3491 data.recycle(); 3492 reply.recycle(); 3493 return res; 3494 } 3495 3496 public boolean isTopActivityImmersive() 3497 throws RemoteException { 3498 Parcel data = Parcel.obtain(); 3499 Parcel reply = Parcel.obtain(); 3500 data.writeInterfaceToken(IActivityManager.descriptor); 3501 mRemote.transact(IS_TOP_ACTIVITY_IMMERSIVE_TRANSACTION, data, reply, 0); 3502 reply.readException(); 3503 boolean res = reply.readInt() == 1; 3504 data.recycle(); 3505 reply.recycle(); 3506 return res; 3507 } 3508 3509 public void crashApplication(int uid, int initialPid, String packageName, 3510 String message) throws RemoteException { 3511 Parcel data = Parcel.obtain(); 3512 Parcel reply = Parcel.obtain(); 3513 data.writeInterfaceToken(IActivityManager.descriptor); 3514 data.writeInt(uid); 3515 data.writeInt(initialPid); 3516 data.writeString(packageName); 3517 data.writeString(message); 3518 mRemote.transact(CRASH_APPLICATION_TRANSACTION, data, reply, 0); 3519 reply.readException(); 3520 data.recycle(); 3521 reply.recycle(); 3522 } 3523 3524 public String getProviderMimeType(Uri uri, int userId) throws RemoteException { 3525 Parcel data = Parcel.obtain(); 3526 Parcel reply = Parcel.obtain(); 3527 data.writeInterfaceToken(IActivityManager.descriptor); 3528 uri.writeToParcel(data, 0); 3529 data.writeInt(userId); 3530 mRemote.transact(GET_PROVIDER_MIME_TYPE_TRANSACTION, data, reply, 0); 3531 reply.readException(); 3532 String res = reply.readString(); 3533 data.recycle(); 3534 reply.recycle(); 3535 return res; 3536 } 3537 3538 public IBinder newUriPermissionOwner(String name) 3539 throws RemoteException { 3540 Parcel data = Parcel.obtain(); 3541 Parcel reply = Parcel.obtain(); 3542 data.writeInterfaceToken(IActivityManager.descriptor); 3543 data.writeString(name); 3544 mRemote.transact(NEW_URI_PERMISSION_OWNER_TRANSACTION, data, reply, 0); 3545 reply.readException(); 3546 IBinder res = reply.readStrongBinder(); 3547 data.recycle(); 3548 reply.recycle(); 3549 return res; 3550 } 3551 3552 public void grantUriPermissionFromOwner(IBinder owner, int fromUid, String targetPkg, 3553 Uri uri, int mode) throws RemoteException { 3554 Parcel data = Parcel.obtain(); 3555 Parcel reply = Parcel.obtain(); 3556 data.writeInterfaceToken(IActivityManager.descriptor); 3557 data.writeStrongBinder(owner); 3558 data.writeInt(fromUid); 3559 data.writeString(targetPkg); 3560 uri.writeToParcel(data, 0); 3561 data.writeInt(mode); 3562 mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 3563 reply.readException(); 3564 data.recycle(); 3565 reply.recycle(); 3566 } 3567 3568 public void revokeUriPermissionFromOwner(IBinder owner, Uri uri, 3569 int mode) throws RemoteException { 3570 Parcel data = Parcel.obtain(); 3571 Parcel reply = Parcel.obtain(); 3572 data.writeInterfaceToken(IActivityManager.descriptor); 3573 data.writeStrongBinder(owner); 3574 if (uri != null) { 3575 data.writeInt(1); 3576 uri.writeToParcel(data, 0); 3577 } else { 3578 data.writeInt(0); 3579 } 3580 data.writeInt(mode); 3581 mRemote.transact(REVOKE_URI_PERMISSION_TRANSACTION, data, reply, 0); 3582 reply.readException(); 3583 data.recycle(); 3584 reply.recycle(); 3585 } 3586 3587 public int checkGrantUriPermission(int callingUid, String targetPkg, 3588 Uri uri, int modeFlags) throws RemoteException { 3589 Parcel data = Parcel.obtain(); 3590 Parcel reply = Parcel.obtain(); 3591 data.writeInterfaceToken(IActivityManager.descriptor); 3592 data.writeInt(callingUid); 3593 data.writeString(targetPkg); 3594 uri.writeToParcel(data, 0); 3595 data.writeInt(modeFlags); 3596 mRemote.transact(CHECK_GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0); 3597 reply.readException(); 3598 int res = reply.readInt(); 3599 data.recycle(); 3600 reply.recycle(); 3601 return res; 3602 } 3603 3604 public boolean dumpHeap(String process, boolean managed, 3605 String path, ParcelFileDescriptor fd) throws RemoteException { 3606 Parcel data = Parcel.obtain(); 3607 Parcel reply = Parcel.obtain(); 3608 data.writeInterfaceToken(IActivityManager.descriptor); 3609 data.writeString(process); 3610 data.writeInt(managed ? 1 : 0); 3611 data.writeString(path); 3612 if (fd != null) { 3613 data.writeInt(1); 3614 fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 3615 } else { 3616 data.writeInt(0); 3617 } 3618 mRemote.transact(DUMP_HEAP_TRANSACTION, data, reply, 0); 3619 reply.readException(); 3620 boolean res = reply.readInt() != 0; 3621 reply.recycle(); 3622 data.recycle(); 3623 return res; 3624 } 3625 3626 public int startActivities(IApplicationThread caller, 3627 Intent[] intents, String[] resolvedTypes, IBinder resultTo, 3628 Bundle options) throws RemoteException { 3629 Parcel data = Parcel.obtain(); 3630 Parcel reply = Parcel.obtain(); 3631 data.writeInterfaceToken(IActivityManager.descriptor); 3632 data.writeStrongBinder(caller != null ? caller.asBinder() : null); 3633 data.writeTypedArray(intents, 0); 3634 data.writeStringArray(resolvedTypes); 3635 data.writeStrongBinder(resultTo); 3636 if (options != null) { 3637 data.writeInt(1); 3638 options.writeToParcel(data, 0); 3639 } else { 3640 data.writeInt(0); 3641 } 3642 mRemote.transact(START_ACTIVITIES_TRANSACTION, data, reply, 0); 3643 reply.readException(); 3644 int result = reply.readInt(); 3645 reply.recycle(); 3646 data.recycle(); 3647 return result; 3648 } 3649 3650 public int getFrontActivityScreenCompatMode() throws RemoteException { 3651 Parcel data = Parcel.obtain(); 3652 Parcel reply = Parcel.obtain(); 3653 data.writeInterfaceToken(IActivityManager.descriptor); 3654 mRemote.transact(GET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 3655 reply.readException(); 3656 int mode = reply.readInt(); 3657 reply.recycle(); 3658 data.recycle(); 3659 return mode; 3660 } 3661 3662 public void setFrontActivityScreenCompatMode(int mode) throws RemoteException { 3663 Parcel data = Parcel.obtain(); 3664 Parcel reply = Parcel.obtain(); 3665 data.writeInterfaceToken(IActivityManager.descriptor); 3666 data.writeInt(mode); 3667 mRemote.transact(SET_FRONT_ACTIVITY_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 3668 reply.readException(); 3669 reply.recycle(); 3670 data.recycle(); 3671 } 3672 3673 public int getPackageScreenCompatMode(String packageName) throws RemoteException { 3674 Parcel data = Parcel.obtain(); 3675 Parcel reply = Parcel.obtain(); 3676 data.writeInterfaceToken(IActivityManager.descriptor); 3677 data.writeString(packageName); 3678 mRemote.transact(GET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 3679 reply.readException(); 3680 int mode = reply.readInt(); 3681 reply.recycle(); 3682 data.recycle(); 3683 return mode; 3684 } 3685 3686 public void setPackageScreenCompatMode(String packageName, int mode) 3687 throws RemoteException { 3688 Parcel data = Parcel.obtain(); 3689 Parcel reply = Parcel.obtain(); 3690 data.writeInterfaceToken(IActivityManager.descriptor); 3691 data.writeString(packageName); 3692 data.writeInt(mode); 3693 mRemote.transact(SET_PACKAGE_SCREEN_COMPAT_MODE_TRANSACTION, data, reply, 0); 3694 reply.readException(); 3695 reply.recycle(); 3696 data.recycle(); 3697 } 3698 3699 public boolean getPackageAskScreenCompat(String packageName) throws RemoteException { 3700 Parcel data = Parcel.obtain(); 3701 Parcel reply = Parcel.obtain(); 3702 data.writeInterfaceToken(IActivityManager.descriptor); 3703 data.writeString(packageName); 3704 mRemote.transact(GET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0); 3705 reply.readException(); 3706 boolean ask = reply.readInt() != 0; 3707 reply.recycle(); 3708 data.recycle(); 3709 return ask; 3710 } 3711 3712 public void setPackageAskScreenCompat(String packageName, boolean ask) 3713 throws RemoteException { 3714 Parcel data = Parcel.obtain(); 3715 Parcel reply = Parcel.obtain(); 3716 data.writeInterfaceToken(IActivityManager.descriptor); 3717 data.writeString(packageName); 3718 data.writeInt(ask ? 1 : 0); 3719 mRemote.transact(SET_PACKAGE_ASK_SCREEN_COMPAT_TRANSACTION, data, reply, 0); 3720 reply.readException(); 3721 reply.recycle(); 3722 data.recycle(); 3723 } 3724 3725 public boolean switchUser(int userid) throws RemoteException { 3726 Parcel data = Parcel.obtain(); 3727 Parcel reply = Parcel.obtain(); 3728 data.writeInterfaceToken(IActivityManager.descriptor); 3729 data.writeInt(userid); 3730 mRemote.transact(SWITCH_USER_TRANSACTION, data, reply, 0); 3731 reply.readException(); 3732 boolean result = reply.readInt() != 0; 3733 reply.recycle(); 3734 data.recycle(); 3735 return result; 3736 } 3737 3738 public int stopUser(int userid, IStopUserCallback callback) throws RemoteException { 3739 Parcel data = Parcel.obtain(); 3740 Parcel reply = Parcel.obtain(); 3741 data.writeInterfaceToken(IActivityManager.descriptor); 3742 data.writeInt(userid); 3743 data.writeStrongInterface(callback); 3744 mRemote.transact(STOP_USER_TRANSACTION, data, reply, 0); 3745 reply.readException(); 3746 int result = reply.readInt(); 3747 reply.recycle(); 3748 data.recycle(); 3749 return result; 3750 } 3751 3752 public UserInfo getCurrentUser() throws RemoteException { 3753 Parcel data = Parcel.obtain(); 3754 Parcel reply = Parcel.obtain(); 3755 data.writeInterfaceToken(IActivityManager.descriptor); 3756 mRemote.transact(GET_CURRENT_USER_TRANSACTION, data, reply, 0); 3757 reply.readException(); 3758 UserInfo userInfo = UserInfo.CREATOR.createFromParcel(reply); 3759 reply.recycle(); 3760 data.recycle(); 3761 return userInfo; 3762 } 3763 3764 public boolean isUserRunning(int userid) throws RemoteException { 3765 Parcel data = Parcel.obtain(); 3766 Parcel reply = Parcel.obtain(); 3767 data.writeInterfaceToken(IActivityManager.descriptor); 3768 data.writeInt(userid); 3769 mRemote.transact(IS_USER_RUNNING_TRANSACTION, data, reply, 0); 3770 reply.readException(); 3771 boolean result = reply.readInt() != 0; 3772 reply.recycle(); 3773 data.recycle(); 3774 return result; 3775 } 3776 3777 public boolean removeSubTask(int taskId, int subTaskIndex) throws RemoteException { 3778 Parcel data = Parcel.obtain(); 3779 Parcel reply = Parcel.obtain(); 3780 data.writeInterfaceToken(IActivityManager.descriptor); 3781 data.writeInt(taskId); 3782 data.writeInt(subTaskIndex); 3783 mRemote.transact(REMOVE_SUB_TASK_TRANSACTION, data, reply, 0); 3784 reply.readException(); 3785 boolean result = reply.readInt() != 0; 3786 reply.recycle(); 3787 data.recycle(); 3788 return result; 3789 } 3790 3791 public boolean removeTask(int taskId, int flags) throws RemoteException { 3792 Parcel data = Parcel.obtain(); 3793 Parcel reply = Parcel.obtain(); 3794 data.writeInterfaceToken(IActivityManager.descriptor); 3795 data.writeInt(taskId); 3796 data.writeInt(flags); 3797 mRemote.transact(REMOVE_TASK_TRANSACTION, data, reply, 0); 3798 reply.readException(); 3799 boolean result = reply.readInt() != 0; 3800 reply.recycle(); 3801 data.recycle(); 3802 return result; 3803 } 3804 3805 public void registerProcessObserver(IProcessObserver observer) throws RemoteException { 3806 Parcel data = Parcel.obtain(); 3807 Parcel reply = Parcel.obtain(); 3808 data.writeInterfaceToken(IActivityManager.descriptor); 3809 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 3810 mRemote.transact(REGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0); 3811 reply.readException(); 3812 data.recycle(); 3813 reply.recycle(); 3814 } 3815 3816 public void unregisterProcessObserver(IProcessObserver observer) throws RemoteException { 3817 Parcel data = Parcel.obtain(); 3818 Parcel reply = Parcel.obtain(); 3819 data.writeInterfaceToken(IActivityManager.descriptor); 3820 data.writeStrongBinder(observer != null ? observer.asBinder() : null); 3821 mRemote.transact(UNREGISTER_PROCESS_OBSERVER_TRANSACTION, data, reply, 0); 3822 reply.readException(); 3823 data.recycle(); 3824 reply.recycle(); 3825 } 3826 3827 public boolean isIntentSenderTargetedToPackage(IIntentSender sender) throws RemoteException { 3828 Parcel data = Parcel.obtain(); 3829 Parcel reply = Parcel.obtain(); 3830 data.writeInterfaceToken(IActivityManager.descriptor); 3831 data.writeStrongBinder(sender.asBinder()); 3832 mRemote.transact(IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION, data, reply, 0); 3833 reply.readException(); 3834 boolean res = reply.readInt() != 0; 3835 data.recycle(); 3836 reply.recycle(); 3837 return res; 3838 } 3839 3840 public boolean isIntentSenderAnActivity(IIntentSender sender) throws RemoteException { 3841 Parcel data = Parcel.obtain(); 3842 Parcel reply = Parcel.obtain(); 3843 data.writeInterfaceToken(IActivityManager.descriptor); 3844 data.writeStrongBinder(sender.asBinder()); 3845 mRemote.transact(IS_INTENT_SENDER_AN_ACTIVITY_TRANSACTION, data, reply, 0); 3846 reply.readException(); 3847 boolean res = reply.readInt() != 0; 3848 data.recycle(); 3849 reply.recycle(); 3850 return res; 3851 } 3852 3853 public void updatePersistentConfiguration(Configuration values) throws RemoteException 3854 { 3855 Parcel data = Parcel.obtain(); 3856 Parcel reply = Parcel.obtain(); 3857 data.writeInterfaceToken(IActivityManager.descriptor); 3858 values.writeToParcel(data, 0); 3859 mRemote.transact(UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION, data, reply, 0); 3860 reply.readException(); 3861 data.recycle(); 3862 reply.recycle(); 3863 } 3864 3865 public long[] getProcessPss(int[] pids) throws RemoteException { 3866 Parcel data = Parcel.obtain(); 3867 Parcel reply = Parcel.obtain(); 3868 data.writeInterfaceToken(IActivityManager.descriptor); 3869 data.writeIntArray(pids); 3870 mRemote.transact(GET_PROCESS_PSS_TRANSACTION, data, reply, 0); 3871 reply.readException(); 3872 long[] res = reply.createLongArray(); 3873 data.recycle(); 3874 reply.recycle(); 3875 return res; 3876 } 3877 3878 public void showBootMessage(CharSequence msg, boolean always) throws RemoteException { 3879 Parcel data = Parcel.obtain(); 3880 Parcel reply = Parcel.obtain(); 3881 data.writeInterfaceToken(IActivityManager.descriptor); 3882 TextUtils.writeToParcel(msg, data, 0); 3883 data.writeInt(always ? 1 : 0); 3884 mRemote.transact(SHOW_BOOT_MESSAGE_TRANSACTION, data, reply, 0); 3885 reply.readException(); 3886 data.recycle(); 3887 reply.recycle(); 3888 } 3889 3890 public void dismissKeyguardOnNextActivity() throws RemoteException { 3891 Parcel data = Parcel.obtain(); 3892 Parcel reply = Parcel.obtain(); 3893 data.writeInterfaceToken(IActivityManager.descriptor); 3894 mRemote.transact(DISMISS_KEYGUARD_ON_NEXT_ACTIVITY_TRANSACTION, data, reply, 0); 3895 reply.readException(); 3896 data.recycle(); 3897 reply.recycle(); 3898 } 3899 3900 public boolean targetTaskAffinityMatchesActivity(IBinder token, String destAffinity) 3901 throws RemoteException { 3902 Parcel data = Parcel.obtain(); 3903 Parcel reply = Parcel.obtain(); 3904 data.writeInterfaceToken(IActivityManager.descriptor); 3905 data.writeStrongBinder(token); 3906 data.writeString(destAffinity); 3907 mRemote.transact(TARGET_TASK_AFFINITY_MATCHES_ACTIVITY_TRANSACTION, data, reply, 0); 3908 reply.readException(); 3909 boolean result = reply.readInt() != 0; 3910 data.recycle(); 3911 reply.recycle(); 3912 return result; 3913 } 3914 3915 public boolean navigateUpTo(IBinder token, Intent target, int resultCode, Intent resultData) 3916 throws RemoteException { 3917 Parcel data = Parcel.obtain(); 3918 Parcel reply = Parcel.obtain(); 3919 data.writeInterfaceToken(IActivityManager.descriptor); 3920 data.writeStrongBinder(token); 3921 target.writeToParcel(data, 0); 3922 data.writeInt(resultCode); 3923 if (resultData != null) { 3924 data.writeInt(1); 3925 resultData.writeToParcel(data, 0); 3926 } else { 3927 data.writeInt(0); 3928 } 3929 mRemote.transact(NAVIGATE_UP_TO_TRANSACTION, data, reply, 0); 3930 reply.readException(); 3931 boolean result = reply.readInt() != 0; 3932 data.recycle(); 3933 reply.recycle(); 3934 return result; 3935 } 3936 3937 public int getLaunchedFromUid(IBinder activityToken) throws RemoteException { 3938 Parcel data = Parcel.obtain(); 3939 Parcel reply = Parcel.obtain(); 3940 data.writeInterfaceToken(IActivityManager.descriptor); 3941 data.writeStrongBinder(activityToken); 3942 mRemote.transact(GET_LAUNCHED_FROM_UID_TRANSACTION, data, reply, 0); 3943 reply.readException(); 3944 int result = reply.readInt(); 3945 data.recycle(); 3946 reply.recycle(); 3947 return result; 3948 } 3949 3950 private IBinder mRemote; 3951} 3952