1 /* 2 * Copyright (C) 2022 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 17 package com.android.server.pm.pkg.component; 18 19 import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE; 20 import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE; 21 import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION; 22 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; 23 import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_UNSPECIFIED; 24 25 import static com.android.server.pm.parsing.pkg.PackageImpl.sForInternedString; 26 import static com.android.server.pm.parsing.pkg.PackageImpl.sForStringSet; 27 28 import android.annotation.NonNull; 29 import android.annotation.Nullable; 30 import android.app.ActivityTaskManager; 31 import android.content.ComponentName; 32 import android.content.pm.ActivityInfo; 33 import android.content.pm.PackageManager; 34 import android.os.Parcel; 35 import android.os.Parcelable; 36 import android.text.TextUtils; 37 import android.util.ArraySet; 38 39 import com.android.internal.annotations.VisibleForTesting; 40 import com.android.internal.util.DataClass; 41 import com.android.internal.util.Parcelling.BuiltIn.ForInternedString; 42 import com.android.server.pm.pkg.parsing.ParsingUtils; 43 44 import java.util.Collections; 45 import java.util.Locale; 46 import java.util.Set; 47 48 /** 49 * @hide 50 **/ 51 @DataClass(genGetters = true, genSetters = true, genBuilder = false, genParcelable = false) 52 @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) 53 public class ParsedActivityImpl extends ParsedMainComponentImpl implements ParsedActivity, 54 Parcelable { 55 56 private int theme; 57 private int uiOptions; 58 59 @Nullable 60 @DataClass.ParcelWith(ForInternedString.class) 61 private String targetActivity; 62 63 @Nullable 64 @DataClass.ParcelWith(ForInternedString.class) 65 private String parentActivityName; 66 @Nullable 67 private String taskAffinity; 68 private int privateFlags; 69 @Nullable 70 @DataClass.ParcelWith(ForInternedString.class) 71 private String permission; 72 @Nullable 73 private Set<String> mKnownActivityEmbeddingCerts; 74 75 private int launchMode; 76 private int documentLaunchMode; 77 private int maxRecents; 78 private int configChanges; 79 private int softInputMode; 80 private int persistableMode; 81 private int lockTaskLaunchMode; 82 83 private int screenOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; 84 private int resizeMode = ActivityInfo.RESIZE_MODE_RESIZEABLE; 85 86 private float maxAspectRatio = ParsingUtils.NOT_SET; 87 private float minAspectRatio = ParsingUtils.NOT_SET; 88 89 private boolean supportsSizeChanges; 90 91 @Nullable 92 private String requestedVrComponent; 93 private int rotationAnimation = -1; 94 private int colorMode; 95 96 @Nullable 97 private ActivityInfo.WindowLayout windowLayout; 98 99 @Nullable 100 private String mRequiredDisplayCategory; 101 ParsedActivityImpl(ParsedActivityImpl other)102 public ParsedActivityImpl(ParsedActivityImpl other) { 103 super(other); 104 this.theme = other.theme; 105 this.uiOptions = other.uiOptions; 106 this.targetActivity = other.targetActivity; 107 this.parentActivityName = other.parentActivityName; 108 this.taskAffinity = other.taskAffinity; 109 this.privateFlags = other.privateFlags; 110 this.permission = other.permission; 111 this.launchMode = other.launchMode; 112 this.documentLaunchMode = other.documentLaunchMode; 113 this.maxRecents = other.maxRecents; 114 this.configChanges = other.configChanges; 115 this.softInputMode = other.softInputMode; 116 this.persistableMode = other.persistableMode; 117 this.lockTaskLaunchMode = other.lockTaskLaunchMode; 118 this.screenOrientation = other.screenOrientation; 119 this.resizeMode = other.resizeMode; 120 this.maxAspectRatio = other.maxAspectRatio; 121 this.minAspectRatio = other.minAspectRatio; 122 this.supportsSizeChanges = other.supportsSizeChanges; 123 this.requestedVrComponent = other.requestedVrComponent; 124 this.rotationAnimation = other.rotationAnimation; 125 this.colorMode = other.colorMode; 126 this.windowLayout = other.windowLayout; 127 this.mKnownActivityEmbeddingCerts = other.mKnownActivityEmbeddingCerts; 128 this.mRequiredDisplayCategory = other.mRequiredDisplayCategory; 129 } 130 131 /** 132 * Generate activity object that forwards user to App Details page automatically. This activity 133 * should be invisible to user and user should not know or see it. 134 */ 135 @NonNull makeAppDetailsActivity(String packageName, String processName, int uiOptions, String taskAffinity, boolean hardwareAccelerated)136 static ParsedActivityImpl makeAppDetailsActivity(String packageName, String processName, 137 int uiOptions, String taskAffinity, boolean hardwareAccelerated) { 138 ParsedActivityImpl activity = new ParsedActivityImpl(); 139 activity.setPackageName(packageName); 140 activity.theme = android.R.style.Theme_NoDisplay; 141 activity.setExported(true); 142 activity.setName(PackageManager.APP_DETAILS_ACTIVITY_CLASS_NAME); 143 activity.setProcessName(processName); 144 activity.uiOptions = uiOptions; 145 activity.taskAffinity = taskAffinity; 146 activity.launchMode = ActivityInfo.LAUNCH_MULTIPLE; 147 activity.documentLaunchMode = ActivityInfo.DOCUMENT_LAUNCH_NONE; 148 activity.maxRecents = ActivityTaskManager.getDefaultAppRecentsLimitStatic(); 149 activity.configChanges = ParsedActivityUtils.getActivityConfigChanges(0, 0); 150 activity.softInputMode = 0; 151 activity.persistableMode = ActivityInfo.PERSIST_NEVER; 152 activity.screenOrientation = SCREEN_ORIENTATION_UNSPECIFIED; 153 activity.resizeMode = RESIZE_MODE_FORCE_RESIZEABLE; 154 activity.lockTaskLaunchMode = 0; 155 activity.setDirectBootAware(false); 156 activity.rotationAnimation = ROTATION_ANIMATION_UNSPECIFIED; 157 activity.colorMode = ActivityInfo.COLOR_MODE_DEFAULT; 158 if (hardwareAccelerated) { 159 activity.setFlags(activity.getFlags() | ActivityInfo.FLAG_HARDWARE_ACCELERATED); 160 } 161 return activity; 162 } 163 164 @NonNull makeAlias(String targetActivityName, ParsedActivity target)165 static ParsedActivityImpl makeAlias(String targetActivityName, ParsedActivity target) { 166 ParsedActivityImpl alias = new ParsedActivityImpl(); 167 alias.setPackageName(target.getPackageName()); 168 alias.setTargetActivity(targetActivityName); 169 alias.configChanges = target.getConfigChanges(); 170 alias.setFlags(target.getFlags()); 171 alias.privateFlags = target.getPrivateFlags(); 172 alias.setIcon(target.getIcon()); 173 alias.setLogo(target.getLogo()); 174 alias.setBanner(target.getBanner()); 175 alias.setLabelRes(target.getLabelRes()); 176 alias.setNonLocalizedLabel(target.getNonLocalizedLabel()); 177 alias.launchMode = target.getLaunchMode(); 178 alias.lockTaskLaunchMode = target.getLockTaskLaunchMode(); 179 alias.documentLaunchMode = target.getDocumentLaunchMode(); 180 alias.setDescriptionRes(target.getDescriptionRes()); 181 alias.screenOrientation = target.getScreenOrientation(); 182 alias.taskAffinity = target.getTaskAffinity(); 183 alias.theme = target.getTheme(); 184 alias.softInputMode = target.getSoftInputMode(); 185 alias.uiOptions = target.getUiOptions(); 186 alias.parentActivityName = target.getParentActivityName(); 187 alias.maxRecents = target.getMaxRecents(); 188 alias.windowLayout = target.getWindowLayout(); 189 alias.resizeMode = target.getResizeMode(); 190 alias.maxAspectRatio = target.getMaxAspectRatio(); 191 alias.minAspectRatio = target.getMinAspectRatio(); 192 alias.supportsSizeChanges = target.isSupportsSizeChanges(); 193 alias.requestedVrComponent = target.getRequestedVrComponent(); 194 alias.setDirectBootAware(target.isDirectBootAware()); 195 alias.setProcessName(target.getProcessName()); 196 alias.setRequiredDisplayCategory(target.getRequiredDisplayCategory()); 197 return alias; 198 199 // Not all attributes from the target ParsedActivity are copied to the alias. 200 // Careful when adding an attribute and determine whether or not it should be copied. 201 // alias.enabled = target.enabled; 202 // alias.exported = target.exported; 203 // alias.permission = target.permission; 204 // alias.splitName = target.splitName; 205 // alias.persistableMode = target.persistableMode; 206 // alias.rotationAnimation = target.rotationAnimation; 207 // alias.colorMode = target.colorMode; 208 // alias.intents.addAll(target.intents); 209 // alias.order = target.order; 210 // alias.metaData = target.metaData; 211 } 212 setMaxAspectRatio(int resizeMode, float maxAspectRatio)213 public ParsedActivityImpl setMaxAspectRatio(int resizeMode, float maxAspectRatio) { 214 if (resizeMode == ActivityInfo.RESIZE_MODE_RESIZEABLE 215 || resizeMode == ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION) { 216 // Resizeable activities can be put in any aspect ratio. 217 return this; 218 } 219 220 if (maxAspectRatio < 1.0f && maxAspectRatio != 0) { 221 // Ignore any value lesser than 1.0. 222 return this; 223 } 224 225 this.maxAspectRatio = maxAspectRatio; 226 return this; 227 } 228 setMinAspectRatio(int resizeMode, float minAspectRatio)229 public ParsedActivityImpl setMinAspectRatio(int resizeMode, float minAspectRatio) { 230 if (resizeMode == RESIZE_MODE_RESIZEABLE 231 || resizeMode == RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION) { 232 // Resizeable activities can be put in any aspect ratio. 233 return this; 234 } 235 236 if (minAspectRatio < 1.0f && minAspectRatio != 0) { 237 // Ignore any value lesser than 1.0. 238 return this; 239 } 240 241 this.minAspectRatio = minAspectRatio; 242 return this; 243 } 244 setTargetActivity(String targetActivity)245 public ParsedActivityImpl setTargetActivity(String targetActivity) { 246 this.targetActivity = TextUtils.safeIntern(targetActivity); 247 return this; 248 } 249 setPermission(String permission)250 public ParsedActivityImpl setPermission(String permission) { 251 // Empty string must be converted to null 252 this.permission = TextUtils.isEmpty(permission) ? null : permission.intern(); 253 return this; 254 } 255 256 @NonNull 257 @Override getKnownActivityEmbeddingCerts()258 public Set<String> getKnownActivityEmbeddingCerts() { 259 return mKnownActivityEmbeddingCerts == null ? Collections.emptySet() 260 : mKnownActivityEmbeddingCerts; 261 } 262 263 /** 264 * Sets the trusted host certificates of apps that are allowed to embed this activity. 265 */ setKnownActivityEmbeddingCerts(@onNull Set<String> knownActivityEmbeddingCerts)266 public void setKnownActivityEmbeddingCerts(@NonNull Set<String> knownActivityEmbeddingCerts) { 267 // Convert the provided digest to upper case for consistent Set membership 268 // checks when verifying the signing certificate digests of requesting apps. 269 this.mKnownActivityEmbeddingCerts = new ArraySet<>(); 270 for (String knownCert : knownActivityEmbeddingCerts) { 271 this.mKnownActivityEmbeddingCerts.add(knownCert.toUpperCase(Locale.US)); 272 } 273 } 274 toString()275 public String toString() { 276 StringBuilder sb = new StringBuilder(128); 277 sb.append("Activity{"); 278 sb.append(Integer.toHexString(System.identityHashCode(this))); 279 sb.append(' '); 280 ComponentName.appendShortString(sb, getPackageName(), getName()); 281 sb.append('}'); 282 return sb.toString(); 283 } 284 285 @Override describeContents()286 public int describeContents() { 287 return 0; 288 } 289 290 @Override writeToParcel(Parcel dest, int flags)291 public void writeToParcel(Parcel dest, int flags) { 292 super.writeToParcel(dest, flags); 293 dest.writeInt(this.theme); 294 dest.writeInt(this.uiOptions); 295 dest.writeString(this.targetActivity); 296 dest.writeString(this.parentActivityName); 297 dest.writeString(this.taskAffinity); 298 dest.writeInt(this.privateFlags); 299 sForInternedString.parcel(this.permission, dest, flags); 300 dest.writeInt(this.launchMode); 301 dest.writeInt(this.documentLaunchMode); 302 dest.writeInt(this.maxRecents); 303 dest.writeInt(this.configChanges); 304 dest.writeInt(this.softInputMode); 305 dest.writeInt(this.persistableMode); 306 dest.writeInt(this.lockTaskLaunchMode); 307 dest.writeInt(this.screenOrientation); 308 dest.writeInt(this.resizeMode); 309 dest.writeValue(this.maxAspectRatio); 310 dest.writeValue(this.minAspectRatio); 311 dest.writeBoolean(this.supportsSizeChanges); 312 dest.writeString(this.requestedVrComponent); 313 dest.writeInt(this.rotationAnimation); 314 dest.writeInt(this.colorMode); 315 dest.writeBundle(this.getMetaData()); 316 317 if (windowLayout != null) { 318 dest.writeInt(1); 319 windowLayout.writeToParcel(dest); 320 } else { 321 dest.writeBoolean(false); 322 } 323 sForStringSet.parcel(this.mKnownActivityEmbeddingCerts, dest, flags); 324 dest.writeString8(this.mRequiredDisplayCategory); 325 } 326 ParsedActivityImpl()327 public ParsedActivityImpl() { 328 } 329 ParsedActivityImpl(Parcel in)330 protected ParsedActivityImpl(Parcel in) { 331 super(in); 332 this.theme = in.readInt(); 333 this.uiOptions = in.readInt(); 334 this.targetActivity = in.readString(); 335 this.parentActivityName = in.readString(); 336 this.taskAffinity = in.readString(); 337 this.privateFlags = in.readInt(); 338 this.permission = sForInternedString.unparcel(in); 339 this.launchMode = in.readInt(); 340 this.documentLaunchMode = in.readInt(); 341 this.maxRecents = in.readInt(); 342 this.configChanges = in.readInt(); 343 this.softInputMode = in.readInt(); 344 this.persistableMode = in.readInt(); 345 this.lockTaskLaunchMode = in.readInt(); 346 this.screenOrientation = in.readInt(); 347 this.resizeMode = in.readInt(); 348 this.maxAspectRatio = (Float) in.readValue(Float.class.getClassLoader()); 349 this.minAspectRatio = (Float) in.readValue(Float.class.getClassLoader()); 350 this.supportsSizeChanges = in.readBoolean(); 351 this.requestedVrComponent = in.readString(); 352 this.rotationAnimation = in.readInt(); 353 this.colorMode = in.readInt(); 354 this.setMetaData(in.readBundle()); 355 if (in.readBoolean()) { 356 windowLayout = new ActivityInfo.WindowLayout(in); 357 } 358 this.mKnownActivityEmbeddingCerts = sForStringSet.unparcel(in); 359 this.mRequiredDisplayCategory = in.readString8(); 360 } 361 362 @NonNull 363 public static final Parcelable.Creator<ParsedActivityImpl> CREATOR = 364 new Parcelable.Creator<ParsedActivityImpl>() { 365 @Override 366 public ParsedActivityImpl createFromParcel(Parcel source) { 367 return new ParsedActivityImpl(source); 368 } 369 370 @Override 371 public ParsedActivityImpl[] newArray(int size) { 372 return new ParsedActivityImpl[size]; 373 } 374 }; 375 376 377 378 // Code below generated by codegen v1.0.23. 379 // 380 // DO NOT MODIFY! 381 // CHECKSTYLE:OFF Generated code 382 // 383 // To regenerate run: 384 // $ codegen $ANDROID_BUILD_TOP/frameworks/base/services/core/java/com/android/server/pm/pkg/component/ParsedActivityImpl.java 385 // 386 // To exclude the generated code from IntelliJ auto-formatting enable (one-time): 387 // Settings > Editor > Code Style > Formatter Control 388 //@formatter:off 389 390 391 @DataClass.Generated.Member ParsedActivityImpl( int theme, int uiOptions, @Nullable String targetActivity, @Nullable String parentActivityName, @Nullable String taskAffinity, int privateFlags, @Nullable String permission, @Nullable Set<String> knownActivityEmbeddingCerts, int launchMode, int documentLaunchMode, int maxRecents, int configChanges, int softInputMode, int persistableMode, int lockTaskLaunchMode, int screenOrientation, int resizeMode, float maxAspectRatio, float minAspectRatio, boolean supportsSizeChanges, @Nullable String requestedVrComponent, int rotationAnimation, int colorMode, @Nullable ActivityInfo.WindowLayout windowLayout, @Nullable String requiredDisplayCategory)392 public ParsedActivityImpl( 393 int theme, 394 int uiOptions, 395 @Nullable String targetActivity, 396 @Nullable String parentActivityName, 397 @Nullable String taskAffinity, 398 int privateFlags, 399 @Nullable String permission, 400 @Nullable Set<String> knownActivityEmbeddingCerts, 401 int launchMode, 402 int documentLaunchMode, 403 int maxRecents, 404 int configChanges, 405 int softInputMode, 406 int persistableMode, 407 int lockTaskLaunchMode, 408 int screenOrientation, 409 int resizeMode, 410 float maxAspectRatio, 411 float minAspectRatio, 412 boolean supportsSizeChanges, 413 @Nullable String requestedVrComponent, 414 int rotationAnimation, 415 int colorMode, 416 @Nullable ActivityInfo.WindowLayout windowLayout, 417 @Nullable String requiredDisplayCategory) { 418 this.theme = theme; 419 this.uiOptions = uiOptions; 420 this.targetActivity = targetActivity; 421 this.parentActivityName = parentActivityName; 422 this.taskAffinity = taskAffinity; 423 this.privateFlags = privateFlags; 424 this.permission = permission; 425 this.mKnownActivityEmbeddingCerts = knownActivityEmbeddingCerts; 426 this.launchMode = launchMode; 427 this.documentLaunchMode = documentLaunchMode; 428 this.maxRecents = maxRecents; 429 this.configChanges = configChanges; 430 this.softInputMode = softInputMode; 431 this.persistableMode = persistableMode; 432 this.lockTaskLaunchMode = lockTaskLaunchMode; 433 this.screenOrientation = screenOrientation; 434 this.resizeMode = resizeMode; 435 this.maxAspectRatio = maxAspectRatio; 436 this.minAspectRatio = minAspectRatio; 437 this.supportsSizeChanges = supportsSizeChanges; 438 this.requestedVrComponent = requestedVrComponent; 439 this.rotationAnimation = rotationAnimation; 440 this.colorMode = colorMode; 441 this.windowLayout = windowLayout; 442 this.mRequiredDisplayCategory = requiredDisplayCategory; 443 444 // onConstructed(); // You can define this method to get a callback 445 } 446 447 @DataClass.Generated.Member getTheme()448 public int getTheme() { 449 return theme; 450 } 451 452 @DataClass.Generated.Member getUiOptions()453 public int getUiOptions() { 454 return uiOptions; 455 } 456 457 @DataClass.Generated.Member getTargetActivity()458 public @Nullable String getTargetActivity() { 459 return targetActivity; 460 } 461 462 @DataClass.Generated.Member getParentActivityName()463 public @Nullable String getParentActivityName() { 464 return parentActivityName; 465 } 466 467 @DataClass.Generated.Member getTaskAffinity()468 public @Nullable String getTaskAffinity() { 469 return taskAffinity; 470 } 471 472 @DataClass.Generated.Member getPrivateFlags()473 public int getPrivateFlags() { 474 return privateFlags; 475 } 476 477 @DataClass.Generated.Member getPermission()478 public @Nullable String getPermission() { 479 return permission; 480 } 481 482 @DataClass.Generated.Member getLaunchMode()483 public int getLaunchMode() { 484 return launchMode; 485 } 486 487 @DataClass.Generated.Member getDocumentLaunchMode()488 public int getDocumentLaunchMode() { 489 return documentLaunchMode; 490 } 491 492 @DataClass.Generated.Member getMaxRecents()493 public int getMaxRecents() { 494 return maxRecents; 495 } 496 497 @DataClass.Generated.Member getConfigChanges()498 public int getConfigChanges() { 499 return configChanges; 500 } 501 502 @DataClass.Generated.Member getSoftInputMode()503 public int getSoftInputMode() { 504 return softInputMode; 505 } 506 507 @DataClass.Generated.Member getPersistableMode()508 public int getPersistableMode() { 509 return persistableMode; 510 } 511 512 @DataClass.Generated.Member getLockTaskLaunchMode()513 public int getLockTaskLaunchMode() { 514 return lockTaskLaunchMode; 515 } 516 517 @DataClass.Generated.Member getScreenOrientation()518 public int getScreenOrientation() { 519 return screenOrientation; 520 } 521 522 @DataClass.Generated.Member getResizeMode()523 public int getResizeMode() { 524 return resizeMode; 525 } 526 527 @DataClass.Generated.Member getMaxAspectRatio()528 public float getMaxAspectRatio() { 529 return maxAspectRatio; 530 } 531 532 @DataClass.Generated.Member getMinAspectRatio()533 public float getMinAspectRatio() { 534 return minAspectRatio; 535 } 536 537 @DataClass.Generated.Member isSupportsSizeChanges()538 public boolean isSupportsSizeChanges() { 539 return supportsSizeChanges; 540 } 541 542 @DataClass.Generated.Member getRequestedVrComponent()543 public @Nullable String getRequestedVrComponent() { 544 return requestedVrComponent; 545 } 546 547 @DataClass.Generated.Member getRotationAnimation()548 public int getRotationAnimation() { 549 return rotationAnimation; 550 } 551 552 @DataClass.Generated.Member getColorMode()553 public int getColorMode() { 554 return colorMode; 555 } 556 557 @DataClass.Generated.Member getWindowLayout()558 public @Nullable ActivityInfo.WindowLayout getWindowLayout() { 559 return windowLayout; 560 } 561 562 @DataClass.Generated.Member getRequiredDisplayCategory()563 public @Nullable String getRequiredDisplayCategory() { 564 return mRequiredDisplayCategory; 565 } 566 567 @DataClass.Generated.Member setTheme( int value)568 public @NonNull ParsedActivityImpl setTheme( int value) { 569 theme = value; 570 return this; 571 } 572 573 @DataClass.Generated.Member setUiOptions( int value)574 public @NonNull ParsedActivityImpl setUiOptions( int value) { 575 uiOptions = value; 576 return this; 577 } 578 579 @DataClass.Generated.Member setParentActivityName(@onNull String value)580 public @NonNull ParsedActivityImpl setParentActivityName(@NonNull String value) { 581 parentActivityName = value; 582 return this; 583 } 584 585 @DataClass.Generated.Member setTaskAffinity(@onNull String value)586 public @NonNull ParsedActivityImpl setTaskAffinity(@NonNull String value) { 587 taskAffinity = value; 588 return this; 589 } 590 591 @DataClass.Generated.Member setPrivateFlags( int value)592 public @NonNull ParsedActivityImpl setPrivateFlags( int value) { 593 privateFlags = value; 594 return this; 595 } 596 597 @DataClass.Generated.Member setLaunchMode( int value)598 public @NonNull ParsedActivityImpl setLaunchMode( int value) { 599 launchMode = value; 600 return this; 601 } 602 603 @DataClass.Generated.Member setDocumentLaunchMode( int value)604 public @NonNull ParsedActivityImpl setDocumentLaunchMode( int value) { 605 documentLaunchMode = value; 606 return this; 607 } 608 609 @DataClass.Generated.Member setMaxRecents( int value)610 public @NonNull ParsedActivityImpl setMaxRecents( int value) { 611 maxRecents = value; 612 return this; 613 } 614 615 @DataClass.Generated.Member setConfigChanges( int value)616 public @NonNull ParsedActivityImpl setConfigChanges( int value) { 617 configChanges = value; 618 return this; 619 } 620 621 @DataClass.Generated.Member setSoftInputMode( int value)622 public @NonNull ParsedActivityImpl setSoftInputMode( int value) { 623 softInputMode = value; 624 return this; 625 } 626 627 @DataClass.Generated.Member setPersistableMode( int value)628 public @NonNull ParsedActivityImpl setPersistableMode( int value) { 629 persistableMode = value; 630 return this; 631 } 632 633 @DataClass.Generated.Member setLockTaskLaunchMode( int value)634 public @NonNull ParsedActivityImpl setLockTaskLaunchMode( int value) { 635 lockTaskLaunchMode = value; 636 return this; 637 } 638 639 @DataClass.Generated.Member setScreenOrientation( int value)640 public @NonNull ParsedActivityImpl setScreenOrientation( int value) { 641 screenOrientation = value; 642 return this; 643 } 644 645 @DataClass.Generated.Member setResizeMode( int value)646 public @NonNull ParsedActivityImpl setResizeMode( int value) { 647 resizeMode = value; 648 return this; 649 } 650 651 @DataClass.Generated.Member setMaxAspectRatio( float value)652 public @NonNull ParsedActivityImpl setMaxAspectRatio( float value) { 653 maxAspectRatio = value; 654 return this; 655 } 656 657 @DataClass.Generated.Member setMinAspectRatio( float value)658 public @NonNull ParsedActivityImpl setMinAspectRatio( float value) { 659 minAspectRatio = value; 660 return this; 661 } 662 663 @DataClass.Generated.Member setSupportsSizeChanges( boolean value)664 public @NonNull ParsedActivityImpl setSupportsSizeChanges( boolean value) { 665 supportsSizeChanges = value; 666 return this; 667 } 668 669 @DataClass.Generated.Member setRequestedVrComponent(@onNull String value)670 public @NonNull ParsedActivityImpl setRequestedVrComponent(@NonNull String value) { 671 requestedVrComponent = value; 672 return this; 673 } 674 675 @DataClass.Generated.Member setRotationAnimation( int value)676 public @NonNull ParsedActivityImpl setRotationAnimation( int value) { 677 rotationAnimation = value; 678 return this; 679 } 680 681 @DataClass.Generated.Member setColorMode( int value)682 public @NonNull ParsedActivityImpl setColorMode( int value) { 683 colorMode = value; 684 return this; 685 } 686 687 @DataClass.Generated.Member setWindowLayout(@onNull ActivityInfo.WindowLayout value)688 public @NonNull ParsedActivityImpl setWindowLayout(@NonNull ActivityInfo.WindowLayout value) { 689 windowLayout = value; 690 return this; 691 } 692 693 @DataClass.Generated.Member setRequiredDisplayCategory(@onNull String value)694 public @NonNull ParsedActivityImpl setRequiredDisplayCategory(@NonNull String value) { 695 mRequiredDisplayCategory = value; 696 return this; 697 } 698 699 @DataClass.Generated( 700 time = 1669437519576L, 701 codegenVersion = "1.0.23", 702 sourceFile = "frameworks/base/services/core/java/com/android/server/pm/pkg/component/ParsedActivityImpl.java", 703 inputSignatures = "private int theme\nprivate int uiOptions\nprivate @android.annotation.Nullable @com.android.internal.util.DataClass.ParcelWith(com.android.internal.util.Parcelling.BuiltIn.ForInternedString.class) java.lang.String targetActivity\nprivate @android.annotation.Nullable @com.android.internal.util.DataClass.ParcelWith(com.android.internal.util.Parcelling.BuiltIn.ForInternedString.class) java.lang.String parentActivityName\nprivate @android.annotation.Nullable java.lang.String taskAffinity\nprivate int privateFlags\nprivate @android.annotation.Nullable @com.android.internal.util.DataClass.ParcelWith(com.android.internal.util.Parcelling.BuiltIn.ForInternedString.class) java.lang.String permission\nprivate @android.annotation.Nullable java.util.Set<java.lang.String> mKnownActivityEmbeddingCerts\nprivate int launchMode\nprivate int documentLaunchMode\nprivate int maxRecents\nprivate int configChanges\nprivate int softInputMode\nprivate int persistableMode\nprivate int lockTaskLaunchMode\nprivate int screenOrientation\nprivate int resizeMode\nprivate float maxAspectRatio\nprivate float minAspectRatio\nprivate boolean supportsSizeChanges\nprivate @android.annotation.Nullable java.lang.String requestedVrComponent\nprivate int rotationAnimation\nprivate int colorMode\nprivate @android.annotation.Nullable android.content.pm.ActivityInfo.WindowLayout windowLayout\nprivate @android.annotation.Nullable java.lang.String mRequiredDisplayCategory\npublic static final @android.annotation.NonNull android.os.Parcelable.Creator<com.android.server.pm.pkg.component.ParsedActivityImpl> CREATOR\nstatic @android.annotation.NonNull com.android.server.pm.pkg.component.ParsedActivityImpl makeAppDetailsActivity(java.lang.String,java.lang.String,int,java.lang.String,boolean)\nstatic @android.annotation.NonNull com.android.server.pm.pkg.component.ParsedActivityImpl makeAlias(java.lang.String,com.android.server.pm.pkg.component.ParsedActivity)\npublic com.android.server.pm.pkg.component.ParsedActivityImpl setMaxAspectRatio(int,float)\npublic com.android.server.pm.pkg.component.ParsedActivityImpl setMinAspectRatio(int,float)\npublic com.android.server.pm.pkg.component.ParsedActivityImpl setTargetActivity(java.lang.String)\npublic com.android.server.pm.pkg.component.ParsedActivityImpl setPermission(java.lang.String)\npublic @android.annotation.NonNull @java.lang.Override java.util.Set<java.lang.String> getKnownActivityEmbeddingCerts()\npublic void setKnownActivityEmbeddingCerts(java.util.Set<java.lang.String>)\npublic java.lang.String toString()\npublic @java.lang.Override int describeContents()\npublic @java.lang.Override void writeToParcel(android.os.Parcel,int)\nclass ParsedActivityImpl extends com.android.server.pm.pkg.component.ParsedMainComponentImpl implements [com.android.server.pm.pkg.component.ParsedActivity, android.os.Parcelable]\n@com.android.internal.util.DataClass(genGetters=true, genSetters=true, genBuilder=false, genParcelable=false)") 704 @Deprecated __metadata()705 private void __metadata() {} 706 707 708 //@formatter:on 709 // End of generated code 710 711 } 712