Loading res/xml/roles.xml +5 −1 Original line number Diff line number Diff line Loading @@ -265,7 +265,11 @@ ~ @see com.android.settings.applications.defaultapps.DefaultEmergencyPicker ~ @see com.android.phone.EmergencyAssistanceHelper --> <role name="android.app.role.EMERGENCY" exclusive="true" label="@string/role_label_emergency"> <role name="android.app.role.EMERGENCY" exclusive="true" label="@string/role_label_emergency" systemOnly="true"> <required-components> <activity> <intent-filter> Loading src/com/android/packageinstaller/role/model/Role.java +25 −11 Original line number Diff line number Diff line Loading @@ -94,6 +94,11 @@ public class Role { */ private final boolean mShowNone; /** * Whether this role only accepts system apps as its holders. */ private final boolean mSystemOnly; /** * The required components for an application to qualify for this role. */ Loading @@ -119,7 +124,7 @@ public class Role { private final List<PreferredActivity> mPreferredActivities; public Role(@NonNull String name, @Nullable RoleBehavior behavior, boolean exclusive, @StringRes int labelResource, boolean showNone, @StringRes int labelResource, boolean showNone, boolean systemOnly, @NonNull List<RequiredComponent> requiredComponents, @NonNull List<String> permissions, @NonNull List<AppOp> appOps, @NonNull List<PreferredActivity> preferredActivities) { mName = name; Loading @@ -127,6 +132,7 @@ public class Role { mExclusive = exclusive; mLabelResource = labelResource; mShowNone = showNone; mSystemOnly = systemOnly; mRequiredComponents = requiredComponents; mPermissions = permissions; mAppOps = appOps; Loading Loading @@ -390,6 +396,10 @@ public class Role { return false; } if (mSystemOnly && (applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { return false; } // TODO: STOPSHIP: Check for disabled packages? // TODO: STOPSHIP: Add and check PackageManager.getSharedLibraryInfo(). Loading Loading @@ -553,6 +563,8 @@ public class Role { + ", mBehavior=" + mBehavior + ", mExclusive=" + mExclusive + ", mLabelResource=" + mLabelResource + ", mShowNone=" + mShowNone + ", mSystemOnly=" + mSystemOnly + ", mRequiredComponents=" + mRequiredComponents + ", mPermissions=" + mPermissions + ", mAppOps=" + mAppOps Loading @@ -568,20 +580,22 @@ public class Role { if (object == null || getClass() != object.getClass()) { return false; } Role role = (Role) object; return mExclusive == role.mExclusive && mLabelResource == role.mLabelResource && Objects.equals(mName, role.mName) && Objects.equals(mBehavior, role.mBehavior) && Objects.equals(mRequiredComponents, role.mRequiredComponents) && Objects.equals(mPermissions, role.mPermissions) && Objects.equals(mAppOps, role.mAppOps) && Objects.equals(mPreferredActivities, role.mPreferredActivities); Role that = (Role) object; return mExclusive == that.mExclusive && mLabelResource == that.mLabelResource && mShowNone == that.mShowNone && mSystemOnly == that.mSystemOnly && mName.equals(that.mName) && Objects.equals(mBehavior, that.mBehavior) && mRequiredComponents.equals(that.mRequiredComponents) && mPermissions.equals(that.mPermissions) && mAppOps.equals(that.mAppOps) && mPreferredActivities.equals(that.mPreferredActivities); } @Override public int hashCode() { return Objects.hash(mName, mBehavior, mExclusive, mLabelResource, return Objects.hash(mName, mBehavior, mExclusive, mLabelResource, mShowNone, mSystemOnly, mRequiredComponents, mPermissions, mAppOps, mPreferredActivities); } } src/com/android/packageinstaller/role/model/Roles.java +5 −2 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ public class Roles { private static final String ATTRIBUTE_EXCLUSIVE = "exclusive"; private static final String ATTRIBUTE_LABEL = "label"; private static final String ATTRIBUTE_SHOW_NONE = "showNone"; private static final String ATTRIBUTE_SYSTEM_ONLY = "systemOnly"; private static final String ATTRIBUTE_PERMISSION = "permission"; private static final String ATTRIBUTE_SCHEME = "scheme"; private static final String ATTRIBUTE_MIME_TYPE = "mimeType"; Loading Loading @@ -324,6 +325,8 @@ public class Roles { return null; } boolean systemOnly = getAttributeBooleanValue(parser, ATTRIBUTE_SYSTEM_ONLY, false); List<RequiredComponent> requiredComponents = null; List<String> permissions = null; List<AppOp> appOps = null; Loading Loading @@ -390,8 +393,8 @@ public class Roles { if (preferredActivities == null) { preferredActivities = Collections.emptyList(); } return new Role(name, behavior, exclusive, labelResource, showNone, requiredComponents, permissions, appOps, preferredActivities); return new Role(name, behavior, exclusive, labelResource, showNone, systemOnly, requiredComponents, permissions, appOps, preferredActivities); } @NonNull Loading Loading
res/xml/roles.xml +5 −1 Original line number Diff line number Diff line Loading @@ -265,7 +265,11 @@ ~ @see com.android.settings.applications.defaultapps.DefaultEmergencyPicker ~ @see com.android.phone.EmergencyAssistanceHelper --> <role name="android.app.role.EMERGENCY" exclusive="true" label="@string/role_label_emergency"> <role name="android.app.role.EMERGENCY" exclusive="true" label="@string/role_label_emergency" systemOnly="true"> <required-components> <activity> <intent-filter> Loading
src/com/android/packageinstaller/role/model/Role.java +25 −11 Original line number Diff line number Diff line Loading @@ -94,6 +94,11 @@ public class Role { */ private final boolean mShowNone; /** * Whether this role only accepts system apps as its holders. */ private final boolean mSystemOnly; /** * The required components for an application to qualify for this role. */ Loading @@ -119,7 +124,7 @@ public class Role { private final List<PreferredActivity> mPreferredActivities; public Role(@NonNull String name, @Nullable RoleBehavior behavior, boolean exclusive, @StringRes int labelResource, boolean showNone, @StringRes int labelResource, boolean showNone, boolean systemOnly, @NonNull List<RequiredComponent> requiredComponents, @NonNull List<String> permissions, @NonNull List<AppOp> appOps, @NonNull List<PreferredActivity> preferredActivities) { mName = name; Loading @@ -127,6 +132,7 @@ public class Role { mExclusive = exclusive; mLabelResource = labelResource; mShowNone = showNone; mSystemOnly = systemOnly; mRequiredComponents = requiredComponents; mPermissions = permissions; mAppOps = appOps; Loading Loading @@ -390,6 +396,10 @@ public class Role { return false; } if (mSystemOnly && (applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { return false; } // TODO: STOPSHIP: Check for disabled packages? // TODO: STOPSHIP: Add and check PackageManager.getSharedLibraryInfo(). Loading Loading @@ -553,6 +563,8 @@ public class Role { + ", mBehavior=" + mBehavior + ", mExclusive=" + mExclusive + ", mLabelResource=" + mLabelResource + ", mShowNone=" + mShowNone + ", mSystemOnly=" + mSystemOnly + ", mRequiredComponents=" + mRequiredComponents + ", mPermissions=" + mPermissions + ", mAppOps=" + mAppOps Loading @@ -568,20 +580,22 @@ public class Role { if (object == null || getClass() != object.getClass()) { return false; } Role role = (Role) object; return mExclusive == role.mExclusive && mLabelResource == role.mLabelResource && Objects.equals(mName, role.mName) && Objects.equals(mBehavior, role.mBehavior) && Objects.equals(mRequiredComponents, role.mRequiredComponents) && Objects.equals(mPermissions, role.mPermissions) && Objects.equals(mAppOps, role.mAppOps) && Objects.equals(mPreferredActivities, role.mPreferredActivities); Role that = (Role) object; return mExclusive == that.mExclusive && mLabelResource == that.mLabelResource && mShowNone == that.mShowNone && mSystemOnly == that.mSystemOnly && mName.equals(that.mName) && Objects.equals(mBehavior, that.mBehavior) && mRequiredComponents.equals(that.mRequiredComponents) && mPermissions.equals(that.mPermissions) && mAppOps.equals(that.mAppOps) && mPreferredActivities.equals(that.mPreferredActivities); } @Override public int hashCode() { return Objects.hash(mName, mBehavior, mExclusive, mLabelResource, return Objects.hash(mName, mBehavior, mExclusive, mLabelResource, mShowNone, mSystemOnly, mRequiredComponents, mPermissions, mAppOps, mPreferredActivities); } }
src/com/android/packageinstaller/role/model/Roles.java +5 −2 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ public class Roles { private static final String ATTRIBUTE_EXCLUSIVE = "exclusive"; private static final String ATTRIBUTE_LABEL = "label"; private static final String ATTRIBUTE_SHOW_NONE = "showNone"; private static final String ATTRIBUTE_SYSTEM_ONLY = "systemOnly"; private static final String ATTRIBUTE_PERMISSION = "permission"; private static final String ATTRIBUTE_SCHEME = "scheme"; private static final String ATTRIBUTE_MIME_TYPE = "mimeType"; Loading Loading @@ -324,6 +325,8 @@ public class Roles { return null; } boolean systemOnly = getAttributeBooleanValue(parser, ATTRIBUTE_SYSTEM_ONLY, false); List<RequiredComponent> requiredComponents = null; List<String> permissions = null; List<AppOp> appOps = null; Loading Loading @@ -390,8 +393,8 @@ public class Roles { if (preferredActivities == null) { preferredActivities = Collections.emptyList(); } return new Role(name, behavior, exclusive, labelResource, showNone, requiredComponents, permissions, appOps, preferredActivities); return new Role(name, behavior, exclusive, labelResource, showNone, systemOnly, requiredComponents, permissions, appOps, preferredActivities); } @NonNull Loading