diff --git a/core/java/android/content/pm/parsing/AndroidPackage.java b/core/java/android/content/pm/parsing/AndroidPackage.java
index 35df47431a913..0562dffc551ec 100644
--- a/core/java/android/content/pm/parsing/AndroidPackage.java
+++ b/core/java/android/content/pm/parsing/AndroidPackage.java
@@ -403,6 +403,8 @@ public interface AndroidPackage extends Parcelable {
boolean isEnabled();
+ boolean isCrossProfile();
+
boolean isEncryptionAware();
boolean isExternal();
diff --git a/core/java/android/content/pm/parsing/ApkParseUtils.java b/core/java/android/content/pm/parsing/ApkParseUtils.java
index 773231682fe4b..3f22967298913 100644
--- a/core/java/android/content/pm/parsing/ApkParseUtils.java
+++ b/core/java/android/content/pm/parsing/ApkParseUtils.java
@@ -2070,6 +2070,9 @@ public class ApkParseUtils {
sa.getBoolean(R.styleable.AndroidManifestApplication_enabled,
true));
+ parsingPackage.setCrossProfile(
+ sa.getBoolean(R.styleable.AndroidManifestApplication_crossProfile, false));
+
parsingPackage.setIsGame(sa.getBoolean(
R.styleable.AndroidManifestApplication_isGame, false));
diff --git a/core/java/android/content/pm/parsing/PackageImpl.java b/core/java/android/content/pm/parsing/PackageImpl.java
index 0e736d522c106..18dee23dc6909 100644
--- a/core/java/android/content/pm/parsing/PackageImpl.java
+++ b/core/java/android/content/pm/parsing/PackageImpl.java
@@ -240,6 +240,7 @@ public final class PackageImpl implements ParsingPackage, ParsedPackage, Android
private int descriptionRes;
private String deviceProtectedDataDir;
private boolean enabled;
+ private boolean crossProfile;
private int flags;
private int fullBackupContent;
private boolean hiddenUntilInstalled;
@@ -1635,6 +1636,12 @@ public final class PackageImpl implements ParsingPackage, ParsedPackage, Android
return this;
}
+ @Override
+ public PackageImpl setCrossProfile(boolean crossProfile) {
+ this.crossProfile = crossProfile;
+ return this;
+ }
+
@Override
public PackageImpl setUiOptions(int uiOptions) {
this.uiOptions = uiOptions;
@@ -2834,6 +2841,11 @@ public final class PackageImpl implements ParsingPackage, ParsedPackage, Android
return enabled;
}
+ @Override
+ public boolean isCrossProfile() {
+ return crossProfile;
+ }
+
@Override
public String getManageSpaceActivityName() {
return manageSpaceActivityName;
@@ -3042,6 +3054,7 @@ public final class PackageImpl implements ParsingPackage, ParsedPackage, Android
dest.writeInt(this.descriptionRes);
dest.writeString(this.deviceProtectedDataDir);
dest.writeBoolean(this.enabled);
+ dest.writeBoolean(this.crossProfile);
dest.writeInt(this.flags);
dest.writeInt(this.fullBackupContent);
dest.writeBoolean(this.hiddenUntilInstalled);
@@ -3194,6 +3207,7 @@ public final class PackageImpl implements ParsingPackage, ParsedPackage, Android
this.descriptionRes = in.readInt();
this.deviceProtectedDataDir = in.readString();
this.enabled = in.readBoolean();
+ this.crossProfile = in.readBoolean();
this.flags = in.readInt();
this.fullBackupContent = in.readInt();
this.hiddenUntilInstalled = in.readBoolean();
diff --git a/core/java/android/content/pm/parsing/ParsingPackage.java b/core/java/android/content/pm/parsing/ParsingPackage.java
index aff1b2e05eaf6..47dac5584c894 100644
--- a/core/java/android/content/pm/parsing/ParsingPackage.java
+++ b/core/java/android/content/pm/parsing/ParsingPackage.java
@@ -229,6 +229,8 @@ public interface ParsingPackage extends AndroidPackage {
ParsingPackage setEnabled(boolean enabled);
+ ParsingPackage setCrossProfile(boolean crossProfile);
+
ParsingPackage setFullBackupContent(int fullBackupContent);
ParsingPackage setHasDomainUrls(boolean hasDomainUrls);
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 6350bf6e5352f..85f7d617352e0 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -1756,6 +1756,12 @@
The default value is {@code false}. -->
+
+
+